Znormalizowana postać zmiennopozycyjnax

Transkrypt

Znormalizowana postać zmiennopozycyjnax
Mirosław Mortka: Reprezentacja binarna liczb rzeczywistych
ZNORMALIZOWANA POSTAĆ
POSTAĆ ZMIENNOPOZYCYJNA
Dowolną liczbę rzeczywistą x ≠ 0 można
żna zapisać w tzw. znormalizowanej postaci zmiennopozycyjnej:
zmiennopozycyjnej
c
x = s ⋅ 2
⋅ m
gdzie: s = +1 lub -1 (znak), c ∈ C (cecha), m ∈ < 0.5, 1) (matysa).
Dla x = 0 znak, mantysa i cecha wynoszą s = c = m = 0.
Niestety, liczb rzeczywistych
stych mamy nieskończenie wiele. Komputer nie chce i nie rozumie takiego pojęcia. Dlatego stoimy przed
wyzwaniem, jak zapisać dowolną liczbę rzeczywistą w skończonym formacie,
formacie, to znaczy jak wybrać skończony
skończ
podzbiór liczb
rzeczywistych tak, by jak najlepiej reprezentował ich wartości. Spróbujmy w ogromnym uproszczeniu dokonać zamian.
ZAMIANA LICZB RZECZYWISTYCH ZAPISANYCH W SYSTEMIE
SYSTEMI DZIESIĘTNYM NA BINARNĄ
ZNORMALIZOWANĄ POSTAĆ ZMIENNOPOZYCYJNĄ
ZMIENNOPOZ
Aby zobrazować sposób zapisu liczb rzeczywistych ustalmy, iż na zapis jednej liczby przeznaczymy dwa bajty. Pierwszy bit
oznaczać będzie znak, siedem kolejnych cechę zapisaną w kodzie U2, drugi bajt przeznaczamy na mantysę.
PRZYKŁAD:
Zapisz liczbę 3.0 w znormalizowanej postaci zmiennopozycyjnej.
zmiennopoz
Załóżmy, że znak ‘+’ będzie repreezentowany przez wartość 0, ‘–‘
przez 1.
3.5 = +1 ⋅ 0.75 ⋅ 2
2
s = +1, c = 2, m = 0,75
s binarnie to 0, c = 0000010.
A mantysa?
Skorzystajmy z algorytmu podanego na stronie:
stronie http://wazniak.mimuw.edu.pl/index.php?title=WDP_Reprezentacja_liczb:
http://wazniak.mimuw.edu.pl/index.php?title=WDP_Reprezentacja_liczb
Kolejne
lejne cyfry rozwinięcia binarnego będziemy generować w następujący sposób:
Dopóki otrzymujesz nienapotkane wcześniej wartości
1.
2.
wykonuj:
Pomnóż przez 2
Jeżeli otrzymana wartość jest mniejsza od 1, to dopisz cyfrę
1. Jeżeli
eżeli otrzymana wartość jest równa co najmniej 1, dopisz cyfrę
i odejmij od wyniku 1. Z chwilą, gdy
powtórzy się wartość , zakończ procedurę; wypisany ciąg jest okresowy, a jego okresem jest ciąg bitów
między powtórzeniami.
Korzystając z powyższego wzoru dla m = 0.75
75 otrzymamy
otrzyma 11000000.
Zatem pełna reprezentacja liczby 3.0 na dwóch bajtach to 0000 0010 1100 0000.
1
Mirosław Mortka: Reprezentacja binarna liczb rzeczywistych
ZAMIANA LICZB RZECZYWISTYCH ZAPISANYCH W ZNORMALIZOWANEJ POSTACI
ZMIENNOPOZYCYJNEJ NA SYSTEM DZIESIĘTNY
Działania przeprowadzimy.
PRZYKŁAD:
Zapisz liczbę 1111 0011 1001 1010 w znormalizowanej postaci zmiennopozycyjnej.
s = -1
c = 1110011(U2) = -12(10)
m = 1001 1010(U2) = 1 ⋅ 2 + 0 ⋅ 2 + 0 ⋅ 2 + 1 ⋅ 2 + 1 ⋅ 2 + 0 ⋅ 2 + 1 ⋅ 2 + 0 ⋅ 2 =
-1
-2
-3
-4
-5
-6
-7
-8
= 1 ⋅ 0.5 + 1 ⋅ 0.0625 + 1 ⋅ 0.03125 + 1 ⋅ 0.0078125 = 0.6015625
-12
Zatem pełna wartość liczby 1111 0011 1001 1010 to -1 ⋅ 2
⋅ 0.6015625, co wynosi 0.0001468658447265625
2