Sunteți pe pagina 1din 4

Arhitectura calculatoarelor 200

Opera!iile aritmetice de baz" pentru aceste numere sunt prezentate n Tabelul


6.#2. Pentru adunare $i sc"dere este necesar ca ambii operanzi s" aib" acela$i exponent.
Pentru aceasta poate fi necesar" deplasarea virgulei binare a unuia din operanzi pentru a
realiza alinierea mantiselor. nmul!irea $i mp"r!irea nu necesit" aceast" opera!ie.
Tabelul 6.12. Opera!ii aritmetice cu numere reprezentate n virgul" mobil".
Opera-
!ie
Rezultat
x +y
y x
E
y
E E
x
E E B M B M
y y x
+

, ) (
x - y
y x
E
y
E E
x
E E B M B M
y y x

, ) (
x y
y x
E E
y x
B M M
+
) (
x y
y x
E E
y x
B M M

) (
6.3.". Adunarea #i sc$derea n virgul$ mobil$
Adunarea $i sc"derea n VM sunt mai complexe dect nmul!irea $i mp"r!irea.
Aceasta deoarece pentru adunarea sau sc"derea corect" a celor dou" numere, trebuie s"
se realizeze egalizarea exponen!ilor acestora. Aceasta implic" compararea m"rimii ex-
ponen!ilor $i apoi alinierea mantisei num"rului cu exponentul mai mic. Algoritmul pen-
tru adunare $i sc"dere are patru etape principale:
#. Alinierea mantiselor;
2. Adunarea sau sc"derea mantiselor;
3. Normalizarea rezultatului;
4. Rotunjirea rezultatului.
Organigrama pentru adunare $i sc"dere este prezentat" n Figura 6.#7.
naintea opera!iei, cei doi operanzi trebuie transfera!i n registrele care vor fi
utilizate de UAL. Dac" formatul de reprezentare n VM cuprinde un bit implicit al manti-
sei, acest bit trebuie reprezentat n mod explicit pentru opera!ie. n mod tipic, exponen!ii
$i mantisele vor fi p"strate n registre separate, $i vor fi reunite dup" ob!inerea rezulta-
tului.
Deoarece adunarea $i sc"derea sunt identice cu excep!ia semnului diferit al
operandului al doilea, n cazul opera!iei de sc"dere se schimb" semnul sc"z"torului. Ur-
m"toarea etap" este alinierea mantiselor. Aceasta necesit" compararea celor doi expo-
nen!i $i apoi alinierea mantisei num"rului cu exponentul mai mic. Alinierea se realizeaz"
prin deplasarea repetat" la dreapta a mantisei cu cte o pozi!ie $i incrementarea expo-
nentului pn" cnd cei doi exponen!i devin egali. Dac" n urma acestui proces mantisa
care a fost deplasat" devine 0, atunci se raporteaz" ca rezultat cel"lalt num"r. Astfel,
6. Unitatea aritmetic" $i logic" 20#
dac" cele dou" numere au exponen!i care difer" n mod semnificativ, num"rul 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 apari!iei
unei dep"$iri cu un bit a mantisei rezultatului. n acest caz, mantisa rezultatului este de-
plasat" la dreapta cu o pozi!ie $i exponentul este incrementat. n urma deplas"rii, poate
apare o dep"$ire a exponentului; n acest caz, se raporteaz" o dep"$ire, iar opera!ia este
oprit".
Figura 6.17. Adunarea $i sc"derea n virgul" mobil" (z x y).
Arhitectura calculatoarelor 202
n urm"toarea etap" se normalizeaz" rezultatul. Normalizarea const" n depla-
sarea mantisei rezultatului la stnga pn" cnd bitul c.m.s. devine #. Dup" fiecare depla-
sare, se decrementeaz" exponentul, ceea ce poate determina o dep"$ire inferioar" a ex-
ponentului. n final, rezultatul este rotunjit. Procedura de rotunjire este prezentat" n
sec!iunea 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,5
#0
$i 0,4375
#0
n binar utiliznd algoritmul din Figura
6.#7. Se presupune c" precizia mantisei este de 4 bi!i, exponentul real este cuprins ntre
#26 $i #27, iar deplasamentul exponentului este #27.
Solu!ie
Numerele scrise n binar utiliznd nota!ia $tiin!ific" sunt:
0,5
#0
= 0,# = 0,# 2
0
= #,000 2
#
0,4375
#0
= 0,0### = 0,0### 2
0
= #,##0 2
2
Etapele algoritmului sunt urm"toarele:
#. Se deplaseaz" la dreapta mantisa num"rului mai mic (#,## 2
2
) $i se incre-
menteaz" exponentul pn" cnd acesta devine egal cu exponentul num"rului
mai mare:
#,##0 2
2
= 0,### 2
#
2. Se adun" mantisele:
#,0 2
#
+ (0,### 2
#
) = 0,00# 2
#
3. Se normalizeaz" suma, verificnd dac" apare dep"$ire superioar" sau inferioa-
r":
0,00# 2
#
= 0,0#0 2
2
= 0,#00 2
3
= #,000 2
4
Deoarece #26 4 #27, nu exist" dep"$ire superioar" sau inferioar" (expo-
nentul deplasat este 4 + #27 = #23, care este cuprins ntre 0 $i 255).
4. Se rotunje$te suma:
#,000 2
4
Suma se poate exprima pe 4 bi!i, astfel nct rotunjirea nu este necesar". Suma
este deci:
#,000 2
4
= 0,000# = #/#6
#0
= 0,0625
#0
Aceasta este suma corect" dintre 0,5
#0
$i 0,4375
#0
.
6. Unitatea aritmetic" $i logic" 203
Multe calculatoare sau procesoare dispun de circuite dedicate pentru cre$terea
vitezei opera!iilor n VM. Figura 6.#8 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. Diferen!a dintre ex-
ponen!i controleaz" cele trei multiplexoare. Acestea selecteaz" (de la stnga la dreapta)
exponentul mai mare, mantisa num"rului mai mic, respectiv mantisa num"rului mai ma-
re. Mantisa num"rului mai mic se deplaseaz" la dreapta, iar apoi se adun" mantisele uti-
liznd 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