WYKŁAD 4
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
Literatura:
1. A. Skorupski; Podstawy techniki cyfrowej, WKiŁ
Warszawa 2001.
2. W. Sikorski; Wykłady z podstaw informatyki, Mikom
Warszawa 2002.
1. Arytmetyka binarna
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
0
0 + 1
1
0
1 + 0
1
0
1 + 1
0
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 12
10
+ 0 0 0 1 0 1 0 0 20
10
0 0 1 0 0 0 0 0 32
10
Liczby ujemne
-1 + (- 2) = - 3 1 1 1 1 1 1 1 1 - 1
10
+ 1 1 1 1 1 1 1 0 - 2
10
1 1 1 1 1 1 0 1 - 3
10
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 2
10
0 1 0 0 4
10
1 0 0 0 8
10
0 0 0 1 1
10
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,625
10
może być zapisana jako 1,01101*2
2
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*2
3
Liczba binarna zapisana w postaci cecha-mantysa na
dwóch bajtach.
znak cecha mantysa
0
0
0 0
0
0
1
1
0
0
1
0
1
1 0
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 10
3
.
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 (3 bajty)
b/ podwójna (8 bajtów)
2.2. Standardy zapisu
Standard IEEE 754 dla liczby rzeczywistej: (3 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-23 (trzynaście)
mantysa
Kolejne bity (od lewej)
Znaczenie
1 (jeden)
Znak mantysy
2-12 (jedenaście)
cecha
13-64 (pięćdziesiąt dwa)
mantysa