WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar 1.2. Arytmetyka w systemie uzupełnień do dwóch 1.3. Mnożenie i dzielenie przez dwa 1.4. Binarne mnożenie i dzielenie 2. Liczby zmiennopozycyjne 2.1. Zapis zmiennopozycyjny 2.2. Standardy zapisu
1. Arytmetyka binarna przeniesienie 0 + 0 0 + 1 1 + 0 1 + 1 Reguły dodawania Np. dodajmy liczby binarne 1 0 1 0 + 0 0 1 1 1 1 0 1 1 przeniesienia Dodawane bity przeniesienie 0 + 0 0 + 1 1 1 + 0 1 + 1
1.1. Nadmiar (overflow) Projektując układy realizujące operacje arytmetyczne należy uwzględniać zakres argumentów tych operacji oraz zakres wyniku. Np. 1 1 0 0 12 + 0 1 1 0 + 6 0 0 1 0 2 błąd ! 1 ZM 8 bitów 9 bitów 89 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 1 + 45 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 134 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 wyszło – 6 !
1.2. Arytmetyka w systemie uzupełnień do dwóch Liczby w systemie uzupełnień do dwóch dodaje się w taki sposób jak liczby binarne bez znaku, np. 12 + 20 = 32 0 0 0 0 1 1 0 0 1210 + 0 0 0 1 0 1 0 0 2010 0 0 1 0 0 0 0 0 3210 Liczby ujemne -1 + (- 2) = - 3 1 1 1 1 1 1 1 1 - 110 + 1 1 1 1 1 1 1 0 - 210 1 1 1 1 1 1 0 1 - 310 1 pomijamy przeniesienie Mnożenie robi się przez wielokrotne dodawanie
1.3. Mnożenie i dzielenie przez dwa Wykonuje się przez przesuwanie liczb 0 0 1 0 210 0 1 0 0 410 1 0 0 0 810 0 0 0 1 110 na tzw. rejestrach
1.4. Binarne mnożenie i dzielenie Ponieważ w urządzeniach cyfrowych stosuje się sumatory dwuargumentowe, to algorytm mnożenia i dzielenia musi być do tego przystosowany. Nie może być sumowania wielu składników jak to ma miejsce w klasycznym sposobie postępowania. Dlatego też np. w każdym kroku algorytmu mnożenia liczb dwójkowych wykonywane są dwie operacje: dodawania i przesunięcia iloczynu cząstkowego o jedną pozycje w prawo. Jednym ze składników dodawania jest zawsze iloczyn cząstkowy, a drugi zależy od aktualnej wartości najmniej znaczącego bitu (LSB) mnożnika.
2. Liczby zmiennopozycyjne W dziesiętnym systemie liczbowym do oznaczania bardzo dużych i bardzo małych liczb stosuje się często notację wykładniczą np.: 294800000 2,948*10+8 0,000001704 1,704*10-6 wykładnik potęgi lub 1,602*10-6 pozycja przecinka dziesiętnego mantysa
2.1. Zapis zmiennopozycyjny Zapis formalny L = M x N E • M - mantysa, liczba mniejsza od jedności; mantysa znormalizowana należy do przedziału < 0.1; 1), pierwszy znak po przecinku musi być różny od zera; • N - podstawa systemu zgodnie z zapisem pozycyjnym wagowym; • E - cecha, czyli wykładnik potęgi, dzięki któremu przecinek w liczbie zostaje przesunięty tak, aby utworzyć mantysę w zgodzie z powyższą definicją.
Zastępując podstawę potęgi 10 podstawą 2, możemy użyć podobnej adnotacji do zapisywania liczb rzeczywistych w komputerze np. 5,62510 może być zapisana jako 1,01101*22 lub 1011,01*2-1 Położenie przecinka może być dynamicznie składane poprzez zmianę wartości wykładnika zmiennopozycyjna forma zapisu
Aby zapisać liczbę zmiennopozycyjną musimy zapisać informację o: znaku mantysie wykładniku Liczba słów, których do tego celu użyjemy, wraz z metodą kodowania tej informacji nosi nazwę formatu zmiennopozycyjnego np.: +0,101101*23 Liczba binarna zapisana w postaci cecha-mantysa na dwóch bajtach. znak cecha mantysa 1
W praktyce zwykle na cechę przeznaczamy jeden bajt, na mantysę minimum trzy bajty. ilość bajtów przeznaczonych na cechę decyduje o zakresie ilość bajtów przeznaczonych na mantysę decyduje o błędzie Gdy chcemy poprawić dokładność, musimy dodać bajt do mantysy. Gdy chcemy powiększyć zakres reprezentowanych liczb, dodajemy bajt do cechy. Przy jednym bajcie przeznaczonym na mantysę błąd względny nie przekracza 0.8% błąd bezwzględny * 100% wartość liczby Arytmetyka zmiennoprzecinkowa jest bardziej złożona niż arytmetyka liczb całkowitych. Operacje mogą być wykonywane programowo lub sprzętowo przez tzw. koprocesor zmiennopozycyjny (numeryczny).
Zakres liczb, który można zapisać używając 8 bitowego wykładnika to w przybliżeniu od 10-39 do 10+39 a precyzja osiągana przy 7 bitowej mantysie to w przybliżeniu od 1 do 103. Dokładność można zwiększyć, używając większej liczby bitów do zapisu mantysy. Stąd ustalono w postaci standardu 2 tryby precyzji: a/ pojedyncza (4 bajty) b/ podwójna (8 bajtów)
2.2. Standardy zapisu Standard IEEE 754 dla liczby rzeczywistej: (4 bajty) Standard IEEE dla liczby podwójnej precyzji: (8 bajtów) Kolejne bity (od lewej) Znaczenie 1 (jeden) znak mantysy 2-9 (osiem) cecha 10-32 (dwadzieścia trzy) mantysa Kolejne bity (od lewej) Znaczenie 1 (jeden) Znak mantysy 2-12 (jedenaście) cecha 13-64 (pięćdziesiąt dwa) mantysa
Zakres liczb zmiennoprzecinkowych IEEE 754 w pojedynczej precyzji Z(IEEE 754) = - 3,4 • 1038 ... 3,4 • 1038 Zakres liczb zmiennoprzecinkowych IEEE 754 w podwójnej precyzji Z(IEEE 754) = - 1,8 • 10308 ... 1,8 • 10308