1
Stałopozycyjna i zmiennopozycyjna reprezentacja liczb w komputerze
Wewnątrz komputera, ze względu na skończoną liczbę pozycji (bitów), na których mogą być zapisane liczby, może być przedstawiony tylko pewien podzbiór liczb wymiernych Ze względu na sposób zapisu (przechowywania) liczb, wyróżnia się w tym podzbiorze liczby całkowite, które reprezentowane są w zapisie stałopozycyjnym Do reprezentacji właściwych liczb wymiernych wykorzystuje się z reguły zapis zmiennopozycyjny, który pozwala objąć znacznie większy zakres liczb, niż zapis stałopozycyjny Reprezentacja stałopozycyjna (stałoprzecinkowa)
Najczęściej wykorzystywana do kodowania liczb całkowitych Z reguły wykorzystuje 2 lub 4 bajty (czyli 16 lub 32 bity) Liczby bez znaku są przedstawiane w kodzie naturalnym (NB) Najmniejsza liczba dwubajtowa:
0
Największa liczba dwubajtowa:
65536
Liczby ze znakiem są przedstawiane w kodzie U2
Najmniejsza liczba dwubajtowa:
-32768
Największa liczba dwubajtowa:
32767
Może być wykorzystana do kodowania liczb rzeczywistych, jeśli część pozycji przeznaczymy na cyfry ułamkowe, np. liczba 625,625 może wyglądać tak (jeśli wagi poszczególnych pozycji interpretuje się zgodnie z rysunkiem):
625,625 = 1001110001,101
625 = 1001110001
0,625 = 0,101
Jeśli te same bajty potraktuje się jako liczbę całkowitą w kodzie U2, to będą one przedstawiać inną liczbę (dziesięć tysięcy dziesięć).
A. Spyra – Elementy informatyki ... – materiały pomocnicze (sem. 2)
2
(10010)10
Kolejność bajtów - big endian, little endian
Jeśli liczba jest zapisana na kilku bajtach, to bajty te mogą być uporządkowane w kolejności: a) od najstarszego do najmłodszego, (big endian, najpierw bardziej znaczący bajt) zapis naturalny, jak na papierze
b) od najmłodszego do najstarszego (little endian, najpierw mniej znaczący bajt) tzw. przechowywanie odwrotne
Reprezentacja zmiennopozycyjna (zmiennoprzecinkowa) Dwójkowy zapis zmiennoprzecinkowy. Postać liczby:
LFP = m x 2w
m - znacznik, liczba stałoprzecinkowa ze znakiem
w - wykładnik, liczba całkowita
Istnieje wiele różnych sposobów zapisu liczb zmiennoprzecinkowych w systemie binarnym Jednym z nich jest Standard IEEE 754. Definiuje m.in. 4 formaty reprezentacji zmiennoprzecinkowych, w tym
a) zwykły o pojedynczej precyzji SINGLE (REAL) o rozmiarze 32 bity b) zwykły o podwójnej precyzji DOUBLE o rozmiarze 64 bity gdzie:
- wykładnik jest reprezentowany w kodzie z obciążeniem +N
- znormalizowany znacznik jest liczbą z przedziału 1 ≤ |m| < 2 i jest reprezentowany w kodzie znak-moduł,
obowiązuje konwencja ukrytej jedynki (nie zapamiętuje się jej; wszystkie moduły mają postać 1, bbb...bbb ).
A. Spyra – Elementy informatyki ... – materiały pomocnicze (sem. 2)
3
Przykład:
zapis liczby 62,5 w standardzie IEEE754 w pojedynczej precyzji a)
62,5 w systemie dwójkowym to 111110,1 (ponieważ 62 to 111110 a 0,5 to 0,1) b)
normalizujemy znacznik (mantysę), w tym celu trzeba przesunąć przecinek o 5 pozycji w lewo (czyli podzielić liczbę przez 25 ) . Otrzymujemy
1.111101 x 25
czyli bit znaku: 0 (bo liczba dodatnia), znacznik: 111101 (bo tylko część ułamkowa), wykładnik dziesiętnie: 5
a) zapis wykładnika w kodzie +N
Ponieważ N=127 to wartość dziesiętna wykładnika w kodzie +N: 127 + 5 = 132
Liczba 132 w kodzie naturalnym, to: 10000100 (jest to równocześnie liczba 5 w kodzie +N) Ostatecznie liczba 62,5 w zapisie zmiennoprzecinkowym (32 bity): 23 bity
8 bitów
znacznika (mantysy)
bit
wykładnika
znaku
(cechy)
Uwagi końcowe:
Liczby zmiennoprzecinkowe cechuje zakres i precyzja.
Precyzja rośnie wraz ze wzrostem liczby bitów przeznaczonych na znacznik (mantysę).
Zakres rośnie wraz ze wzrostem liczby bitów przeznaczonych na wykładnik (cechę).
A. Spyra – Elementy informatyki ... – materiały pomocnicze (sem. 2)