Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 5 Liczby w komputerze
Jednostki informacji Bit (ang. bit) (Shannon, 948) Najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych stanów przyjął układ. Jednostka informacji (b). Bajt (ang. byte) (Shannon, 948) Najmniejsza adresowalna jednostka informacji pamięci komputerowej, składająca się z bitów. Zazwyczaj przyjmuje się, że B = 8b (oktet), ale nie jest to reguła! 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).
Systemy pozycyjne W pozycyjnych systemach liczbowych ten sam symbol (cyfra) ma różną wartość w zależności od pozycji, którą zajmuje w zapisie danej liczby. x = 4 3 2 = 4 i= p podstawa systemu pozycyjnego. c c c c c c i p Do zapisu liczby służą cyfry c i (których jest p) ustawiane na kolejnych pozycjach.pozycje numerujemy od zaczynając od strony prawej zapisu. Każda pozycja posiada swoją wagę równą p i. Wartość liczby obliczamy sumując iloczyny cyfr przez wagi ich pozycji. i
Systemy pozycyjne zapis liczby ułamkowej x = c n c2cc c c 2... c m =.... n i= m c i p i Część ułamkowa liczby m pozycji. Część całkowita liczby n pozycji. Wartość liczby obliczamy sumując iloczyny cyfr przez wagi ich pozycji.
System dwójkowy (binarny) Gottfried Leibnitz, XVIIw. Cyfry:,. Przykład:. (2) = *2 5 + *2 4 + *2 3 + *2 2 + *2 + *2. + *2 - + *2-2 + *2-3 + *2-4 System ten jest wygodny maszyny. Reprezentacja cyfry binarnej zajmuje dokładnie jeden bit. n-cyfrowa liczba binarna bez znaku zajmuje n bitów w pamięci komputera.
Konwersja kodu dziesiętnego na dwójkowy Część całkowitą liczby dzielimy sukcesywnie przez 2 i bierzemy reszty 55.825 Część ułamkową liczby mnożymy sukcesywnie przez 2 i bierzemy część całkowitą 55 825 27 625 3 25 6 5 3 55 () = (2).825 () =. (2) 55.825 () =. (2)
System szesnastkowy Cyfry:,, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. System łaczy zalety systemu binarnego (dobre wykorzystanie pamięci) oraz dziesiątkowego (zwięzłość). Reprezentacja cyfry szesnastkowej zajmuje 4 bity: Cyfra () (2) Cyfra () 2 3 4 5 6 7 2 3 4 5 6 7 Przykład: 37.D = 3*6 + 7*6 + D*6-8 9 A B C D E F 8 9 2 3 4 5 (2)
Reprezentacja liczb całkowitych Założenie: liczba całkowita ze znakiem jest zapisywana w słowach n-bitowych. (Dla przykładu weźmy n = 8). znak (najbardziej znaczący bit) moduł liczby (7 bitów). Liczba nieujemna jest kodowana jako: znak i kod binarny modułu tej liczby. np. liczba 55 w przykładzie powyżej.
Liczba ujemna jest kodowana jako: znak i kod binarny modułu tej liczby. Liczba -55 bo (2) =55 () = -55 + Sposób wygodny dla człowieka. Przy operacjach arytmetycznych trzeba porównać znaki. Podwójna reprezentacja liczby : oraz (redundancja). Zakres liczb: [-2 n- +, 2 n- - ] (2 n - liczb).
Kod uzupełnień do (U) Liczba ujemna x (analogicznie przeciwna) jest kodowana na jeden z dwóch (równoważnych) sposobów: negujemy (bitowo) kod binarny modułu x albo bierzemy kod binarny liczby 2 n - +x. Sposób : liczba -55 ) Kod binarny modułu (=55): 2) Negacja bitowa: Sposób 2: liczba -55 ) Kod binarny liczby 2 8 - -55 =256-56 =2: Sposób mało wygodny dla człowieka. + Łatwe operacje arytmetyczne. Dwie reprezentacje liczby : oraz. Zakres liczb: [-2 n- +, 2 n- - ] (2 n - liczb).
Zasady dodawania Liczby zapisane w kodzie U dodajemy zgodnie z zasadami dodawania dwójkowego, ale 2 jeżeli wystąpi przeniesienie poza bit znaku, to do wyniku należy dodać. Z przeniesieniem (77) + (-43) + (34) (-77) + (-43) + (-2)
Kod uzupełnień do 2 (U2) Liczba ujemna x (analogicznie przeciwna) jest kodowana na jeden z dwóch (równoważnych) sposobów: negujemy (bitowo) kod binarny modułu x i dodajemy ; bierzemy kod binarny liczby 2 n +x. Sposób : liczba -55 ) Kod binarny modułu (=55): 2) Negacja bitowa: 3) Dodanie : Sposób mało wygodny dla człowieka. + Łatwe operacje arytmetyczne. Jedna reprezentacja liczby : Zakres liczb: [-2 n-, 2 n- -] (2 n liczb). Sposób 2: liczba -55 ) Kod binarny liczby 2 8-55 =256-55 =2:
Dodawanie w kodzie U2 Dodawanie w kodzie U2 odbywa się zgodnie z zasadami dodawania dwójkowego (-77) + (43) (-34) (77) + (-43) (34) (-77) + (-43) (-2)
Liczby ułamkowe stałoprzecinkowe Liczba stałopozycyjna (n +m)-bitowa posiada n bitów przeznaczonych na część całkowitą oraz m bitów przeznaczonych na kodowanie części ułamkowej. c n... c3c2cc. c c 2... c m = Założenie: liczba bez znaku. Wartość największa: 2 n - + 2 -m = 2 n 2 -m Wartość najmniejsza: + 2 -m = 2 -m n i= m c i p i
Liczby zmiennoprzecinkowe (floating( floating-point numbers) Liczba zmiennoprzecinkowa x =(-) s m p c s znak liczby, m mantysa, p podstawa systemu, c cecha. m e = 9.9 x -3 kg G = 6.67 x - m 3 kg - s -2 N A = 6.22 x 23 mol -
Normalizacja liczby zmiennoprzecinkowej Położenie przecinka w liczbie zmiennoprzecinkowej nie jest ustalone. 273.6 = 2.736 x 2 =.2736 x 3 = 2736 x -2 Znormalizowana liczba zmiennoprzecinkowa to taka liczba, której mantysa spełnia zależność: W systemie dziesiętnym: czyli m=.... 9.999999 m <p m W systemie dwójkowym znormalizowana liczba zmiennoprzecinkowa ma zawsze część całkowitą równą ±.
Zatem, do zakodowania liczby zmiennoprzecinkowej potrzeba zakodować (przyjmujemy, ze podstawa będzie równa 2): znak, mantysę, cechę.
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 8 bitów), wartosci specjalne (np. nieskończoność, NaN), zmiennoprzecinkowe operacje, modele zaokrąglania, wyjątki.
Ogólny format w standardzie IEEE 754 sign(bit znaku): liczba dodatnia, liczba ujemna, exponent (cecha): kod z nadmiarem (BIAS = 2 e- - ), fraction (mantysa): liczba stałoprzecinkowa, kod U, pozbawiona najbardziej znaczącego bitu reprezentującego część całkowitą bit ten nie jest przechowywany. e liczba bitów cechy Typ zera liczby nieznormalizowane liczby znormalizowane nieskończoności NaN (nieokreślone) Cecha od do 2 e- 2 e - 2 e - Mantysa dowolna
Liczby pojedynczej precyzji 3 23 bit znaku: liczba dodatnia, liczba ujemna, cecha: (BIAS =27), zakres: -26 27, mantysa: m =.fraction Znormalizowane liczby o najmniejszym module: ±2-26 ±.7549435-38 Liczby o największym module: ±(( - (/2) 24 )2 28 ) ± 3.428235 38
Liczby podwójnej precyzji 63 52 bit znaku: liczba dodatnia, liczba ujemna, cecha: (BIAS =23), zakres: -22 23, mantysa: m =.fraction Znormalizowane liczby o najmniejszym module: ±2-22 ±2.225738585722-38 Liczby o największym module: ±(( - (/2) 53 )2 24 ) ±.79769334862357 38