Professional Documents
Culture Documents
Jak jest pokazane wyej, przedstawione liczby np.: 8-bitowe jako sowa w kodzie prostym wartoci tych liczb s tak naprawd zapisane na 7 bitach, bowiem najbardziej znaczcy bit suy do przechowywania informacji o znaku (+ 0, 1), a pozostae bity to warto bezwzldna liczby. Oznacza to, e najwiksz liczb cakowit 8-bitowego sowa jest 27 1 , czyli + 127 01111111, a najmnisz liczb, czyli 127 11111111. Np. +2210 000101102 natomiast 2210 100101102.
Dodawanie liczb dwjkowych zapisanych w kodzie prostym odbywa si podobnie jak przy dodawaniu liczb w systemie dziesitnych. Np. 2610 + 2710 odpowiednio 000110102 + 000110112: 21610 + 2 7 10 53 10 0 0 01111011 02 + 0 0 0 1 1 0 1 12 0 0 1 1 0 1 0 12
Bd przepenienia wystpi dopiero gdy pojawi si 1 przeniesienia na 8-j pozycji tzn. pozycji znaku. Taki bd wystpi rwnie przy odejmowaniu gdy zachodzi poyczka z odejmnej albo gdy odjemnik jest wikszy od odjemnej (wtedy konieczna jest zmiana znaku) i w wyniku otrzymujemy nieprawidow rnic. Podobne kopoty znikaj przy zastosowaniu metod kodowania opartych na dopenieniu do podstawy systemu liczbowego. Dla dodawania operandw dwjkowych z dowolnym znakiem wykorzystuje si odwrotne (uzupenienie do 1) i uzupenieniowe (uzupenienie do 2) kodowanie. Odwrotny kod A2 ujemnej liczby A2 otrzymuje si w sposb negacii (inwertowania) wszystkich cyfr w kadej pozycji danej liczby czyli przez zamiany 0 na 1, a 1 na 0 oprcz znakowej cyfry. Np. odwrotny kod A2 ujemnej liczby A2 = 1.0101102 rwna si A2 = 1.1010012. Przy operacji odejmowania A2 B2 = A2 + B2 , moe si pojawi 1 przeniesienia do nastpnej wyszej znakowej pozycji (gdzie moe by tylko jedna pozycja) co wymusza do wykonania tz. przeniesienia cyklicznego dodawania tej 1 do LSB liczby otrzymanej sumy. Przeniesienie cykliczne jest technicznie nie wygodne, poniewaz zabiera zbyt duo czasu na realizacj operacji dodawania. Zatem w wypadku ~ dodawania liczb ujemnych przewag ma kod uzupenieniowy A2 , ktry wyprowadza si z kodu
~ odwrotnego A2 w sposb dodawania 1 do LSB, a mianowicie jako A2 = A2 + 1 . Wic operacja
~ A2 B2 = A2 + ( B2 ) A2 + B2 + 1 A2 + B2 ,
B2
~ B2
B2
~ B2
Jeli w znakowej pozycji mamy 1 przepenienia, to j poprostu pomijamy. Jeli suma okae si ujemna (w znakowej pozycji mamy 1), to znaczy e wynik jest w kodzie uzupenieniowym, a jeli 0, to wynik jest w kodzie prostym. Taka sytuacja zawsze wynika przy ujemnych liczbach sumy, tzn. e jest w kodzie uzupenieniowym, a take gdy udejmna jest mniejsza od odjemnika. Ostateczny wynik dodawania ~ w kodzie prostym otrzymuje si po wypenieniu wstecznego przetwarzania: do ujemnej sumy S 2 trzeba doda (1) w kodzie uzupenieniowym (czyli liczb 1.111), a kad pozycj otrzymanej ujemnej sumy w kodzie odwrotnym S 2 przeinwertowa z czego wyniknie poszukiwana liczba w kodzie zwykym S 2 .
Prz. Znale sum liczb A2 = 0.1010 i B2 = 1.0100 (tutaj kropka umownie rozdziela znak liczby
A2 = 1.1010 1.01011.0110
A2
~ A2
Otrzyman sum A2 + B2 = 1.1010 w kodzie uzupenieniowym przetwarzamy w kod odwrotny, dodawajc do niej liczb 1.1111: Otrzyman sum A2 + B2 = 1.1001 w kodzie odwrotnym przetwarzamy w kod zwyky: 1.1001 1.0110.
Odp. A2 + B2 = 1.0110 Prz. Znale sum liczb A2 = 1.1010 i B2 = 1.0100 .
1.110110 1. 1 1 1 1 11.1 0 0 1
Z poprzednich przykadw mamy liczby ~ ~ A2 = 1.0110 i B2 = 1.1100 , a wic otrzymujemy: Postpujc tak samo z liczb 1.0001 1.1110
Odp. A2 + B2 = 1.1110
1.101110 1. 1 1 0 0 11. 0 0 1 0
1.1010110 1. 1 1 1 1 11. 0 0 0 1
3.1.2. MNOENIE
W porwnaniu z dodawaniem i odejmowaniem mnoenie jest operacj zoon niezalenie od tego, czy jest realizowane sprztowo, czy przez oprogramowanie. W rnych komputerach wykorzystywano wiele rnych algorytmw. Rozpoczniemy od prostego mnoenia dwch bezznakowych (nieujemnych) liczb cakowitych. Wykonuje si tak, jak zwykle robi si to za pomoc owka i kartki papieru.
Zauwamy: 1) wynikiem mnoenia dwch n-bitowych binarnych liczb cakowitych jest liczba o dugoci do 2n bitw (np. 11x11 = 1001); 2) dla kadej 1 mnonika s wymagane operacje sumowania i przesunicia, jednak dla kadego 0 potrzebne jest tylko przesunicie.
3.1.3. DZIELENIE
Dzielenie jest nieco bardziej zoone ni mnoenie, jednak opiera si na takich samych zasadach oglnych. Jak poprzednio, podstaw algorytmu jest rozwizanie stosowane przy obliczeniach za pomoc owka i
papieru, a sama operacja obejmuje powtarzajce si przesuwanie oraz dodawanie lub odejmowanie. Niej pokazano przykad dugiego dzielenia bezznakowych binarnych liczb cakowitych.
W przypadku dodawania i odejmowania konieczne jest zapewnienie, eby oba argumenty miay taki sam wykadnik. Moe to wymaga przesunicia przecinka pozycyjnego w jednym z argumentw. Mnoenie i dzielenie s pod tym wzgldem prostsze. Poniewa wynikiem ktrejkolwiek z tych operacji moe by utrata cyfr, przesuwa si raczej mniejsz liczb; ewentualne stracone cyfry maj stosunkowo mae znaczenie. Wyrwnanie jest osigane przez powtarzajce si przesuwanie mantysy o jedn cyfr w prawo i odpowiednie zwikszanie wykadnika, a do zrwnania si wykadnikw. Jeli dodawa za pomoc kartki i owka dwie liczby zmiennoprzecinkowe, ktre maj rne wartoci wykadnika, to musimy najpierw zmieni jedn z nich w taki sposb, aby obie liczby miay taki sam wykadnik, tzn. znormalizowa. Np. 0,5 102 + 2,0 103 = 0,5 102 + 20,0 102 = 20,5 102. Dodawanie i odejmowanie liczb zmiennoprzecinkowych przebiega w taki sam sposb.
Prz. Znale sum A2 + B2 liczb A10 = 10,5 i B10 = 2,05.
B
Dokonujc normalizacji z zachowaniem wikszego wykadnika mamy A : 10,510 1010,12 ; A2 = 1010,1 = 0,1010100000 24 B: 2,0510 10,0000112 ; B2 = 10,000011 0,0010000011 24 wykadnik: 16 + 4 = 20
B
+
0 10100 0 10100 0 10100
+ =
Odp. A2 + B2 = 0,1100100011 24 12,5510 Prz. Znale iloczyn A2 B2 liczb A10 = 10,5 i B10 = 2,05.
B