Arytmetyka binarna, Podstawy informatyki


Wydział

Techniki

Uniwersytet Śląski

Data

19-11-1998

Zakład Systemów Informatycznych

Sprawozdanie numer 1.

Paweł Kopaczek

Ocena ................

Piotr Kopaczek

Podpis ...............

Zestaw numer 6.

Zadanie 1.

W przypadku analizy par bitów mnożnika w metodzie Booth'a ( I wariant ) konieczne jest dopisanie zera na najmniej znaczącej pozycji. Udowodnij, że niespełnienie tego wariantu nie da poprawnego wyniku dla mnożenia tą metodą.

Zadanie 2.

Następujące pary liczb dodaj w kodzie ZM, ZU1, ZU2.

a) X=0x01 graphic
Y= −0x01 graphic

b) X=0x01 graphic
Y=0x01 graphic

Zadanie 3.

Następujące pary liczb pomnożyć stosując I wariant algorytmu Booth'a:

a) X=0x01 graphic
Y=0x01 graphic

b) X= −0x01 graphic
Y=0x01 graphic

Zadanie 4.

Następującą parę liczb podziel stosując metodę nierestytucyjną:

X=0x01 graphic
Y=0x01 graphic

Odpowiedź 1.

0x01 graphic
, 0x01 graphic
,

0x01 graphic
0x01 graphic
,

0x01 graphic
,

Brakuje pary dla tego iloczynu (0x01 graphic
), dlatego trzeba dopisać 0, czyli:0x01 graphic
(to jest poprawka dla I metody Booth'a).

U=L(A)*L(B);

L(B)=0x01 graphic
;

U=L(A)*0x01 graphic
;

0x01 graphic
Odpowiedź 2.

Dodawanie w ZM wykonuje się zgodnie z poniższą tabelką.

Operacja

Bity znakowe

an-1, bn-1

Operacje

wykonywane

Znak sumy

0x08 graphic

Dodawanie

Jednako- we znaki

Z*=A*+B*

Zn-1= an-1

Różne znaki

Z*=A*−B*

Zn-1= an-1 w = 0

Zn-1= an-1 w = 1

Uwaga:

Z*,A*,B* − bity liczbowe.

Zn-1,an-1,bn-1 − bity znakowe.

w = 1 − wynik uzyskujemy w kodzie U2, zapisać w ZM a na końcu ustalić bity

znakowe.

k + 1 pozycji obowiązuje w trzech kodach.

a) X=0x01 graphic
Y= −0x01 graphic

k+1 pozycji

X=(0.0,0001111)ZM X=(0.0,00011110)ZM

Y=(1.0,000101)ZM Y=(1.0,00010100)ZM

,00011110

0x08 graphic
,00010100 w = 0

,00001010

−−−−23−21− = 0x01 graphic
=0x01 graphic

Bit znakowy ustalamy według tabelki. Zn-1= an-1 w = 0, więc bit znakowy otrzymanej liczby równa się 0.

Otrzymana liczba równa się (0.0,00001010)ZM =0x01 graphic
10=0x01 graphic
10.

b) X=0x01 graphic
Y=0x01 graphic

k+1 pozycji

X=(0.0,000001011)ZM X=(0.0,0000010110)ZM

Y=(0.0,10011)ZM Y=(0.0,1001100000)ZM

,0000010110

0x08 graphic
+ ,1001100000 w = 0

0x08 graphic
,1001110110

,28−− 262524−2221− =0x01 graphic
= 0x01 graphic
=0x01 graphic

Bit znakowy ustalamy według tabelki. Zn-1= an-1 w = 0, więc bit znakowy otrzymanej liczby równa się 0.

Otrzymana liczba równa się (0.0, 1001110110)ZM==0x01 graphic
10=0x01 graphic
10.

W przypadku ZU1 operacja dodawania jest wykonywana łącznie z bitami znakowymi. I w przypadku wystąpienia przepełnień są one uwzględniane poprzez dodanie jedynki do najmniej znaczącej pozycji.

a) X=0x01 graphic
Y= −0x01 graphic

k+1 pozycji

X=(0.0,0001111)ZM X=(0.0,00011110)ZM X=(0.0,00011110)ZU1

Y=(1.0,000101)ZM Y=(1.0,00010100)ZM Y=(1.0,11101011)ZU1

0.00011110

+ 1 --> [Author:PK] .11101011

0x08 graphic
0x08 graphic
10.00001001

0x08 graphic
+ 1

0x08 graphic

0.00001010

−.−−−−23−21− = 0x01 graphic
=0x01 graphic

Otrzymana liczba równa się 0.0,00001010 =0x01 graphic
10=0x01 graphic
10

b) X=0x01 graphic
Y=0x01 graphic

k+1 pozycji

X=(0.0,000001011)ZM X=(0.0,0000010110)ZM X=(0.0,0000010110)ZU1

Y=(0.0,10011)ZM Y=(0.0,1001100000)ZM Y=(0.0,1001100000)ZU1

0.0000010110

0x08 graphic
+ 0.1001100000

0x08 graphic

0.1001110110

.28−− 262524−2221− =0x01 graphic
= 0x01 graphic
=0x01 graphic

W przypadku ZU2 operacja wykonywana jest łącznie z bitami znakowymi a przepełnienia są ignorowane.

a) X=0x01 graphic
Y= −0x01 graphic

k+1 pozycji

X=(0.0,0001111)ZM X=(0.0,00011110)ZM X=(0.0,00011110)ZU1 X=(0.0,00011110)ZU2 Y=(1.0,000101)ZM Y=(1.0,00010100)ZM Y=(1.0,11101011)ZU1 Y=(1.0,11101100)ZU2

0.00011110

+ 1 --> [Author:PK] .11101100

0x08 graphic
0x08 graphic
10.00001010

0x08 graphic
przepełnienie jest ignorowane

0x08 graphic

0.00001010

−.−−−−23−21− = 0x01 graphic
=0x01 graphic

Otrzymana liczba równa się 0.0,00001010 =0x01 graphic
10=0x01 graphic
10

b) X=0x01 graphic
Y=0x01 graphic

k + 1 pozycji

X=(0.0,000001011)ZM X=(0.0,0000010110)ZM X=(0.0,0000010110)ZU2

Y=(0.0,10011)ZM Y=(0.0,1001100000)ZM Y=(0.0,1001100000)ZU2

0.0000010110

0x08 graphic
+ 0.1001100000

0x08 graphic

0.1001110110

−.28−− 262524−2221− =0x01 graphic
= 0x01 graphic
=0x01 graphic

Otrzymana liczba równa się 0.0, 1001110110 =0x01 graphic
10=0x01 graphic
10.

Odpowiedź 3.

I wariant Booth'a dotyczy mnożenia w kodzie ZU2.

Badamy kolejne ostatnie pary bitów mnożnika.

1).Jeżeli badana para jest kombinacją 1 0 to do iloczynu częściowego ( który na

początku jest wyzerowany) odejmujemy mnożną i przesuwamy wynik o jedno

miejsce w prawo.

2).Jeżeli badana para jest kombinacją 0 1 to do iloczynu częściowego dodajemy

mnożną i przesuwamy wynik o jedno miejsce w prawo.

3).Jeżeli badana para jest parą o jednakowych liczbach 00 11 to nic nie robimy

a później przesuwamy w prawo o jedno miejsce.

4).Jeżeli w skład pary wchodzi bit znakowy to nie wykonujemy przesunięcia.

a) X=0x01 graphic
Y=0x01 graphic

X = (0.00111)

Y = (0.10101)

0.00111

* 0.101010

0x08 graphic

0.00000

0x08 graphic
− 0.00111

1.11001

0x08 graphic
1.111001

+ 0.00111

0x08 graphic
0.000111

0x08 graphic
0.0000111

0x08 graphic
− 0.00111

1.1101011

0x08 graphic
1.11101011

0x08 graphic
+ 0.00111

0.00100011

0x08 graphic
0.000100011

− 0.00111

0x08 graphic
1.110110011

0x08 graphic
1.1110110011

+ 0.00111

0x08 graphic
0.0010010011

Otrzymana liczba równa się (0.0010010011) = 0x01 graphic
10=0x01 graphic
10.

b) X= −0x01 graphic
Y=0x01 graphic

X = (1.01)ZM = (1.11)ZU2

Y = (0.111)ZM = (0.1110)ZM

1.11

∗ 0.1110

0x08 graphic

0.00

−1.11

0x08 graphic
0.01

0x08 graphic
0.001

0x08 graphic
0.0001

0x08 graphic
0.00001

0x08 graphic
+ 1.11

1.11001

Otrzymana liczba równa się (1.11001)ZU2 = 0x01 graphic
10=0x01 graphic
10.

Odpowiedź 4.

Metoda nierestytucyjna jest metodą dzielenia w ZU2 .

Aby można było podzielić liczby w metodzie nierestytucyjnej musi być spełniony warunek |A | < |B |, (A - dzielna, B − dzielnik ).

Metoda ta polega na badaniu znaku dzielnika i kolejnej reszty częściowej. Jeżeli znaki te są zgodne to odejmujemy dzielnik od przesuniętej w lewo reszty częściowej. Jeżeli znaki ich są różne, to dodajemy dzielnik do przesuniętej w lewo kolejnej reszty częściowej. Jeżeli bity znakowe są równe, to bit ilorazu równa się 1. Jeżeli bity znakowe nie są równe, to bit ilorazu równa się 0. Do otrzymanego wyniku dodajemy poprawkę równą = − 1+2- n, gdzie n - numer ostatniej reszty z dzielenia.

X=0x01 graphic
Y=0x01 graphic

X=(0.0001011)ZU2

Y=(0.0001)ZU2

0.0001011

0x08 graphic
−0.0001 q0 = 1

r0=0.0000011

0x08 graphic
0.000011

0x08 graphic
− 0.0001 q1 = 1

r1= 1.111111

0x08 graphic
1.11111

+ 0.0001 q2 = 0

0x08 graphic
0x08 graphic
r2= 0.00001

0.0001

− 0.0001 q3 = 1

0x08 graphic
−−−−−

Do uzyskanej liczby (1.101) dodajemy poprawkę -1+2-4= - 0x01 graphic
= (1.0001)ZU2

1.101

0x08 graphic
+1.0001

0.1011

Otrzymana liczba równa się (0.1011) = 0x01 graphic
10=0x01 graphic
10.

1

9



Wyszukiwarka