Sunteți pe pagina 1din 31

Cuprins:

4. OPERAII ARITMETICE N CALCULATOARE NUMERICE .............................................................. 4-1 4.1 OPERAII ARITMETICE N VIRGUL FIX ........................................................................................................ 4-2 4.1.1 Adunarea i scderea n virgul fix ................................................................................................. 4-2
4.1.1.1 Adunarea i scderea n cod direct................................................................................................................. 4-2 4.1.1.1.1 Adunarea n cod direct ............................................................................................................................. 4-2 4.1.1.1.2 Scderea n cod direct .............................................................................................................................. 4-2 4.1.1.2 Adunarea i scderea n cod invers ................................................................................................................ 4-3 4.1.1.2.1 Adunarea n cod invers ............................................................................................................................. 4-3 4.1.1.2.2 Scderea n cod invers .............................................................................................................................. 4-4 4.1.1.3 Adunarea i scderea n cod complementar .................................................................................................... 4-4 4.1.1.3.1 Adunarea n cod complementar ................................................................................................................ 4-4 4.1.1.3.2 Scderea n cod complementar. ................................................................................................................ 4-5

4.1.2

nmulirea n virgul fix .................................................................................................................. 4-6


nmulirea direct.......................................................................................................................................... 4-7 nmulirea prin metoda BOOTH .................................................................................................................. 4-10 nmulirea n complement fa de 2 ............................................................................................................. 4-14 mprirea n virgul fix prin metoda comparaiei ...................................................................................... 4-17 Metoda de mprire cu refacerea restului parial ......................................................................................... 4-20 Metoda de mprire fr refacerea restului parial ...................................................................................... 4-23

4.1.2.1 4.1.2.2 4.1.2.3

4.1.3

mprirea n virgul fix ................................................................................................................ 4-17

4.1.3.1 4.1.3.2 4.1.3.3

4.2 OPERAII ARITMETICE N VIRGUL MOBIL ................................................................................................. 4-26 4.2.1 Adunarea i scderea n virgul mobil .......................................................................................... 4-26 4.2.2 nmulirea n virgul mobil ........................................................................................................... 4-29

4. OPERAII ARITMETICE N CALCULATOARE NUMERICE

Obiective: Obiectivele principale ale acestui capitol sunt orientate spre prezentarea operaiilor elementare de adunare, scdere, nmulire i mprire, n virgul fix i virgul mobil. Se prezint algoritmi specifici codurilor de reprezentare direct, invers i complementar. n acest capitol se prezint metodele cele mai eficiente pentru efectuarea operaiilor de nmulire i mprire.

4-1

4.1 Operaii aritmetice n virgul fix 4.1.1 Adunarea i scderea n virgul fix 4.1.1.1 Adunarea i scderea n cod direct 4.1.1.1.1 Adunarea n cod direct Fie : x = xsx-1x-2...x-n y = ysy-1y-2...y-n cu condiia ca |x| + |y| < 1 dou numere n virgul fix, subunitare, reprezentate n cod direct. Operaia de adunare se realizeaz prin metoda comparaiei: dac xs = ys atunci x + y = xs(|x|+|y|) altfel dac |x| < |y| atunci x + y = ys(|y|-|x|) altfel x + y = ys(|x|-|y|) Se observ c pentru a realiza operaia de adunare n cod direct a unor numere reprezentate n virgul fix este necesar un dispozitiv de comparare a modulelor celor dou numere. Operaia de adunare const n: dac semnele celor doi operanzi sunt identice atunci se adun modulele celor dou numere i se stabilete semnul comun; dac semnele celor doi operanzi sunt diferite atunci se compar modulele celor dou numere i n funcie de relaia dintre ele se scade cel mai mic din cel mai mare i se d semnul numrului cel mai mare n valoare absolut. Dispozitivul de adunare trebuie s dipun i de o unitate aritmetic logic, care s poat efectua att operaia de adunare ct i de scdere. Din punctul de vedere al implementrii fizice un astfel de dispozitiv este destul de complex. 4.1.1.1.2 Scderea n cod direct Operaia de scdere n cod direct se reduce la adunare, dup ce n prealabil s-a negat bitul de semn al scztorului. Operaia propriu-zis efectuat de dispozitivul aritmetic este funcie de semnul celor doi operanzi i de operaia cerut. Astfel, dac xs , ys sunt semnele celor doi operanzi, iar so semnul operaiei dorite (0 adunare, 1 scdere) i sof semnul operaiei efectuate fizice atunci sof = xs ys so Schema bloc de principiu a unui dispozitiv care efectueaz operaii de adunare i scdere n cod direct este prezentat n Fig. 4.1.

4-2

xs

OP1

ys

OP2

COMPARATOR 0 OP1<=OP2 1 OP1> OP2

1 0 MUX

0 s s

1 MUX

SLC So

0/1 Suma / Scadere SUMATOR/SCAZATOR

Unitate aritmetic pentru adunare/scadere n cod direct


Figura 4.1 4.1.1.2 Adunarea i scderea n cod invers

4.1.1.2.1

Adunarea n cod invers

Fie : x = xsx-1x-2...x-n y = ysy-1y-2...y-n cu condiia ca |x| + |y| < 1 dou numere n virgul fix , subunitare, reprezentate n cod invers. Operaia de adunare se efectueaz astfel: se adun cei doi operanzi bit cu bit ncepnd cu rangul cel mai putin semnificativ, inclusiv bitul de semn. eventualul transport din bitul de semn se adun la cifra cea mai puin semnificativ a rezultatului. Justificare: 1. n cazul n care x>0, y>0 i |x|+|y|<1 [x]i + [y]i = |x|+|y| = [|x|+|y|]i 2. n cazul n care x>0, y<0 cazul 1: |x|>|y| [x]i + [y]i = |x|+2-|y|-2-n =2 + (|x|-|y|) - 2-n Deoarece |x|-|y|>0 atunci 2+(|x|-|y|) genereaz un transport din bitul de semn, care conform regulii enunate se adun la poziia cea mai putin semnificativ a rezultatului, adic transportul devine 2-n. n acest caz [x]i + [y]i = (|x|-|y|) = [(|x|-|y|)]i cazul 2: |x|<|y| [x]i + [y]i = |x|+2-|y|-2-n =2 - (|y|-|x|) - 2-n deoarece |y|-|x|>0, atunci 2-(|y|-|x|) nu genereaz un transport din bitul de semn. 4-3

n acest caz [x]i + [y]i =2 - (|y|-|x|) - 2-n = [-(|y|-|x|)]i 3. n cazul n care x<0, y<0 i |x|+|y|<1 [x]i + [y]i = 2 - |x| -2-n + 2 - |y| -2-n = = 2 + 2 - (|x|+|y|) -2-n -2-n = = 2 - (|x|+|y|) -2-n = [-(|x|+|y|)]i deoarece (|x|+|y|)>0, atunci 2 - (|x|+|y|) nu genereaz un transport din bitul de semn. n schimb 2 + 2 - (|x|+|y|) genereaz un transport care prin adunare la poziia cea mai putin semnificativ devine 2-n. n acest caz [x]i + [y]i = [-(|x|+|y|)]i 4.1.1.2.2 Scderea n cod invers Operaia de scdere n cod invers se reduce la adunare dup ce n prealabil s-a inversat (complementat fa de 1) scztorul. Schema bloc de principiu a unui dispozitiv de adunare i scdere n cod invers este prezentat n Fig. 4.2. Se observ c este mult mai simplu dect cel pentru reprezentarea prin mrime i semn. n plus bitul de semn particip la fel ca ceilali bii care specific mrimea. Acest dispozitiv are un dezavantaj c necesit adunarea eventualului transport din bitul de semn ceea ce conduce la un timp de propagare mare. n cazuri extreme unitatea de adunare, scdere n cod invers poate fi lent datorit propagrii transportului.
OP1 OP2

0 MUX

1 s SO

ADD C out C in

Unitatea aritmetic logic pentru adunare/scdere n cod invers


Figura 4.2 4.1.1.3 Adunarea i scderea n cod complementar

4.1.1.3.1

Adunarea n cod complementar

Fie : x = xsx-1x-2...x-n
4-4

y = ysy-1y-2...y-n cu condiia ca |x| + |y| < 1 dou numere n virgul fix, subunitare, reprezentate n cod complementar. Operaia de adunare const n: se adun bit cu bit ncepnd cu rangul cel mai putin semnificativ, inclusiv bitul de semn. Eventualul transport din bitul de semn se neglijeaz. Justificare: 1. n cazul n care x>0, y>0 i |x|+|y|<1 [x]c + [y]c = |x|+|y| = [(|x|+|y|)]c 2. n cazul n care x>0, y<0 cazul 1: |x|>|y| [x]c + [y]c = |x|+2-|y| = 2 + (|x|-|y|) deoarece |x|-|y|>0, atunci 2+(|x|-|y|) genereaz un transport din bitul de semn, care conform regulii enunate se neglijeaz. n acest caz: [x]c + [y]c = (|x|-|y|) = [(|x|-|y|)]c cazul 2: |x|<|y| [x]c + [y]c = |x|+2-|y| = 2 - (|y|-|x|) deoarece |y|-|x|>0, atunci 2-(|y|-|x|) nu genereaz un transport din bitul de semn. n acest caz: [x]c + [y]c = 2 - (|y|-|x|) = [-(|y|-|x|)]c 3. n cazul n care x<0, y<0 i |x|+|y|<1 [x]c + [y]c = 2 - |x| + 2 - |y| = = 2 + 2 - (|x|+|y|) = = 2 - (|x|+|y|) = [-(|x|+|y|)]c Deoarece (|x|+|y|)>0, atunci 2 - (|x|+|y|) nu genereaz un transport din bitul de semn. n schimb 2 + 2 - (|x|+|y|) genereaz un transport care se neglijeaz. n acest caz: [x]c + [y]c = [-(|x|+|y|)]c 4.1.1.3.2 Scderea n cod complementar.

Operaia de scdere n cod complementar se reduce la adunare dup ce n prealabil s-a complementat scztorul. Schema bloc de principiu a unui dispozitiv de adunare i scdere n cod complementar este prezentat n Fig. 4.3. Se observ c este mult mai simplu dect cel pentru reprezentarea prin mrime i semn. n plus bitul de semn particip la fel ca ceilali bii care specifica mrimea.

4-5

OP1

OP2

0 MUX

1 s SO

ADD

Unitate aritmetic pentru adunare/scdere n cod complementar


Figura 4.3 Indicatorii de condiii asociai unitii de adunare scdere. Vom prezenta indicatorii de condiii numai pentru unitatea care lucreaz cu numere reprezentate n complement fa de doi. Indicatorii propui sunt urmtorii: S semn, reprezint valoarea bitului de semn al rezultatului. Z zero, este poziionat n unu dac rezulatul este zero, i este poziionat n zero cnd rezultatul este diferit de zero. Valoarea lui Z se stabilete astfel: Z = /REZULTAT D depire, este poziionat n unu, cnd cele dou numere care se adun sunt pozitive i exist transport spre bitul de semn, sau dac operanzii sunt negativi i nu exist transport spre bitul de semn. Considernd xs, ys semnele celor doi operanzi i ts transportul spre bitul de semn, care atunci cnd apare modific pe zs, semnul rezultatului astfel c valoarea lui D se stabilete cu ecuaia:

D = xs ys zs xs ys zs
T transport, se poziioneaz pe 1 n cazul n care exist un transport din bitul de semn spre stnga. P paritate, se poziioneaz pe 1 n cazul n care rezulatul are un numr par de uniti. 4.1.2 nmulirea n virgul fix

Pentru realizarea operaiei de nmulire cele mai utilizate metode se bazeaz pe adunarea repetat. Exist o serie de algoritmi care au la baz adunarea repetat dintre care cei mai cunoscui sunt: - nmulirea direct; - metoda von Newmann; - metodele lui Robertson; - metoda Booth; - nmulirea n complement fa de 2; - metoda nmulirii scurte; - nmulirea rapid cu salvarea transportului;
4-6

n cele ce urmez nu vom trata toate metodele ci vom prezenta numai algoritmii pentru: nmulirea direct, metoda Booth, nmulirea n complement fa de 2.
4.1.2.1 nmulirea direct

Metoda de nmulire direct este utilizat n cazul reprezentrii n cod direct (mrime i semn). Fie: x = xsx-1x-2...x-n y = ysy-1y-2...y-n dou numere n virgul fix, subunitare, reprezentate n cod direct. Pentru a realiza nmulirea z = x * y este necesar ca rezultatul s fie reprezentat pe un numr dublu de bii sau s se realizeze o rotunjire a rezultatului, n cazul n care se reprezint pe acelai numr de bii. Operaia de nmulire const din trei etape principale: a) - determinarea semnului; b)- nmulirea efectiv; c)- rotunjirea rezultatului; a) Determinarea semnului zs = xs ys b) nmulirea efectiv nmulirea efectiv are ca scop determinarea modulului produsului: |z| = |x| * |y| |z| = y-1*2-1|x| + y-2*2-2|x| + ... + y-n*2-n|x| Din punct de vedere hardware nu este eficient s se realizeze suma produselor pariale conform relaiei de mai sus deoarece sunt necesare n registre care s pstreze produsele pariale i un sumator cu n termeni de lungime 2*n bii. Calcularea modulului rezultatului se poate face printr-un proces iterativ de calcul al produselor pariale de forma: p-n =0 + |x| * y-n p-n+1 = p-n *2-1 + |x| * y-n+1 p-n+2 = p-n+1 *2-1 + |x| * y-n+2 .... p-n+j = p-n+j-1 *2-1 + |x| * y-n+j .... p-1 = p-2 *2-1 + |x| * y-1 Se observ c dup ce a participat la formarea produsului parial cifra y-j nu mai este necesar i deci produsul parial se poate forma ntr-un registru acumulator care se deplaseaz la dreapta cu o poziie, bitul cel mai putin semnificativ putnd fi preluat n registrul ce pstreaz nmulitorul y. |x| * |y| = p-1 * 2-1

4-7

c) Rotunjirea rezultatului. Dac |z| trebuie s fie depus ntr-un cuvnt de n+1 bii, atunci trebuie fcut o rotunjire prin adaus ce const n a aduna 2-n la rezultat dac partea la care se renun are bitul cel mai semnificativ 1. Pentru realizarea unui dispozitiv aritmetic paralel care efectueaz nmulirea a doi operanzi reprezentai n virgul fix, cod direct se propune schema bloc din Fig. 4.4.
OP1 OP2

0 MD

0 AC

0 1 MQ

ADD

NB

Unitate de comanda

Unitate aritmetic pentru nmulire n cod direct


Figura 4.4

unde: MD registrul ce pstreaz primul operand (OP1) MQ registrul ce pstreaz al doilea operand (OP2) AC registrul ACUMULATOR ce pstreaz produsul parial NB registrul ce contorizeaz numrul de bii Rezultatul se obine n : AC,MQ Algoritmul de nmulire n cod direct este urmtorul: 1. se citete denmulitul n registrul MD; se citete nmulitorul n registrul MQ; se iniializeaz registrul acumulator AC 0; se iniializeaz registrul contor de bii NB 0; 2. dac MD=0 sau MQ=0 atunci rezultat 0 , gata operaie; 3. att timp ct NB < n dac MQn = 1 atunci AC AC + MD; deplaseaz dreapta cu o poziie AC, MQ; incrementeaz NB;
4-8

4. stabilire semn :ACs = MDs MQs ; Descrierea AHPL a unitii de comand a dispozitivului de nmulire n cod direct este:
MODULE MEMORY INPUTS OUTPUTS

: Dispozitiv de nmulire cod direct; : MD[n+1]; AC[n+1]; MQ[n+1]; NB[m] : OP1[n+1]; OP2[n+1] : AC[n+1]; MQ[n]

/* 2m n */

/* se ncarc operanzii se iniializeaz AC i NB 1. MD OP1; MQ OP2; AC (n+1)T0; NB mT0 /* se verific dac unul din operanzi este egal cu 0 2. ((v/MD1:n) (v/MQ1:n))/(4) /* dac da se iniializeaz MQ i gata operaie 3. MQ1:n (nT0) (7) /* se adun denmulitul la produsul parial, dac bitul curent analizat este 1 /* se realizeaz deplasarea prin conexiuni decalate la dreapta cu o poziie (de la unitatea aritmetic logic la registrul AC) i se incrementeaz contorul de bii.
4. AC, MQ ((0, ADD(AC; MD;0), MQ1:n-1 )!(0, AC, MQ1:n -1 )) * (MQ n , MQ n )

NB INC(NB); /* se verific dac s-au analizat toi biii /* dac nu, se reia operaia 5. v/(NB (mTn)) / (4) /* se stabilete semnul rezultatului 6. AC0 MD0 MQ0 7. DEAD END END SEQUENCE END Exemplu: S considerm: MD = -5/16 denmulitul reprezentat n cod direct pe 5 bii = 10101 MQ = -6/16 nmulitorul reprezentat n cod direct pe 5 bii
4-9

NB 000 001

MD 1 0101 0101

AC 00000 00000 00101 00101 00010 00101 00111 00011 00001 00001

MQ 1 0110 0011

Observaii: bitul de semn nu particip 0 deplasare AC,MQ 1 adunare AC AC + MD deplasare AC,MQ 1 adunare AC AC + MD

010

0101

1001

011 100

deplasare AC,MQ 0101 1100 0 deplasare AC,MQ 0101 1110 stabilire semn AC0=MD0 MQ0 1110 Rezultatul se obine n AC,MQ AC,MQ = 000011110= 30/256 Dac se dorete o reprezentare numai pe 5 bii, atunci se face o rotunjire prin adaus AC=00010, AC = 2/16

4.1.2.2 nmulirea prin metoda BOOTH Pentru a realiza operaia de nmulire a unor numere reprezentate n complement fa de 2, prin adunri repetate, este necesar s evalum nmulitorul. Evaluarea nmulitorului reprezentat n complement fa de 2 se realizeaz utiliznd formula lui Booth. Dac y = ysy-1y-2...y-n este un numr n complement fa de 2 valoarea reprezentat de acest numr este: formula lui Booth

Vy = - y s + y i * 2 i
i=1

Justificare: a) dac y este pozitiv y = 0y-1y-2...y-n are valoarea


Vy = 0 + y i * 2 -i
i=1 n

ceea ce reprezint ntr-adevr evaluarea unui numr pozitiv reprezentat n cod direct. b) dac y este negativ, y = 1y-1y-2...y-n, valoarea sa este obinut evalund [-y]c. Dar tim c [y]c =[y]i + 2-n , deci V[-y ]c = y -1 y -2 ...y -n + 2 -n unde y - j = 1 y j n V[-y ]c = y i * 2 -i + 2 n i =1
n V[- y]c = (1 y i ) * 2 -i + 2 n i=1

n n V[-y ]c = 2 i y i * 2 -i + 2 n i =1 i =1

4-10

V[-y ]c = 1 y i * 2 -i
i =1

Dar V y = V[- y ]c deci V[ y ]c = 1 +

y
i =1

* 2 - i ceea ce justific formula lui Booth.

Metoda de nmulire Booth este adecvat pentru nmulirea numerelor reprezentate n virgul fix, cod complementar. Fie : x = xsx-1x-2...x-n y = ysy-1y-2...y-n dou numere n virgul fix, subunitare, reprezentate n cod complementar. Pentru a realiza z = x * y este acelai lucru cu a realiza z = x * Vy Booth a propus ca o cifrele de reprezentare ale nmulitorului, n cod complementar, s se nlocuiasc cu diferena a dou cifre adiacente: y-j y-j-1 - y-j 1 j n unde y-n-1 se consider 0. n acest caz: z = x * ((y-1-ys)+(y-2-y-1)*2-1+(y-3-y-2)*2-2+...+(y-n-1-y-n)*2-n) z = x * (-ys + y-1*2-1 + y-2*2-2 +...+y-n*2-n) z = x * Vy z=x*y ceea ce ne arat c nlocuirea propus de Booth conduce de altfel la realizarea direct a produsului, unde numerele sunt reprezentate n cod complementar. nlocuirea propus de Booth nu se realizeaz efectiv, ci conduce numai la analiza a doi bii adiaceni din reprezentarea nmulitorului (nu a unui singur bit cum se realiza la nmulirea direct). Astfel dac y-j-1 y-j 0 0 se deplaseaz produsul parial cu o poziie la dreapta; 0 1 se adun denmulitul la produsul parial i apoi se deplaseaz rezultatul cu o poziie la dreapta; 1 0 se scade denmulitul din produsul parial i apoi se deplaseaz rezultatul cu o poziie la dreapta; 1 1 se deplaseaz produsul parial cu o poziie la dreapta; Dup ultima operaie, n care particip i bitul de semn, nu se mai efectueaz operaia de deplasare. Pentru realizarea unui dispozitiv aritmetic paralel care efectueaz nmulirea a doi operanzi reprezentai n virgul fix, cod complementar prin metoda Booth se propune schema bloc din Fig. 4.5.

4-11

OP1 n+1 0 MD n 0 AC n 0 1 MQ

OP2 n+1 n n+1

ADD

0 NB

m Unitate de comanda

Unitate aritmetic pentru nmulire prin metoda Booth

Figura 4.5

unde: MD registrul ce pstreaz primul operand (OP1) MQ registrul ce pstreaz al doilea operand (OP2) AC registrul ACUMULATOR ce pstreaz produsul parial NB registrul ce contorizeaz numrul de bii Rezultatul se obine n : AC,MQ Algoritmul de nmulire prin metoda Booth este urmtorul: 1. se citete denmulitul n registrul MD; se citete nmulitorul n registrul MQ; se iniializeaz registrul acumulator AC 0; se iniializeaz registrul contor de bii NB 0; se iniializeaz bitul MQn+1 0 ; 2. dac MD=0 sau MQ=0 atunci rezultat 0 , gata operaie; 3. att timp ct NB < n + 1 dac MQn,MQn+1 = 01 atunci AC AC + MD; dac MQn,MQn+1 = 10 atunci AC AC - MD; deplaseaz dreapta cu o poziie AC,MQ; incrementeaz NB; 4. dup ultima operaie nu este necesar deplasarea
4-12

Descrierea AHPL a unitii de comand a dispozitivului de nmulire n cod direct este:


MODULE MEMORY INPUTS OUTPUTS

: Dispozitiv de nmulire metoda Booth; : MD[n+1]; AC[n+1]; MQ[n+2]; NB[m] /* 2m n+1 */ : OP1[n+1]; OP2[n+1] : AC[n+1]; MQ[n+1]

/* se ncarc operanzii i se iniializeaz AC i NB 1. MD OP1; MQ OP2,0; AC (n+1)T0; NB mT0 /* se verific dac un operand este egal cu 0 2. ((/MD) (/MQ))/(4) /* dac da atunci se iniializeaz MQ i gata operaie 3. MQ (n+1)T0 (9) /* se analizeaz doi bii adiaceni cureni dac sunt 00 sau 11 se face numai deplasare mai puin la ultima operaie (la care a participat i bitul de semn) cnd nu se mai face deplasarea */ 4. MQ n MQ n +1 /(6) /* dac biii adiaceni sunt 10 sau 01 se realizeaz scdere respectiv adunare i deplasare */
5. AC (ADD(AC; MD;1) ! (ADD(AC; MD;0)) * (MQ n , MQ n +1 )

/* se verific dac s-au analizat toi biii


6. (v/(NB mT(n + 1))/(9) /* dac nu s-au analizat toi biii se incrementeaz contorul de bii 7. NB INC(NB)

/* se realizeaz deplasarea produsului parial mpreun cu nmulitorul 8. AC,MQ AC0,AC,MQ0:n-1 (4) 9. DEAD END END SEQUENCE END Exemplu: S considerm operanzii : MD = -5/16 reprezentat n cod complementar pe 5 bii 11011 MQ = -6/16 reprezentat n cod complementar pe 5 bii 11010

4-13

NB 000 001 010 011 100

MD 11011 11011 11011 11011 11011

AC 00000 00000 00101 00101 00010 11011 11101 11110 00101 00011 00001

MQ 110100 011010 011010 101101 110110 111011

Observaii: starea iniial 00 deplasare AC,MQ 10 scdere ACAC-MD deplasare AC,MQ 01 adunare AC AC+MD deplasare AC,MQ 10 scdere AC AC-MD deplasare AC,MQ 11 deplasare AC,MQ dar fiind ultima nu se efectueaz. Rezultatul se obine n AC,MQ AC,MQ = 000011110 AC,MQ = 30/256

4.1.2.3 nmulirea n complement fa de 2 n cazul numerelor reprezentate n cod complementar utilizarea nmulirii directe necesit cicli suplimentari pentru procesul de complementare. Fie : x = xsx-1x-2...x-n y = ysy-1y-2...y-n dou numere n virgul fix, subunitare, reprezentate n cod complementar. Pentru realizarea nmulirii trebuie ca denmulitul s fie adunat cu el nsui de un numr de ori dat de valoarea lui y. Practic trebuie calculat |y| i dup aceea trebuie adunat sau sczut de |y| ori denmulitul cu el nsui n funcie de semnul lui y, dac este pozitiv sau negativ. Pentru a obine |y| trebuie s complementm pe y dac acesta este negativ i s-l lsm nemodificat dac acesta este pozitiv. nmulirea n complement fa de 2 se poate realiza n aceeai manier cu nmulirea n cod direct, numai c n loc s complementm operanzii nainte de efectuarea operaiei, vom complementa numai nmulitorul simultan cu examinarea biilor acestuia. Realizarea complementului nmulitorului se face pe baza regulii: se parcurg de la dreapta la stnga biii acestuia (de la bitul cmps la bitul cms), zerourile i prima unitate ntlnite rmn neschimbate, restul biilor se neag. Amintind c la operaia de nmulire n cod direct analiza biilor se fcea ncepnd cu bitul cmps, i dac bitul era 1 se realiza adunarea denmulitului la produsul parial i deplasarea produsului parial, iar dac bitul era egal cu 0 se realiza numai deplasarea produsului parial. n cazul nmulirii n cod complementar se aplic aceeai regul ca la cod direct pn la ntlnirea primei uniti, dup care se interpreteaz biii invers ca la metoda n cod direct. n acest fel se realizeaz din "mers" complementarea nmulitorului. Pentru realizarea unui dispozitiv aritmetic paralel care efectueaz nmulirea a doi operanzi reprezentai n virgul fix, cod complementar prin metoda nmulirii n complement fa de 2 se propune schema bloc din Fig. 4.6.

4-14

OP1

OP2

0 MD

0 AC

0 1 MQ

ADD

NB

Unitate de comanda

Unitate aritmetic pentru nmulire n cod complementar


Figura 4.6

unde: MD registrul ce pstreaz primul operand (OP1) MQ registrul ce pstreaz al doilea operand (OP2) AC registrul ACUMULATOR ce pstreaz produsul parial NB registrul ce contorizeaz numrul de bii Rezultatul se obine n : AC,MQ Algoritmul de nmulire prin metoda complementului fa de 2 este urmtorul: 1. se citete denmulitul n registrul MD; se citete nmulitorul n registrul MQ; se iniializeaz registrul acumulator AC 0; se iniializeaz registrul contor de bii NB 0; 2. dac MD=0 sau MQ=0 atunci rezultat 0 , gata operaie; 3. att timp ct MQn = 0 deplaseaz aritmetic dreapta cu o poziie MQ; incrementeaz contorul de bii NB; 4. att timp ct NB < n+1 dac MQ0 = 0 atunci AC AC + MD altfel AC AC - MD 5. dac MQ0 = 0 atunci deplaseaz aritmetic dreapta AC,MQ cu extensie de bit MD0
altfel deplaseaz aritmetic dreapta AC, MQ cu extensie de bit MD 0

4-15

incrementeaz contor de bii NB /* din acest moment interpretm invers biii nmulitorului dac acesta este negativ. 6. dac MQ0 = 0 (nmulitor pozitiv) atunci dac MQn = 1 ( bitul curent din nmulitor) atunci salt la 4 altfel salt la 5 altfel dac MQn = 0 ( bitul curent din nmulitor) atunci salt la 4 altfel salt la 5

Descrierea AHPL a unitii de comand a dispozitivului de nmulire n cod direct este:


MODULE MEMORY INPUTS OUTPUTS

: Dispozitiv de nmulire cod direct; : MD[n+1]; AC[n+1]; MQ[n+1]; NB[m] /* 2mn */ : OP1[n+1]; OP2[n+1] : AC[n+1]; MQ[n+1]

/* se ncarc operanzii se iniializeaz AC i NB */ 1. MD OP1; MQ OP2; AC (n+1)T0; NB mT0 /* se verific dac un operand este egal cu zero 2. ((v/MD) (v/MQ))/(4) /* dac da se iniializeaz MQ i gata operaie 3. MQ (n+1)T0 (10) /* se elimin zerourile cele mai puin semnificative 4. (MQn)/(6) 5. MQ MQ0,MQ0:n-1 NB INC(NB) (4) /* pentru primul 1 ntlnit se adun sau se scade denmulitul la produsul parial n functie de semnul nmulitorului. 6. AC (ADD(AC; MD;0) ! ADD(AC; MD;1)) * ( MQ 0 , MQ 0 )

4-16

/* se deplaseaz produsul parial, mpreun cu nmulitorul cu o poziie la dreapta cu extensia bitului de semn al denmulitului (direct sau negat) n funcie de semnul nmulitorului se incrementeaz totodat i contorul de bii.

7. AC, MQ1:n ((MD0 ! MD0 ) * (MQ0! MQ0 )), AC, MQ1:n -1 NB INC(NB)
/* se verific dac s-au parcurs toi bii, dac da, gata operaie 8. (v/(NB (mTn))/(10) /* din acest moment se realizeaz complementarea din "mers" interpretnd invers biii nmulitorului numai dac acesta este negativ. 9. ((MQ n-1 MQ 0 ), MQ n-1 MQ 0 ) /(6,7) 10.DEAD END END SEQUENCE END
4.1.3 mprirea n virgul fix Operaia de mprire n binar se realizeaz dup principii asemntoare calculului manual. mprirea se reduce la o serie de scderi succesive ale mpritorului din restul parial. Dup modul n care se efectueaz succesiunea operaiilor de scdere sau alte operaii care au n fond acelasi efect, se disting trei metode pricipale: - metoda comparaiei; - metoda refacerii restului parial (metoda regenerrii); - metoda n care nu se reface restul parial. Metoda aleas depinde n primul rnd de forma de reprezentare a numerelor n calculator. Metodele comparaiei i regenerrii se aplic numai numerelor reprezentate n cod direct iar ultima metod se aplic oricrei forme de reprezentare necesitnd totui nite corecii. Pentru primele dou metode dac numerele se pstreaz sub o alt form dect cea n mrime i semn trebuie fcut o transformare a formei de reprezentare. n cazul mpririi apar dou probleme: - abandonarea efecturii operaiei de mprire dac mpritorul este egal cu 0, sau dac dempritul este mai mare dect mpritorul, pentru reprezentare n virgul fix, numere subunitare sau dac dempritul este mai mic dect mpritorul, pentru reprezentare n virgul fix, numere ntregi; - rotunjirea rezultatului. 4.1.3.1 mprirea n virgul fix prin metoda comparaiei Metoda comparaiei se utilizeaz n cazul n care operanzii sunt reprezentai n cod direct. Fie : x = xsx-1x-2...x-n y = ysy-1y-2...y-n dou numere n virgul fix, subunitare, reprezentate n cod direct care ndeplinesc condiiile |x| < |y| i y 0. Vom considera: 4-17

x = xs x-1 x-2... x-n dempritul; y = ys y-1 y-2... y-n mpritorul; q = qs q-1 q-2... q-n ctul; ri = risri-1ri-2...ri-n al i-lea rest parial; r = rs r-1 r-2... r-n restul mpririi; Conform teoremei fundamentale a mpririi avem: x=q*y+r unde |x| < |y| i y 0 Etapele operaiei de mprire sunt: Iniial se presupune primul rest parial r0 = |x|. Dac restul parial curent ri este mai mare dect mpritorul se efectueaz operaia de scdere a mpritorului din restul parial i se genereaz ca cifr a ctului valoarea 1. n caz contrar nu se efectueaz operaia de scdere i se genereaz ca cifr a ctului valoarea 0. n ambele situaii restul parial se deplaseaz la stnga cu o poziie i devine noul rest parial. Deci: r0 = |x| r1 = 2 * r0 - q-1 * |y| unde dac 2*r0 > |y| atunci q-1 = 1 altfel q-1 = 0 r2 = 2 * r1 - q-2 * |y| unde dac 2*r1 > |y| atunci q-2 = 1 ... altfel q-2 = 0 ... ri = 2 * ri-1 - q-i * |y| unde dac 2*ri-1 > |y| atunci q-i = 1 altfel q-i = 0 innd seama c : 2-i * ri = 2-i+1 * ri-1 - 2-i * q-i * |y| nlocund prima relaie n a doua, a doua n a treia, etc i nmulind cu 2-n ambii termeni ai expresiei finale se obine: 2-n*rn = |x| - 2-1*q-1*|y| - 2-2*q-2*|y| - ... -2-n*q-n*|y| |x| / |y| = |q| + 2-n* rn / |y| Restul mpririi este r = 2-n*rn Operaia de mprire se termin n cazul n care restul parial curent ri = 0 sau cnd s-a calculat un numr de bii ai ctului egal cu lungimea cuvntului calculator n care se reprezint operanzii. Pentru realizarea unui dispozitiv aritmetic paralel care efectueaz mprirea a doi operanzi reprezentai n virgul fix, cod direct prin metoda comparaiei se propune schema bloc din Fig.4.7.

4-18

OP1

OP2

0 MD

0 AC

0 1 MQ

COMPARATOR

ADD

NB

Unitate de comanda

Unitate aritmetic pentru mprire prin metoda comparaiei


Figura 4.7

unde: MD registrul ce pstreaz mpritorul MQ registrul ce pstreaz ctul AC registrul ACUMULATOR ce pstreaz iniial dempritul i restul parial curent NB registrul ce contorizeaz numrul de bii Rezultatul se obine n : MQ ctul AC restul Algoritmul de mprire prin metoda comparaiei este urmtorul: 1. se citete mpritorul n registrul MD; se citete dempritul n registrul AC; se ncarc eventual registrul MQ cu extensia dempritului dac acesta este pe lungime dubl; se iniializeaz registrul contor de bii NB 0; Bitul de semn al operanzilor nu particip dect la stabilirea semnului. 2. dac MD = 0 atunci mprire prin zero, gata operaie. dac AC MD atunci depire, gata operaie dac AC = 0 i MQ MD atunci rezultat zero, gata operaie. 3. deplaseaz AC,MQ la stnga cu o poziie cu introducere MQn 0 AC,MQ 2(AC,MQ),0
4-19

4. att timp ct NB < n dac AC MD atunci AC AC - MD AC,MQ 2(AC,MQ),1 deplaseaz cu introducere 1 altfel AC,MQ 2(AC,MQ),0 deplaseaz cu introducere 0 incrementeaz contorul de bii NB INC(NB) 5. stabilete semn rezultat MQs = ACs MDs Se obine n registrul MQ ctul mpririi iar n registrul AC restul. Exemplu: S considerm: AC = -5/16 dempritul reprezentat n cod direct pe 5 bii = 10101 MD = -6/16 mpritorul reprezentat n cod direct pe 5 bii = 10110 MD AC MQ Observaii: 1 1 0 bitul de semn nu particip 0000 r0 = |x| 0110 0101 0000 2r0 (2r0 > |y|) 1010 realizm scderea 0110 0100 0001 r1 = 2r0 - |y| ; q-1=1 1000 0010 2r1 (2r1 > |y|) 0110 realizm scderea 0010 0011 r2 = 2r1 - |y| ; q-2=1 0100 0110 2r2 (2r2 < |y|) 0100 0110 r3 =2r2 q-3=0 1000 1100 2r3 (2r3 > |y|) 0110 realizm scderea 0010 1101 r4 = 2r3 - |y| ; q-4=1 Semn MQs = 1 1 = 0 Ctul MQ = 01101 Restul AC = 0010 (restul se consider nmulit cu 2-n) Verificare: AC/MD = 01101 rest 00000010 Se observ c se respect relaia fundamental a mpririi: |x| = |y| * |q| + r 0.0101 = 0.0110 * 0.1101 + 0.00000010 Pentru realizarea dispozitivului de mprire prin metoda comparaiei trebuie s existe un circuit de comparare. Pentru a evita necesitatea acestui circuit de comparare se poate realiza compararea prin scdere. n acest fel se ajunge la metoda refacerii restului parial.
4.1.3.2 Metoda de mprire cu refacerea restului parial 4-20

NB 000 001 010 011 100

Aceast metod poate fi considerat ca un caz special al metodei comparaiei. Compararea se poate face prin scdere. Dac diferena este pozitiv (echivalent cu faptul c restul parial este mai mare dect mpritorul) se obine drept cifr a ctului 1 i procesul continu cu o deplasare la stnga cu o poziie. Dac diferena este negativ (echivalent cu faptul c restul parial este mai mic dect mpritorul) se obine drept cifr a ctului 0. Deoarece n acest caz nu trebuia s scdem mpritorul din restul parial, trebuie s procedm la refacerea restului parial prin adunarea mpritorului la acesta. Pentru realizarea unui dispozitiv aritmetic paralel care efectueaz mprirea a doi operanzi reprezentai n virgul fix, cod direct prin metoda refacerii restului parial se propune schema bloc din Fig. 4.8, asemntoare cu cea folosit pentru metoda comparaiei n care nu mai exist comparatorul.
OP1 OP2

0 MD

0 AC

0 1 MQ

ADD

NB

Unitate de comanda

Unitate aritmetic pentru mprire prin metoda refacerii


Figura 4.8

unde: MD registrul ce pstreaz mpritorul MQ registrul ce pstreaz ctul AC registrul ACUMULATOR ce pstreaz iniial dempritul i restul curent NB registrul ce contorizeaz numrul de bii Rezultatul se obine n : MQ ctul AC restul Algoritmul de mprire prin metoda refacerii restului parial este urmtorul: 1. se citete mpritorul n registrul MD; se citete dempritul n registrul AC; se ncarc eventual registrul MQ cu extensia dempritului dac acesta este pe lungime dubl; 4-21 parial

se iniializeaz registrul contor de bii NB 0; bitul de semn al operanzilor nu particip dect la stabilirea semnului 2. dac MD = 0 atunci mprire prin zero, gata operaie. dac AC MD atunci depire, gata operaie dac AC = 0 i MQ MD atunci rezultat zero, gata operaie. 3. deplaseaz AC,MQ la stnga cu o poziie cu introducere MQn 0 AC,MQ 2(AC,MQ),0 4. att timp ct NB < n AC AC - MD dac rezultat pozitiv atunci AC,MQ 2(AC,MQ),1 deplaseaz cu introducere 1 altfel AC AC + MD reface restul parial AC,MQ 2(AC,MQ),0 deplaseaz cu introducere 0 incrementeaz contorul de bii NB INC(NB) 5. stabilete semn rezultat MQs = ACs MDs Se obine n registrul MQ ctul mpririi iar n registrul AC restul. Exemplu: S considerm: AC = -5/16 dempritul reprezentat n cod direct pe 5 bii = 10101 MD = -6/16 mpritorul reprezentat n cod direct pe 5 bii = 10110

4-22

NB 000 001

MD 1 0110

AC 1 0101 1010 0110 0100 1000 0110 0010 0100 0110 10010

MQ 0 0000 0001 0010 0011 0110

010

011 100

0110 + 0100 1000 0110 0010

0110 1100 1101

Observaii: bitul de semn nu particip r0 = |x| 2r0 realizm scderea r1 = 2r0 - |y| rezultat pozitiv ; q-1=1 2r1 realizm scderea r2 = 2r1 - |y| rezultat pozitiv ; q-2=1 2r2 realizm scderea r3 = 2r2 - |y| rezultat negativ refacem restul parial q-3=0 2r3 realizm scderea r4 = 2r3 - |y| ; q-4=1 Semn MQs = 1 1 = 0 Ctul MQ = 01101 Restul AC = 0010 (restul se consider nmulit cu 2-n)

Verificare: AC/MD = 01101 rest 00000010 Se observ c se respecta relaia fundamental a mpririi: |x| = |y| * |q| + r 0.0101 = 0.0110 * 0.1101 + 0.00000010 Metoda mpririi prin refacerea restului parial elimin comparatorul, n schimb necesit un timp destul de lung datorit procesului de refacere a restului parial.
4.1.3.3 Metoda de mprire fr refacerea restului parial Analiznd metoda refacerii restului parial se observ c fiecare operaie de refacere a restului parial este urmat de o scdere a mpritorului n ciclul urmtor. Ultimele dou operaii adunarea mpritorului ( operaia de refacere) i scderea (la ciclul urmtor) mpritorului din restul parial deplasat la stnga cu o poziie, pot fi combinate ntr-o singur operaie de adunare a mpritorului la ciclul urmtor (n loc de scdere)

2*(ri + |y|) - |y| echivalent cu 2*ri + |y| Metoda de mprire n care restul parial nu se reface const n a scdea sau aduna mpritorul din restul parial curent n funcie de semnele mpritorului i restului parial. Dac aceste semne sunt identice se efectueaz o scdere i se introduce drept cifr a ctului valoarea 1, iar dac semnele sunt diferite se face o adunare i se ia ca cifr a ctului valoarea 0. 4-23

Algoritmul de mprire prin metoda refacerii restului parial este urmtorul: 1. se citete mpritorul n registrul MD; se citete dempritul n registrul AC; se ncarc eventual registrul MQ cu extensia dempritului dac acesta este pe lungime dubl; se iniializeaz registrul contor de bii NB 0; 2. dac MD = 0 atunci mprire prin zero, gata operaie. dac AC MD atunci depire, gata operaie dac AC = 0 i MQ MD atunci rezultat zero, gata operaie. 3. deplaseaz AC,MQ la stnga cu o poziie cu introducere MQn 0 AC,MQ 2(AC,MQ),0 4. att timp ct NB < n dac ACs MDs = 0 atunci AC AC - MD AC,MQ 2(AC,MQ),1 deplaseaz cu introducere 1 altfel AC AC + MD AC,MQ 2(AC,MQ),0 deplaseaz cu introducere 0 incrementeaz contorul de bii NB INC(NB) 5. Dac operanzii sunt reprezentai n alt cod dect cod direct se face o corecie. stabilete semn rezultat MQs = ACs MDs Se obine n registrul MQ ctul mpririi iar n registrul AC restul. Exemplu: S considerm: AC = 5/16 dempritul reprezentat n cod direct pe 5 bii = 00101 MD = 6/16 mpritorul reprezentat n cod direct pe 5 bii = 00110

4-24

NB 000 001

MD 00110

AC 00101 01010 00110 00100 01000 00110 00010 00100 00110 10010

MQ 0000 0001 0010 0011 0110

010

011 100

10010 10100 00110 00010

0110 1100 1101

Observaii: r0 = |x| 2r0 realizm scderea r1 = 2r0 - |y| ACs = MDs ; q-1=1 2r1 realizm scderea r2 = 2r1 - |y| ACs = MDs ; q-2=1 2r2 realizm scderea r3 = 2r2 - |y| ACs MDs q-3=0 2r3 realizm adunarea r4 = 2r3 + |y| ; q-4=1 Semn MQs = 0 0 = 0 Ctul MQ = 01101 Restul AC = 0010 ( restul se consider nmulit cu 2-n)

Verificare: AC/MD = 01101 rest 00000010 Se observ c se respect relaia fundamental a mpririi: |x| = |y| * |q| + r 0.0101 = 0.0110 * 0.1101 + 0.00000010 Exemplu: S considerm: AC = -5/16 dempritul reprezentat n cod complementar pe 5 bii = 11011 MD = -6/16 mpritorul reprezentat n cod complementar pe 5 bii = 11010

4-25

NB 000 001

MD 11010

AC 11011 10110 00110 11100 11000 00110 11110 11100 00110 00010

MQ 0000 0001 0010 0011 0110

010

011 100

00010 00100 11010 11110

0110 1100 1101

Observaii: r0 = |x| 2r0 realizm scderea( + c'2 MD) r1 = 2r0 - |y| ACs = MDs ; q-1=1 2r1 realizm scderea( + c'2 MD) r2 = 2r1 - |y| ACs = MDs ; q-2=1 2r2 realizm scderea( + c'2 MD) r3 = 2r2 - |y| ACs MDs q-3=0 2r3 realizm adunarea r4 = 2r3 + |y| ; q-4=1 ACs = Mds Semn MQs = 1 1 = 0 Ctul MQ = 01101 Restul AC = 11110 ( restul se consider nmulit cu 2-n)

Verificare: AC/MD = 01101 rest 11111110 Se observ c se respect relaia fundamental a mpririi: |x| = |y| * |q| + r 1.1011 = 1.1010 * 0.1101 + 1.11111110 n exemplele artate s-a considerat efectuarea efectiv a operaiei de scdere, adunare, specificnd numai rezultatul. n cazul n care biii reprezentrii particip direct la operaia de nmulire prin metoda fr refacerea restului parial este necesar o corecie care const n a aduna -1 + 2-n.
4.2 Operaii aritmetice n virgul mobil 4.2.1 Adunarea i scderea n virgul mobil

Fie o reprezentare n virgul mobil : x = xsmc1c2...ckm-1m-2...m-n unde xsm reprezint semnul mantisei C = c1c2...ck reprezint caracteristica M = m-1m-2...m-n reprezint mantisa Caracteristica corespunde reprezentrii cu exponent deplasat, C = E + depls. n cazul de fa depls
4-26

= 2k-1

Caracteristica este ntotdeauna pozitiv C 0 iar mantisa este normalizat, 1/bM1, unde b este baza de reprezentare. n general b=2 sau b=16. Valoarea reprezentat de numr este Vx = (-1)Xsm*M*bE Utilizarea reprezentrii cu caracteristic n loc de reprezentarea cu exponent (dei calculul valorii numrului se face n funcie de exponent) se face deoarece introduce avantaje cum ar fi: - nu este necesar un bit explicit de semn pentru exponent; - circuitele de comparare utilizate pentru reprezentarea n virgul fix se utilizeaz i n virgul mobil; - valoarea zero se reprezint cu 0 n toi biii de reprezentare ai numrului, ceea ce constituie o posibilitate de verificare. Pentru operaiile n virgul mobil considerm operanzii: x = xsxcxm primul operand y = ysycym al doilea operand i z = zszczm rezultatul unde am notat simplificat : xs semnul mantisei lui x xc caracteristica lui x xm mantisa lui x Operaiile de adunare i scdere a mantiselor se pot efectua numai dac caracteristicile sunt egale. Etapele algoritmului de adunare n virgul mobil sunt: 1. egalizarea caracteristicilor (dac este posibil) ce const n compararea caracteristicilor celor doi operanzi x, y i deplasarea la dreapta a mantisei operandului cu exponentul mai mic, de un numr de ori egal cu diferena dintre caracteristici. Dac diferena dintre caracteristici este mai mare dect numrul de bii ai mantisei, rezultatul adunrii este egal cu numrul cel mai mare (deoarece, prin deplasarea la dreapta a mantisei de un numr de ori mai mare dect numrul de bii alocai reprezentrii acesteia, mantisa devine 0). 2. adunarea mantiselor dup regulile cunoscute. 3. analiza rezultatului i efectuarea unor operaii intermediare. dac n urm adunarii mantiselor (xs = ys) se obine depire, mantisa trebuie deplasat la dreapta cu o poziie cu preluarea depirii, i caracteristica incrementat (pentru ca rezultatul s nu se modifice). Este posibil ca n ncercarea de incrementare a caracteristicii s depim valoarea maxim a acesteia. n acest caz se poziioneaz un indicator de stare eof 1 , exponent overflow, ceea ce indic faptul c a existat o depire superioar i rezultatul nu se poate reprezenta n calculator. Dac n urma adunrii mantiselor (xs ys) se obine un rezultat nenormalizat (zm < 1/b) se realizeaz normalizarea mantisei ce const n deplasarea acesteia cu o poziie la stnga i decrementarea caracteristicii. Operaiile de deplasare i decrementare continu pn cnd M 1/b. n timpul efecturii normalizrii, se verific dac caracteristica a ajuns la valoarea minim i nu mai poate fi decrementat. n caz de depire inferioar, se poziioneaz un indicator de stare euf 1, exponent underflow, ceea ce reprezint c numrul este foarte mic i poate fi aproximat cu 0.

4-27

Algoritmul de realizare a operaiei de adunare a doi operanzi reprezentai n virgul mobil este urmtorul: Fie : x = xsxcxm primul operand y = ysycym al doilea operand 1. ncarc primul operand n registrul A ncarc al doilea operand n registrul B 2. dac Ac > Bc atunci dac Ac - Bc > nr. bii mantisa atunci C A gata operaie. altfel deplaseaz Bm de Ac-Bc ori Cc Ac altfel dac Ac < Bc atunci dac Bc - Ac > nr. bii mantisa atunci C B gata operaie. altfel deplaseaz Am de Bc-Ac ori Cc Bc altfel Cc Bc 3. Cm Am + Bm 4. dac As = Bs atunci dac exist depire la Cm atunci dac Cc Cmax atunci eof 1, gata operaie altfel deplaseaz dreapta Cm cu prel dep. incrementeaz Cc stabilete semn rezultat gata operaie. altfel dac Cm = 0 atunci CsCcCm 0, zero curat n toi biii. gata operaie altfel att timp ct Cm < 1/b, Cm nenormalizat dac Cc 0 atunci euf 1, gata operaie deplaseaz stnga Cm decrementeaz Cc stabilete semn rezultat gata operaie. Pentru efectuarea operaiei de scdere n virgul mobil, algoritmul este asemntor cu cel al adunrii cu deosebirea c se modific dou decizii. Una cnd Bc-Ac>nr. bii mantis, rezultatul este C -B i se modific ramurile deciziei cnd As=Bs. Algoritmul pentru operaia de scdere este:
4-28

1. ncarc primul operand n registrul A ncarc al doilea operand n registrul B 2. dac Ac > Bc atunci dac Ac - Bc > nr. bii mantisa atunci C A gata operaie. altfel deplaseaz Bm de Ac-Bc ori Cc Ac altfel dac Ac < Bc atunci dac Bc - Ac > nr. bii mantisa atunci C -B gata operaie. altfel deplaseaz Am de Bc-Ac ori Cc Bc altfel Cc Bc 3. Cm Am - Bm 4. dac As Bs atunci dac exist depire la Cm atunci dac Cc Cmax atunci eof 1, gata operaie altfel deplaseaz dreapta Cm cu prel dep. incrementeaz Cc stabilete semn rezultat gata operaie. altfel dac Cm = 0 atunci CsCcCm 0, zero curat n toi biii. gata operaie altfel att timp ct Cm < 1/b, Cm nenormalizat dac Cc 0 atunci euf 0, gata operaie deplaseaz stnga Cm decrementeaz Cc stabilete semn rezultat gata operaie.
4.2.2 nmulirea n virgul mobil

Operaia de nmulire n virgul mobil const n a aduna caracteristicile celor doi operanzi i de a nmuli mantisele. Trebuie inut seama de faptul c rezultatul trebuie s fie reprezentat sub aceeai form, adic exponentul rezultatului s fie deplasat iar mantisa normalizat. Prin adunarea celor dou caracteristici se obine exponentul rezultatului adunat cu de dou ori deplasamentul. De aceea trebuie fcut corecia necesar. Algoritmul pentru operaia de nmulire este:
4-29

1. ncarc primul operand n registrul A ncarc al doilea operand n registrul B 2. dac A = 0 sau B = 0 atunci C 0 , se stabilete zero n toi biii gata operaie. 3. Cc Ac + Bc 4. dac Cc > Cmax atunci eof 1, gata operaie 5. dac Cc < Cmin atunci euf 1, gata operaie. 6. corecteaz Cc (prin scderea unui deplasament) 7. Cm Am * Bm (utiliznd una din metodele prezentate ) 8. dac Cm < 1/b , Cm nenormalizat atunci dac Cc = 0 atunci euf 1, gata operaie altfel deplaseaz stnga Cm decrementeaz Cc altfel gata operaie Deoarece ambii exponeni erau deplasai: Ac = Ae + depls Bc = Be + depls n urma adunrii de la pasul 3. s-a obinut: Cc = Ae + depls + Be + depls = Ce + depls + depls, i a fost necesar corecia de la pasul 6. 6. Aceast corecie nu a fost realizat imediat dup adunarea caracteristicilor, deoarece este mai uor s detectm depirea superioar i inferioar dac exist de dou ori deplasamentul. n urma operaiei de adunare a caracteristicilor se obine depire superioar dac bitul cel mai semnificativ al lui Cc este 1 i exist depire spre stnga. n urma operaiei de adunare a caracteristicilor se obine depire inferioar dac bitul cel mai semnificativ al lui Cc este 0 i nu exist depire spre stnga.

4-30

S-ar putea să vă placă și