Podstawy informatyki 2013/2014

Slides:



Advertisements
Podobne prezentacje
Reprezentacja danych w komputerze
Advertisements

Liczby w Komputerze Zajęcia 3.
Systemy liczbowe w architekturze komputerów materiał do wykładu 1/3
SYSTEMY LICZBOWE.
Zapis informacji Dr Anna Kwiatkowska.
Polsko – Japońska Wyższa Szkoła Technik Komputerowych
Temat 3: Co to znaczy, że komputer ma pamięć? Czy można ją zmierzyć?
Reprezentacje - zmiennoprzecinkowa
Systemy liczbowe.
Podstawy informatyki 2013/2014
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
opracowanie: Agata Idczak
UKŁADY LICZENIA SYSTEMY LICZBOWE
Podstawy informatyki (4)
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki 2012/2013
Dane INFORMACYJNE Nazwa szkoły:
Architektura systemów komputerowych (zima 2013)
Jednostki w informatyce i system binarny (dwójkowy)
od systemu dziesiętnego do szesnastkowego
Informatyka I Wykład 4 Stałe Stałe liczbowe Stałe znakowe Stałe tekstowe Jerzy Kotowski Politechnika Wroclawska var = 5L - 0xA; -5.
Niedziesiątkowe systemy liczenia.
Systemy Liczenia - I Przez system liczbowy rozumiemy sposób zapisywania i nazywania liczb. Rozróżniamy: pozycyjne systemy liczbowe i addytywne systemy.
Jednostki używane w informatyce
Architektura systemów komputerowych (jesień 2013)
Podstawy informatyki 2013/2014
Liczby całkowite dodatnie BCN
Systemy Liczbowe (technika cyfrowa)
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Posługiwanie się systemami liczenia
Programowanie obiektowe 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014
Programowanie obiektowe 2013/2014
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Matematyka i system dwójkowy
schemat tworzenia kodu liczby dwójkowej z dziesiętnej
Reprezentacja liczb w systemie binarnym ułamki i liczby ujemne
Podstawy arytmetyki komputerowej Paweł Perekietka
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Programowanie Niskopoziomowe
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Dwójkowy system liczbowy
T. 3. Arytmetyka komputera. Sygnał cyfrowy, analogowy
Danuta Stanek KODOWANIE LICZB Systemy liczenia III.
Podstawy Techniki Cyfrowej
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Ciekawostki objętość Ziemi – 1,1*1012 km3 masa Księżyca – 7,35*1022kg
1 informatyka +. 2 TYTUŁ: DZIELENIE WIELOMIANÓW - schemat Hornera - AUTORZY: Paweł Królikowski Agnieszka Brzostek.
Zasady arytmetyki dwójkowej
Typy liczbowe, zmienne, operatory Zajęcia 4. Zmienne Zmienna – to w programowaniu element programu, który może mieć przypisaną pewną wartość (wartość.
METODY REPREZENTOWANIA IFORMACJI
Od cyfr egipskich do cyfr arabskich...
INFORMATYKA Zajęcia organizacyjne Arytmetyka komputerowa
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
System dwójkowy (binarny)
Jan Koźmiński i Łukasz Miałkas IIIA Gimnazjum w Borui Kościelnej.
Liczbami naturalnymi nazywamy liczby 0,1,2,3,..., 127,... Liczby naturalne poznaliśmy już wcześniej; służą one do liczenia przedmiotów. Zbiór liczb.
Copyright 2009 © by Michał Szymański. Systemy liczbowe można porównać do języków świata. Tak jak jedno słowo można przedstawić w wielu różnych językach,
Niedziesiątkowe systemy liczenia
Podstawy Informatyki.
Technika Mikroprocesorowa 1
Wstęp do Informatyki - Wykład 6
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka

Jednostki informacji Bit (ang. bit) (Shannon, 1948) Najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych stanów przyjął układ Bajt (ang. byte) (Shannon, 1948) Najmniejsza adresowalna jednostka informacji pamięci komputerowej, składająca się z bitów Zazwyczaj przyjmuje się, że 1B = 8b (oktet) Najbardziej znaczący bit (bajt) = bit (bajt) o największej wadze (w zapisie z lewej strony) Najmniej znaczący bit (bajt) = bit (bajt) o najmniejszej wadze (w zapisie z prawej strony)

Jednostki informacji 1kb = 1 024b 1Mb = 1 024kb = 1 048 576b 1Gb = 1 024Mb = 1 048 576kb = 1 073 741 824b

Sposoby zapisu danych w pamięci Jak zapisać wielobajtowe dane pod danym adresem? W jakiej kolejności przesyłać kolejne bajty? Big-endian Najbardziej znaczący bajt jest umieszczany jako pierwszy Little-endian Najmniej znaczący bajt jest umieszczany jako pierwszy

Reprezentacja liczb w komputerze Reprezentacja liczb całkowitych Reprezentacja liczb nieujemnych Kod znak-moduł Kod U1 Kod U2 Kod z nadmiarem Liczby stałoprzecinkowe Liczby zmiennoprzecinkowe

Systemy reprezentacji liczb Systemy addytywne Posiadają osobne symbole dla pierwszych kilku małych liczb oraz kolejne symbole dla ich wielokrotności. W systemach tych liczby tworzy się przez sumowanie wartości kolejnych symboli. jedynkowy (ludy pierwotne, np. Pigmeje) egipski (dziesiątkowy) rzymski (Etruskowie, Rzym) Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma różną w zależności od pozycji, którą zajmuje w zapisie danej liczby. dwójkowy ósemkowy dziesiętny szesnastkowy Źródło: www.wikipedia.org

Systemy reprezentacji liczb Systemy addytywne Posiadają osobne symbole dla pierwszych kilku małych liczb oraz kolejne symbole dla ich wielokrotności. W systemach tych liczby tworzy się przez sumowanie wartości kolejnych symboli. jedynkowy (ludy pierwotne, np. Pigmeje) egipski (dziesiątkowy) rzymski (Etruskowie, Rzym) Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma różną w zależności od pozycji, którą zajmuje w zapisie danej liczby. dwójkowy ósemkowy dziesiętny szesnastkowy

System egipski (system addytywny) 4622 Źródło: www.wikipedia.org

System rzymski (system addytywny) II 2 IV 4 XIX 19 XCVI 96 CDLXXI 461 MCMXCII 1992

System Majów (system pozycyjny)

Liczbowe systemy pozycyjne Cechy dowolnego systemu pozycyjnego o podstawie p System pozycyjny charakteryzuje liczba zwaną podstawą systemu pozycyjnego Do zapisu liczby służą cyfry bądź litery (w przypadku podstawy > 10) Cyfr jest zawsze tyle, ile wynosi podstawa systemu: 0,1,2,...,(p-1) Cyfry ustawiamy na kolejnych pozycjach Pozycje numerujemy od 0 poczynając od strony prawej zapisu Każda pozycja posiada swoją wagę Waga jest równa podstawie systemu podniesionej do potęgi o wartości numeru pozycji Cyfry bądź litery określają ile razy waga danej pozycji uczestniczy w wartości liczby Wartość liczby obliczamy sumując iloczyny cyfr przez wagi ich pozycji

Liczbowe systemy pozycyjne System dwójkowy p=2, cyfry: 0,1 1010(2)=1*23+0*22+1*21+0*20=10(10) System ósemkowy p=8, cyfry: 0-7 1234(8)=1*83+2*82+3*81+4*80=668(10) System dziesiętny p=10, cyfry: 0-9 1234(10)=1*103+2*102+3*101+4*100=1234(10) System szesnastkowy p=16, cyfry: 0-9, A-F 12AF(16)=1*163+2*162+10*161+15*160=4783(10)

Liczbowe systemy pozycyjne – schemat Hornera Wartość liczby reprezentowanej przez ciąg znaków (zapisanej w systemie pozycyjnym) Cn-1 Cn-2…C1C0 obliczamy ze wzoru Inne rozwiązanie - zastosowanie schematu Hornera Rozpatrzmy wielomian współczynniki ai wielomianu odpowiadają cyfrom Ci, kolejne potęgi x to potęgi podstawy p Budowa schematu Cn-1Cn-2...C2C1C0 = Cn-1 pn-1 + Cn-2 pn-2 + ... + C2 p2 + C1 p1 + C0 p0 W(x) = an-1 xn-1 + an-2 xn-2 + ... + a2 x2 + a1 x + a0

Schemat Hornera Dla pięciocyfrowej liczby w systemie pozycyjnym Zalety Oszczędność przy mnożeniu Sposób przetwarzania cyfr Brane są kolejno jedna cyfra po drugiej z ciągu wejściowego aż do napotkania końca zapisu (taka kolejność cyfr jest zwykle zgodna z kolejnością ich przechowywania w łańcuchu tekstowym) long int sh(char *s, unsigned int p) { int result=0; int i; i=0; while(s[i]){ result = result*p + (s[i]-'0'); i++; } return result; Dla pięciocyfrowej liczby w systemie pozycyjnym Wzór 10 mnożeń, 4 dodawania Schemat Hornera 4 mnożenia, 4 dodawania

Przeliczanie liczb pomiędzy systemami (2)->(16) 1010110001010110 1010 1100 0101 0110 AC56 (2)->(8) 101110111011 101 110 111 011 5673

Przeliczanie liczb pomiędzy systemami (10)->(2) 246(10)=11110110(2) (10)->(16) 246(10)=F6(16) (10)->(8) 246(10)=366(8) 246/16=15 Reszta 6 15/16=0 Reszta F 246/2=123 Reszta 0 123/2=61 Reszta 1 61/2=30 30/2=15 15/2=7 7/2=3 3/2=1 1/2=0 246/8=30 Reszta 6 30/8=3 3/8=0 Reszta 3

System 10 System 16 System 8 System 2 11 111111 12 C 14 1100 +29 +1D Przykłady dodawania System 10 System 16 System 8 System 2 11 111111 12 C 14 1100 +29 +1D +35 +11101 41 29 51 101001

Przykłady dodawania System 2 System 10 10000 1000 1001 1 10 20 101 5 100 4 110 6 010 2 +011 +3 10100 10100(2)=1*24+1*22=16+4=20(10)

Nadmiar (integer overflow) Założenie: reprezentacja 4-bitowa bez znaku. Bit nadmiaru jest ustawiony na 1. Nadmiar występuje wtedy, gdy wynik działania nie mieści się w dopuszczalnym zakresie liczb, które mogą być zapisane w danej reprezentacji. 11111 1001 9 1011 11 10100 4

int main() { unsigned short int a; cout<<sizeof(a)<<endl; a=65535; cout<<a<<endl; a++; return 0; } 2 65535

Liczba całkowita ze znakiem (kodowana na 8 bitach) Kodowanie znak-moduł Liczba całkowita ze znakiem (kodowana na 8 bitach) Znak (najbardziej znaczący bit): 1 oznacza liczbę ujemną 0 oznacza liczbę dodatnią Moduł liczby (7 bitów) 1 + 55

Liczba ujemna jest kodowana jako znak 1 Kodowanie znak-moduł Liczba ujemna jest kodowana jako znak 1 i kod binarny modułu tej liczby Sposób wygodny dla człowieka Przy operacjach arytmetycznych trzeba porównywać znaki Reprezentacja liczby 0: 00000000 oraz 10000000 Zakres liczb: [-2n-1+1, 2n-1-1] 1 - 55

Kod uzupełnień do 1 (U1) Liczba ujemna x jest kodowana na jeden z dwóch (równoważnych) sposobów (dla liczby -55): Kod binarny modułu 00110111 negacja bitowa 11001000 Kod binarny liczby 28-1-55=256-56=200 Sposób mało wygodny dla człowieka Łatwe operacje arytmetyczne Reprezentacja liczby 0: 00000000 oraz 11111111 Zakres liczb: [-2n-1+1, 2n-1-1]

Zasady dodawania (U1) Liczby zapisane w kodzie U1 dodajemy zgodnie z zasadami dodawania dwójkowego, ale jeżeli wystąpi przeniesienie poza bit znaku, to do wyniku dodajemy 1. 1111111 10110010 -77 00101011 43 11011101 -34 11111 01001101 77 00101011 43 01111000 120 111111111 01001101 77 11010100 -43 00100001 00000001 00100010 34 111111111 10110010 -77 11010100 -43 10000110 00000001 10000111 -120

Kod uzupełnień do 2 (U2) Liczba ujemna x jest kodowana na jeden z dwóch (równoważnych) sposobów (dla liczby -55): Kod binarny modułu 00110111 negacja bitowa i dodajemy 1 11001000 + 1 = 11001001 Kod binarny liczby 28-55=256-55=201 11001001 Sposób mało wygodny dla człowieka Łatwe operacje arytmetyczne Reprezentacja liczby 0: 00000000 Zakres liczb: [-2n-1, 2n-1-1]

Zasady dodawania (U2) Liczby zapisane w kodzie U2 dodajemy zgodnie z zasadami dodawania dwójkowego. 1111111 10110011 -77 00101011 43 11011110 -34 111111111 01001101 77 11010101 -43 00100010 34 111111111 10110011 -77 11010101 -43 10001000 -120

Kod z nadmiarem (bias) Wartość liczby to wartość binarna pomniejszona o pewną stałą zwaną nadmiarem (bias) W zależności od nadmiaru możemy otrzymywać różne zakresy kodowanych liczb. Zakres liczb: [-bias, 2n-1-bias]

int main() { int a; cout<<"Podaj liczbe\n\n"; cin>>a; for (int i=31; i>=0; i--) cout<<((a>>i)&1); cout<<endl; return 0; } 5 -5 00000000 00000000 00000000 00000101 11111111 11111111 11111111 11111011

Liczby stałoprzecinkowe Zapis liczby stałoprzecinkowej w systemie pozycyjnym: Część całkowita – n cyfr Część ułamkowa – m cyfr

55.8125(10)=?(2) Część całkowitą sukcesywnie dzielimy przez 2 i bierzemy reszty 55.8125(10)=110111.1101(2) Część ułamkową sukcesywnie mnożymy przez 2 i bierzemy część całkowitą 55/2=27 1 27/2=13 13/2=6 6/2=3 3/2=1 1/2=0 0.8125*2=1.625 1 0.625*2=1.25 0.25*2=0.5 0.5*2=1

0.1(10)=?(2) Nie każdy ułamek skończony w systemie 10 jest skończony w systemie 2! 0.1(10)=0.0(0011)(2) 0.1*2=0.2 0.2*2=0.4 0.4*2=0.8 0.8*2=1.6 1 0.6*2=1.2 …

#include <iostream> using namespace std; int main() { float x=0 #include <iostream> using namespace std; int main() { float x=0.1; if(10*x==1) cout << "Tak\n"; else cout << "Nie\n"; return 0; } #include <iostream> using namespace std; int main() { double x=0.1; if(10*x==1) cout << "Tak\n"; else cout << "Nie\n"; return 0; }

Zakres binarnych liczb stałoprzecinkowych. Błędy zaokrągleń n – liczba bitów części całkowitej m – liczba bitów części ułamkowej Największa liczba: Błędy zaokrągleń Niech Ld – wartość dokładna liczby (w systemie dziesiętnym) Lb – wartość w zapisie binarnym Błąd bezwzględny Błąd względny

Błędy zaokrągleń Reprezentacja liczby 0.1 za pomocą pięciu bitów ułamkowych:

Liczby zmiennoprzecinkowe s – znak liczby m – mantysa p – podstawa systemu c – cecha

Liczby zmiennoprzecinkowe Położenie przecinka w liczbach zmiennoprzecinkowych nie jest ustalone. Znormalizowana liczba zmiennoprzecinkowa to taka liczba, której mantysa spełnia zależność: W systemie dwójkowym mantysa jest zawsze równa 1!

Precyzja liczb zmiennoprzecinkowych Założenia: mantysa 3 bity, bez znaku, liczba stałoprzecinkowa, przecinek po pierwszym bicie cecha 3 bity bez znaku x.xx·2xxx 0.00 0.01 0.10 0.11 1.00 1.01 1.10 1.11 000 0.25 0.5 0.75 1 1.25 1.5 1.75 001 2 2.5 3 3.5 010 4 5 6 7 011 8 10 12 14 100 16 20 24 28 101 32 40 48 56 110 64 80 96 112 111 128 160 192 224

Precyzja liczb zmiennoprzecinkowych Próba zakodowania liczby 9 Mamy do dyspozycji format: x.xx·2xxx A zatem mantysa 1.001 zostanie obcięta do 1.00 i w ten sposób dostaniemy liczbę

Standard IEEE 754 W celu ujednolicenia reprezentacji binarnej oraz operacji numerycznych na różnych platformach sprzętowych, wprowadzono standard zapisu zmiennoprzecinkowego IEEE 754 (William Kahan). Standard ten definiuje: formaty reprezentacji liczb zmiennoprzecinkowych: single-precision (32 bity) double-precision (64bity) single-extended precision (> 43 bitów) double-extended precision (> 79 bitów, zazwyczaj 80 bitów) wartości specjalne (np. nieskończoność, NaN) zmiennoprzecinkowe operacje modele zaokrąglania wyjątki

Ogólny format w standardzie IEEE 754 Sign (bit znaku): 0 – liczba dodatnia, 1 – liczba ujemna Exponent (cecha): kod z nadmiarem (bias=2e-1-1) Fraction (mantysa): liczba stałoprzecinkowa pozbawiona najbardziej znaczącego bitu reprezentującego część całkowitą (prawdziwa mantysa to 1.Fraction) Wartości specjalne Typ cecha mantysa zero Liczby nieznormalizowane ≠0 Liczby znormalizowane 1 – 2e-1 Dowolna Nieskończoności 2e-1 NaN

Liczba pojedynczej precyzji - float Znak – 1 bit Cecha – 8 bitów, bias=127 Mantysa – 23 bity W sumie 32 bity 1 1 jest zawsze

Liczba podwójnej precyzji - double Znak – 1 bit Cecha – 11 bitów, bias=1023 Mantysa – 52 bity W sumie 64 bity 1 1 jest zawsze

Analiza bitów liczby o pojedynczej precyzji string b2s(bity &B){ string S; if(B.S) S="1 "; else S="0 "; for (int i=7; i>=0; i--) S+=(B.E>>i&1)+'0'; S+=' '; for (int i=22; i>=0; i--) S+=(B.M>>i&1)+'0'; return S;} int main(){ union{ float f; bity b; }; cout<<"Podaj liczbe rzeczywista\n"; cin>>f; cout<<endl<<b2s(b)<<endl<<endl; cout<<b<<endl<<endl; return 0;} #include <iostream> #include <string> #include <cmath> using namespace std; struct bity { int M:23,E:8,S:1; }; ostream &operator<<(ostream &strum, bity &B) if(B.S) strum<<'-'; else strum<<'+'; double m=1,e=0; for (int i=22; i>=0; i--) m+=(B.M>>i&1)*pow(2.0,i-23); for (int i=7; i>=0; i--) e+=(B.E>>i&1)*pow(2.0,i); strum<<m<<"*2("<<e-127<<")="; strum<<pow(-1.0,B.S)*m*pow(2.0,e-127); return strum; }

Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie: http://creativecommons.org/licenses/by-sa/3.0/deed.pl