- 0 Talk
-
PWr - Zasady arytmetyki zmiennoprzecinkowej i stałoprzecinkowej
Operandami algorytmów arytmetyki komputerowej są kody reprezentujące liczby. Do reprezentacji ułamków stusuje się reprezentację stało- lub zmiennoprzecinkową. Zbiór reprezentowanych wartości jest zbiorem dyskretnym i skończonych, charakteryzuje się prezycją wyników operacji na liczbach, rozdzielczością i zakresem liczb.
Reprezentacja zmiennoprzecinkowa
Edit
Liczba zmiennoprzecinkowa reprezentowana jest jako trójka MBE (B oznacza od tej pory betę), gdzie M jest znacznikiem (significand, dawniej mantysa - mantissa), B - bazą reprezentacji (radix), E wykładnikiem (exponent). Liczba w takiej reprezentacji to:
F = MBE
W celu reprezentowania liczb dodatnij i ujemnych stosuje się reprezentację znaku przy pomocy bitu. Od 1985 roku istnieje standard opisu liczb zmiennoprzecinkowych IEEE754 (wznowiony i uzupełniony w postaci IEE854 w 1987). Standard te przewiduje istnienie liczb zmiennoprzecinkowych reprezentowanych przez 32 bitową (pojedynczej precyzji):
3 22 11 00 0 1 43 65 87 0 SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM
Bazą w reprezentacji dwójkowej jest 2, zatem liczbę można reprezentowac jako:
F = S M 2E
Mantysa reprezentowana jest w przypadku liczb znormalizowanych jako wartość z ukrytą jedynką, znaczy to, że 11 i szereg 0 w mantysie to 1,11000000002 czyli 1,7510.
Arytmetyka zmienno- i stałoprzecinkowa
Edit
W przypadku arytmetyki stałoprzecinkowej prawdziwe są wszystkie twierdzenia stosowane w systemie uzupełnieniowym (przemienność dodawania, dodawania względem mnożenia, itd.). Dodawanie i odejmowanie nie wymaga korekcji (może wystąpić przepełnienie). Mnożenie wymaga skalowania. Jeśli obie liczby mają 4 bity po przecinku - wynik będzie posiadał 8 bitów po przecinku, zatem:
0010,0010
x0001,1101
----------
00100010
00100010
00100010
00100010
--------------
001111011010
czyli:
0011,11011010
czyli:
0011,1101
W przypadku arytmetyki zmiennoprzecinkowej dodawanie i odejmowanie liczb wymaga dostosowania wykładnika mniejszego do większego i obarczone jest błędem w przypadku różnicy wykładników. Wzór (dla dodawania - zamienić na +):
x1 - x2 = (M1 - M2BE2-E1)BE1
Jedna z mantys musi zostać zdenormalizowana, jeśli wykładniki się różnią.
Mnożenie: x1 x2 = (M1 M2)BE1+E2
Dzielenie: x1 / x2 = (M1 / M2)BE1-E2
Źródła informacji
Edit
- Biernat J. Arytmetyka komputerów, Warszawa, PWN 1996, str. 8
- Biernat J. Metody i układy arytmetyki komputerowej, Wrocław, Oficyna Wydawnicza Politechniki Wrocławskiej 2001
Pizdencja