Sunteți pe pagina 1din 4

200

Arhitectura calculatoarelor

Operaiile aritmetice de baz pentru aceste numere sunt prezentate n Tabelul 6.12. Pentru adunare i scdere este necesar ca ambii operanzi s aib acelai exponent. Pentru aceasta poate fi necesar deplasarea virgulei binare a unuia din operanzi pentru a realiza alinierea mantiselor. nmulirea i mprirea nu necesit aceast operaie. Tabelul 6.12. Operaii aritmetice cu numere reprezentate n virgul mobil.
Operaie Rezultat

x+y x-y xy xy

(M x B (M x B

Ex E y

+ M y ) B , Ex E y
Ey

Ex E y

M y ) B , Ex E y
Ey Ex + E y

(M x M y ) B (M x M y ) B

Ex E y

6.3.1. Adunarea i scderea n virgul mobil


Adunarea i scderea n VM sunt mai complexe dect nmulirea i mprirea. Aceasta deoarece pentru adunarea sau scderea corect a celor dou numere, trebuie s se realizeze egalizarea exponenilor acestora. Aceasta implic compararea mrimii exponenilor i apoi alinierea mantisei numrului cu exponentul mai mic. Algoritmul pentru adunare i scdere are patru etape principale: 1. 2. 3. 4. Alinierea mantiselor; Adunarea sau scderea mantiselor; Normalizarea rezultatului; Rotunjirea rezultatului.

Organigrama pentru adunare i scdere este prezentat n Figura 6.17. naintea operaiei, cei doi operanzi trebuie transferai n registrele care vor fi utilizate de UAL. Dac formatul de reprezentare n VM cuprinde un bit implicit al mantisei, acest bit trebuie reprezentat n mod explicit pentru operaie. n mod tipic, exponenii i mantisele vor fi pstrate n registre separate, i vor fi reunite dup obinerea rezultatului. Deoarece adunarea i scderea sunt identice cu excepia semnului diferit al operandului al doilea, n cazul operaiei de scdere se schimb semnul scztorului. Urmtoarea etap este alinierea mantiselor. Aceasta necesit compararea celor doi exponeni i apoi alinierea mantisei numrului cu exponentul mai mic. Alinierea se realizeaz prin deplasarea repetat la dreapta a mantisei cu cte o poziie i incrementarea exponentului pn cnd cei doi exponeni devin egali. Dac n urma acestui proces mantisa care a fost deplasat devine 0, atunci se raporteaz ca rezultat cellalt numr. Astfel,

6. Unitatea aritmetic i logic

201

dac cele dou numere au exponeni care difer n mod semnificativ, numrul mai mic va fi neglijat. n continuare, se adun mantisele, innd cont de semnele acestora. Deoarece semnele pot fi diferite, rezultatul poate fi 0. Exist de asemenea posibilitatea apariiei unei depiri cu un bit a mantisei rezultatului. n acest caz, mantisa rezultatului este deplasat la dreapta cu o poziie i exponentul este incrementat. n urma deplasrii, poate apare o depire a exponentului; n acest caz, se raporteaz o depire, iar operaia este oprit.

Figura 6.17. Adunarea i scderea n virgul mobil (z x y).

202

Arhitectura calculatoarelor

n urmtoarea etap se normalizeaz rezultatul. Normalizarea const n deplasarea mantisei rezultatului la stnga pn cnd bitul c.m.s. devine 1. Dup fiecare deplasare, se decrementeaz exponentul, ceea ce poate determina o depire inferioar a exponentului. n final, rezultatul este rotunjit. Procedura de rotunjire este prezentat n seciunea 6.3.3. Dac n urma rotunjirii rezultatul nu mai este normalizat, procedura de normalizare este repetat.

Exemplul 6.9
S se adune numerele 0,510 i 0,437510 n binar utiliznd algoritmul din Figura 6.17. Se presupune c precizia mantisei este de 4 bii, exponentul real este cuprins ntre 126 i 127, iar deplasamentul exponentului este 127.

Soluie
Numerele scrise n binar utiliznd notaia tiinific sunt: 0,510 0,437510 = 0,1 = 0,1 20 = 1,000 21 = 0,0111 = 0,0111 20 = 1,110 22

Etapele algoritmului sunt urmtoarele: 1. Se deplaseaz la dreapta mantisa numrului mai mic (1,11 22) i se incrementeaz exponentul pn cnd acesta devine egal cu exponentul numrului mai mare: 1,110 22 = 0,111 21 2. Se adun mantisele: 1,0 21 + (0,111 21) = 0,001 21 3. Se normalizeaz suma, verificnd dac apare depire superioar sau inferioar: 0,001 21 = 0,010 22 = 0,100 23 = 1,000 24 Deoarece 126 4 127, nu exist depire superioar sau inferioar (exponentul deplasat este 4 + 127 = 123, care este cuprins ntre 0 i 255). 4. Se rotunjete suma: 1,000 24 Suma se poate exprima pe 4 bii, astfel nct rotunjirea nu este necesar. Suma este deci: 1,000 24 = 0,0001 = 1/1610 = 0,062510 Aceasta este suma corect dintre 0,510 i 0,437510.

6. Unitatea aritmetic i logic

203

Multe calculatoare sau procesoare dispun de circuite dedicate pentru creterea vitezei operaiilor n VM. Figura 6.18 prezint o schem bloc a unui circuit de adunare n VM.

Figura 6.18. Schema bloc a unui circuit de adunare n virgul mobil.

Mai nti se scade exponentul unui operand din exponentul celuilalt operand utiliznd UAL1 pentru a determina care este exponentul mai mare. Diferena dintre exponeni controleaz cele trei multiplexoare. Acestea selecteaz (de la stnga la dreapta) exponentul mai mare, mantisa numrului mai mic, respectiv mantisa numrului mai mare. Mantisa numrului mai mic se deplaseaz la dreapta, iar apoi se adun mantisele utiliznd UAL2. Pentru normalizare se deplaseaz apoi suma la stnga i se decrementeaz exponentul. Circuitul de rotunjire genereaz rezultatul final.

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