Systemy liczenia i reprezentacja liczb
Transkrypt
Systemy liczenia i reprezentacja liczb
1 Systemy liczenia • dwójkowy (binarny), ósemkowy, dziesiętny, szesnastkowy. system dwójkowy cyfry 01 przykład 101 ósemkowy 01234567 270 dziesiętny 01234 56789 01234567 89ABCDEF 309 szesnastkowy 10A dziesiętnie 1 ∗ 22 + 1 ∗ 20 = 1∗4+1=5 2 ∗ 82 + 7 ∗ 81 = 2 ∗ 64 + 7 ∗ 8 = 184 3 ∗ 102 + 9 ∗ 100 = 3 ∗ 100 + 9 = 309 1 ∗ 162 + 10 ∗ 160 = 1 ∗ 256 + 10 = 266 2 Komputer „myśli” dwójkowo – organizacja pamięci • 1 bit – miejsce na zapamiętanie znaku 0 bądź 1 • 1 bajt = 8 bitów – pozwala zapamiętać 28 różnych wartości, a więc np. liczby 0-255 • 1 kB (kilobajt) = 210 B = 1024 B • 1 MB (megabajt) = 220 B = 1048576 B • 1 GB (gigabajt) = 230 B = 1073741824 B • 1 słowo to ilość informacji przetwarzanej przez procesor w jednym cyklu (procesor 32 bitowy = procesor o słowie 32 bitowym) • bity i bajty bardziej i mniej znaczące 3 Binarna reprezentacja danych • operacje bitowe – przesunięcia: 00000001 << 3 = 00001000 = 8 00001101 >> 2 = 00000011 = 3 00001101 << 5 = 10100000 = 160 – operacje logiczne: koniunkcja &, alternatywa |, dysjunkcja ^, dopełnienie ~ 01010101 & 11001100 = 01000100 01010101 | 11001100 = 11011101 00001101 ^ 11001100 = 11000001 ~ 01010101 = 10101010 ~ 11001100 = 00110011 • typowa liczba całkowita zajmuje jedno słowo 4 Reprezentacja liczb • Reprezentacja stałopozycyjna – w praktyce tylko dla liczb całkowitych • Reprezentacja zmiennopozycyjna (zmiennoprzecinkowa) – mantysa i cecha, liczba = mantysa ∗ 2cecha 18.5 = 0.185 ∗ 102 = 0.100101 ∗ 2101 – rozdzielczość i skończoność komputerowych liczb rzeczywistych – typy 4-bajtowe (3 bajty mantysy i 1 bajt cechy), 6-bajtowe, 8-bajtowe (podwójnej precyzji) – należy być ostrożnym przy dodawaniu małej liczby zmiennoprzecinkowej do dużej (mała może zniknąć) – wartości, które nie są poprawnymi liczbami (NAN - not a number) – standard IEEE 754 – dobry opis pod http://research.microsoft.com/~hollasch/cgindex/coding/ieeefloat.html 5 Standard IEEE 754 Reprezentacja bitowa precyzja pojedyncza podwójna znak 1 [31] 1 [63] wykładnik 8 [30-23] 11 [62-52] część ułamkowa 23 [22-00] 52 [51-00] przesunięcie 127 1023 • reprezentacja binarna – podstawa równa 2 • znak – 0 - liczba dodatnia, 1 - liczba ujemna • wykładnik i przesunięcie – rzeczywista cecha = wykładnik - przesunięcie • mantysa – postać znormalizowana liczby – w mantysie przecinek po pierwszej niezerowej cyfrze (1 6 m < 10) Przykład: 1.25 ∗ 102 , nie 0.125 ∗ 103 ani 125 ∗ 100 – w systemie dwójkowym niezerowa znaczy jedynka – pierwszy bit mantysy zawsze równy 1 – ukryty, reszta to część ułamkowa 6 Standard IEEE 754 – przykłady 23.75 • postać binarna: 10111.11 = 24 + 22 + 21 + 20 + 2−1 + 2−2 • po normalizacji: 1.011111 ∗ 24 = 1.011111 ∗ 2100 • • znak 0 wykładnik z przesunięciem 4 + 127 = 131 = 10000011 część ułamkowa 011111 ostatecznie mamy 0 10000011 01111100000000000000000 czyli 01000001 10111110 00000000 00000000 szesnastkowo 0x41BE0000 -0.7 • postać binarna: −0.1011001100110011... • znak = 0, wykładnik = −1, • ostatecznie mamy czyli szesnastkowo 127 − 1 = 126 = 01111110 1 01111110 01100110011001100110011 10111111 00110011 00110011 00110011 0xBF333333 7 Standard IEEE 754 – c.d. Wartości specjalne – wykładniki z samych jedynek bądź z samych zer znak 0 0 0 0 0 0 1 1 1 1 1 1 wykładnik (w) 00..00 00..00 00..01 – 11..10 11..11 11..11 11..11 00..00 00..00 00..01 – 11..10 11..11 11..11 11..11 cz. ułamkowa (u) 00..00 00..01 – 11..11 00..00 – 11..11 00..00 00..01 – 01..11 10..00 – 11..11 00..00 00..01 – 11..11 00..00 – 11..11 00..00 00..01 – 01..11 10..00 – 11..11 wartość +0 dodatnia zdenorm. 0.u ∗ 2−p+1 dodatnia znorm. 1.u ∗ 2w−p +Infinity (nieskończoność) SNaN (Signalling Not A Number) QNaN (Quiet Not A Number) -0 ujemna zdenorm. −0.u ∗ 2−p+1 ujemna znorm. −1.u ∗ 2w−p -Infinity (nieskończoność) SNaN QNaN 8 Standard IEEE 754 – c.d. Operacje specjalne: Operacja n / ±Infinity ±Infinity x ±Infinity ±nonzero / 0 Infinity + Infinity Wynik 0 ±Infinity ±Infinity Infinity Operacja ±0 / ±0 Infinity - Infinity ±Infinity / ±Infinity ±Infinity x 0 Wynik NaN NaN NaN NaN Zakresy dwójkowo: precyzja pojedyncza podwójna zdenormalizowane ±2−149 . . . (1 − 2−23 ) ∗ 2−126 ±2−1074 . . . (1 − 2−52 ) ∗ 2−1022 znormalizowane ±2−126 . . . (2 − 2−23 ) ∗ 2127 ±2−1022 . . . (2 − 2−52 ) ∗ 21023 Zakresy dziesiętnie: precyzja pojedyncza podwójna dziesiętnie ± ∼ 10−44.85 . . . ∼ 1038.53 ± ∼ 10−323.3 . . . ∼ 10308.3