Systemy liczbowe
Strona domowa
Zarys teoretyczny
Naturalny system dwójkowy
Kod uzupełnień do dwóch
Kod znak-moduł
Standard IEEE 754
System szesnastkowy
Ćwiczenia
Naturalny system dwójkowy
Kod uzupełnień do dwóch
Kod znak-moduł
Standard IEEE 754
System szesnastkowy
TEST

Standard IEEE 754

Standard IEEE 754 został opracowany po to aby ujednolicić wyniki obliczeń numerycznych wykonywanych na różnych platformach sprzętowych. Definiuje on dwa rodzaje liczb zmiennoprzecinkowych, 32 bitowe oraz 64 bitowe. Liczby 32 bitowe są określane jako "pojedynczej precyzji", natomiast liczby 64 bitowe są określane jako "podwójnej precyzji". Kod binarny liczby zmiennoprzecinkowej podzielony jest na 3 pola zawierające poszczególne komponenty zapisu zmiennoprzecinkowego.

Standard IEEE 754 - jpg

Rys.Poszczególne komponenty zapisu zmiennoprzecinkowego

Pierwszy bit w zapisie jest bitem znaku, jeśli jest on zerem to liczba jest dodatnia jeśli jedynką to liczba jest ujemna. Jeżeli chcemy dokonać zmiany znaku liczby zmiennoprzecinkowej na przeciwny wystarczy zanegować ten bit.
Kolejne bity to bity cechy odpowiedzialne za kodowanie wykładnika potęgi 2, w pojedynczej precyzji jest ich 8. Liczby zmiennoprzecinkowe zakodowane w standardzie IEEE 754 zapisują cechę w kodzie z nadmiarem. Dla pojedynczej precyzji nadmiar wynosi 127. Zatem w polu cechy można zapisać wartość od -127 do 127. W podwójnej precyzji cecha zbudowana jest z 11 bitów co daje nadmiar 1023 oraz możliwość zapisania wartości od -1023 do 1023.
Ostatnim komponentem zapisu są bity ułamkowe mantysy. W pojedynczej precyzji mantysa posiada 23 bity, a w podwójnej 52. Wzrost liczby bitów mantys liczb zmiennoprzecinkowych wpływa na dokładność odwzorowania liczb rzeczywistych.

Wartość liczby zapisanej w standardzie IEEE 754.
Wartość liczby zapisanej w standardzie IEEE 754 obliczamy za pomocą wzoru:

L(10) = (-1)z2(c-127)(1.m)

Żeby móc zastosować powyższy wzór należy najpierw wydzielić z kodu poszczególne omawiane wcześniej komponenty. Są to bit znaku, bity mantysy oraz bity kodu cechy.

Przykład:

Chcemy poznać wartość dziesiętną liczby:
01000010110010000000000000000000(IEEE 754).

Dzielimy liczbę na poszczególne grupy:

01000010110010000000000000000000
zcechabity ułamkowe mantysy

z = 0 - liczba jest dodatnia
c = 10000101(NADMIAR=127) = 133 - 127 = 6
m = 01,10010000000000000000000(U1) = 119/16
Mamy wszystkie niezbędne składniki, wyliczamy wartość liczby:

L(10) = (-1)z2(c-127)(1.m) = (-1)0 x 26 x 19/16 = 26 x 25/16 = 4 x 25 = 100

Zakres liczby zapisanej w standardzie IEEE 754.
Zakres liczby zapisanej w standardzie IEEE dla pojedynczej precyzji wynosi:

Z(IEEE 754) = -3,4 x 1038 ... 3,4 x 1038

Natomiast dla podwójnej precyzji:

Z(IEEE 754) = - 1,8 x 10308 ... 1,8 x 10308

 

Wykonanie Radosław Kędzierski