You are on page 1of 4

III.

ARYTMETYKA LICZB DWJKOWYCH


S dwa podstawowe problemy arytmetyki komputera: sposb reprezentowania liczb (w formacie binarnym) oraz algorytmy podstawowych operacji arytmetycznych (dodawania, odejmowania, mnoenia, dzielenia). Obydwa te problemy dotycz zarwno arytmetyki staoprzecinkowej (calkowitoliczbowej), jak i zmiennoprzecinkowej (zmiennopozycyjnej) wyraane jako liczba (mantysa) pomnoona przez sta (podstaw) podniesion do pewnej potgi (wykadnik) i implementowane norm IEEE-754. Kluczowym problemem arytmetyki komputerowej jest wybr dwch bardzo rnych reprezentacji liczb: staoprzecinkowych i zmiennoprzecinkowych. 3.1. PODSTAWOWE POJCIA. ARYTMETYKA LICZB STAOPRZECINKOWYCH 3.1.1. DODAWANIE W stosunku do liczb dziesitnych arytmetyka dwjkowa jest istotnie atwiejsza poniewa mamy do czynienia tylko z czterma kombinacjami wartoci dwch (a nie dziesiciu) cyfr z ktrymi mog wypenia si operacji arytmetyczne: 0 i 0, 0 i 1, 1 i 0 oraz 1 i 1. Dodawanie tych cyfr (0+0, 1+0, 0+1, 1+1) pokazano w tabl. 3.1, a z uzgodnieniem przeniesienia w tabl. 3.2. Tabl. 3.1 A 0 0 1 1 B 0 1 0 1 A+B 00 01 01 10 A B Cin 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Tabl. 3.2 Cout A+B 0 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1

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

odejmowania liczb dwjkowych przeprowadza si nastpujco:

~ A2 B2 = A2 + ( B2 ) A2 + B2 + 1 A2 + B2 ,
B2

~ B2

i operatory przetwarzania w kod odwrotny i kod uzupenieniowy, odpowiednio.

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

pbajtowej) B2 = 1.0100 1.10111.1100


Odp. A2 + B2 = 0.0110 .
B2 ~ B2

0.11010 1.1100 10.0110

Prz. Znale sum liczb A2 = 1.1010 i B2 = 0.0100 .

A2 = 1.1010 1.01011.0110

A2

~ A2

1.01110 0.0100 1.1010

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.

3.2. ARYTMETYKA LICZB ZMIENNOPRZECINKOWYCH

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

1010,1 10,000011 1100,100011

0,1010100000 0,0010000011 0,1100100011

+ =

1010100000 0010000011 1100100011

Odp. A2 + B2 = 0,1100100011 24 12,5510 Prz. Znale iloczyn A2 B2 liczb A10 = 10,5 i B10 = 2,05.
B

A2 = 1010,1 = 0,1010100000 24 B2 = 10,000011 = 0,1000001100 22


B

(16 + 4 = 20) (16 + 2 = 18)

0 10100 0 10010 0 10101

1010100000 0010000011 1010100001

Odp. A2 B2 = 0,1010100001 25 21,52510

You might also like

  • Ask 5
    Ask 5
    Document13 pages
    Ask 5
    Łukasz Węgliński
    No ratings yet
  • Ask 4+
    Ask 4+
    Document4 pages
    Ask 4+
    Łukasz Węgliński
    No ratings yet
  • Ask 4
    Ask 4
    Document6 pages
    Ask 4
    Łukasz Węgliński
    No ratings yet
  • Ask 2
    Ask 2
    Document9 pages
    Ask 2
    Łukasz Węgliński
    No ratings yet
  • Ask 0 1
    Ask 0 1
    Document8 pages
    Ask 0 1
    Łukasz Węgliński
    No ratings yet