Sunteți pe pagina 1din 15

Aritmetica în sistemele de calcul

1. Sisteme de numeraţie

Un sistem de numeraţie este reprezentat prin totalitatea regulilor de reprezentare a


numerelor, cu ajutorul unor simboluri numite cifre. Cifra este un simbol care reprezintă o
cantitate întreagă.
Baza (rădăcina) sistemului de numeraţie este numărul de simboluri diferite permise
pentru reprezentarea numerelor.
În sistemele de calcul se utilizează sistemul de numeraţie binar, B 2 = {0,1}, acesta
prezentând o serie de avantaje:
 existenţa unei corespondenţe biunivoce cu stările stabile ale unui circuit electronic
digital;
 are o aritmetică simplă;
 analiza şi sinteza blocurilor funcţionale ale calculatorului se pot efectua cu ajutorul
algebrei booleene, construită pe mulţimea B2.

Conversia unui număr dintr-o bază de numeraţie α într-o nouă bază de numeraţie β
se face examinând separat partea întreagă şi partea fracţionară.
Să luăm, de exemplu, numărul 121,45 în zecimal. Se doreşte transformarea acestuia
în baza 2. Pentru a putea realiza acest lucru, vom privi numărul dat ca două numere
distincte: partea întreagă 121 şi partea fracţionară 0,45. Prima dată vom transforma numărul
121 în binar, prin împărţiri succesive la 2 şi prin luarea resturilor obţinute la împărţiri în
ordinea inversă a obţinerii.
12110 = 11110012
Pentru a transforma partea fracţionară 0,45 în binar va trebui să efectuăm înmulţiri
succesive cu 2 şi să preluăm partea întreagă a rezultatelor.
0,45 * 2 = 0,9 -> 0
0,9 * 2 = 1,8 -> 1
0,8 * 2 = 1,6 -> 1
0,6 * 2 = 1,2 -> 1

Algoritmul se opreşte în momentul în care partea fracţionară devine 0 sau s-a atins
precizia dorită (numărul de cifre pentru reprezentarea rezultatului).
0,4510 = 0,011100112
Prin concatenarea rezultatelor parţiale se obţine rezultatul final al conversiei. Astfel:
121,4510 = 1111001,011100112
Observaţie: În timp ce numerele întregi se pot reprezenta exact în binar, numerele
subunitare se reprezintă aproximativ, făcând excepţie numai acele numere subunitare care
se pot scrie sub forma de sumă de puteri negative ale lui 2 (0,5; 0,25 etc.).

Pentru transformarea inversă, din binar în zecimal, vom înmulţi biţii numărului cu
puterile lui 2 corespunzătoare rangului cifrei.
10110101,01101012 = 1*27 + 0*26 + 1*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20 + 0*2-1 +
1*2-2 + 1*2-3 + 0*2-4 + 1*2-5 + 0*2-6 + 1*2-7 ≈ 181,414

2. Reprezentarea numerelor întregi

Numerele întregi se reprezintă în calculator în formatul cu virgulă fixă. Numărul de biţi


utilizaţi pentru reprezentare (n), determină numărul de valori distincte reprezentabile (2 n).
Pentru reprezentarea în calculator a numerelor întregi fără semn se utilizează următoarele
coduri:
a) codul binar ponderat – poziţia fiecărui bit din reprezentare determină ponderea sa
în calculul valorii. Numărul se reprezintă prin valoarea sa, pe toţi cei n biţi ai
reprezentării, domeniul de valori fiind [0, 2n - 1].
Ex.: 1101 => 13
b) codul Gray – are proprietatea că două valori adiacente în cod diferă printr-un singur
bit. În tabelul următor este prezentat codul Gray pe 4 biţi.

Valoare (hexa) Cod binar Cod Gray


0 0000 0000
1 0001 0001
2 0010 0011
3 0011 0010
4 0100 0110
5 0101 0111
6 0110 0101
7 0111 0100
8 1000 1100
9 1001 1101
A 1010 1111
B 1011 1110
C 1100 1010
D 1101 1011
E 1110 1001
F 1111 1000

În multe aplicaţii se lucrează însă cu numere întregi cu semn (numere algebrice), deci
este necesară reprezentarea unui astfel de număr, folosind bitul de semn. Numerele
algebrice pozitive se reprezintă întotdeauna prin valoare (mărime), având bitul de semn egal
cu 0. Numerele negative se pot reprezenta în calculator utilizând diferite coduri. Dintre
aceste coduri de reprezentare fac parte:

a) codul direct
Numerele întregi se reprezintă prin mărime (valoare absolută) şi semn. Pentru
numerele negative, bitul cel mai semnificativ (de semn) este 1, iar celalţi n-1 biţi
servesc pentru reprezentarea valorii absolute a numărului.
Ex.: N = -5 pe 8 biţi => 10000101

b) codul invers (complement faţă de 1)


Pentru numerele negative, bitul de semn este 1, ceilalţi n-1 biţi servind pentru
reprezentarea valorii absolute negate a numărului. Negarea se realizează la nivel de
bit: biţii 0 devin 1 şi biţii 1 devin 0.
Ex.: N = -5 pe 8 biţi => 11111010

c) codul complementar (complement faţă de 2)


Pentru reprezentarea numerelor negative se aplică următoarea regulă de
complementare: se reprezintă numărul în valoare absolută, apoi se inversează bit cu
bit, inclusiv bitul de semn (care devine 1) şi se adună 1 la rezultatul obţinut. Deci,
complementul faţă de 2 se obţine din complementul faţă de 1, la care se adaugă 1.

Ex.: N = -5 pe 8 biţi se reprezintă astfel:


|N| = 5, adică 00000101
prin inversare devine 11111010+
1
11111011

d) cod în exces
Această codificare constă în adunarea unei valori constante la fiecare număr întreg
(pozitiv sau negativ) care se reprezintă. Valoarea constantă notată E care se adună,
este de regulă 2n-1, cu n numărul de biţi ai reprezentării.
Matematic, un număr întreg N se reprezintă în cod exces E prin: E + N.
Ex.: Numerele N1 = 5 şi N2 = -5 se reprezintă pe n = 8 biţi, în exces 27 = 128, prin:

128 + 5 = 133 respectiv 128 + (-5) = 123

E 10000000 10000000
N 00000101 11111011
10000101 01111011

Fie D domeniul de numere întregi ce se pot reprezenta pe n biţi: D = [-2 n-1, 2n-1-1].
Utilizând codul exces 2n-1, domeniul D se transformă în domeniul de valori pozitive D’ = [0, 2 n-
1].
Deci, codul în exces poate transforma un domeniu de numere algebrice într-un
domeniu de numere aritmetice. Avantajul este că operaţiile cu numere aritmetice se
implementează mai simplu (în hardware sau în software) decât operaţiile cu numere
algebrice.

3. Operaţii cu numere reprezentate în virgulă fixă

3.1. Adunarea şi scăderea în complement faţă de doi

Operaţiile de adunare şi scădere se reduc la operaţia de adunare a numerelor


reprezentate în cod complementar. Se adună cei doi operanzi bit cu bit, inclusiv biţii de
semn, iar eventualul transport care rezultă de la bitul de semn se va neglija. Rezultatul este
obţinut în cod complementar.

Exemple:
a) x = 9, y = 5

00001001+ 9 + 5 = 14
00000101
00001110

b) x = 9, y = -5
Mai întâi vom reprezenta -5 în complement faţă de doi:
-5 => 11111011
După care realizăm adunarea:
00001001+ 9-5=4
11111011
00000100

c) x = 5, y = -9

y = -9 în complement faţă de 2 va fi: -9 => 11110111

00000101+ 5 – 9 = -4
11110111
11111100

Rezultatul obţinut este negativ (bitul de semn are valoarea 1), reprezentat în
complement faţă de 2. Pentru a afla valoarea absolută a rezultatului va trebui să îl
complementăm din nou faţă de 2.
Prin inversare se obţine: 00000011+
1
00000100 =4

3.2. Înmulţirea numerelor fără semn

Regulile de înmulţire binară sunt prezentate mai jos:

Deînmulţit Înmulţitor Produs


0 0 0
0 1 0
1 0 0
1 1 1

Prezentăm mai jos înmulţirea a două numere binare de câte 4 biţi:


deînmulţitul 1011 11
înmulţitorul 1101 13
1011
0000
1011
1011
produs 10001111 143

Rezultatul se obţine pe lungime dublă, realizându-se trunchierea acestuia la lungimea


simplă, dacă este necesar.
Pentru operaţia de înmulţire pot fi stabilite următoarele reguli:
1) dacă bitul LSB al înmulţitorului este 1, se scrie dedesubt deînmulţitul deplasat cu o
poziţie la stânga;
2) dacă LSB este 0 se scrie dedesubt un număr de zerouri egal cu numărul de cifre al
deînmulţitului şi apoi se face deplasarea cu o poziţie la stânga;
3) pentru fiecare bit al înmulţitorului se repetă paşii 1) sau 2) după caz;
4) se adună toate produsele parţiale pentru a forma rezultatul final.
3.3. Împărţirea numerelor fără semn

Operaţia de împărţire poate fi privită ca o scădere repetată a împărţitorului din


deîmpărţit. Numărul care arată de câte ori se poate aplica scăderea formează câtul, iar
reziduul rămas după ultima scădere formează restul.

1101 10 13:2 => cât 6, rest 1


10 110
10
10
01
00
01

3.4. Înmulţirea numerelor în complement faţă de 2. Metoda lui Booth

Înmulţirea a două numere binare cu semn utilizând deplasarea şi adunarea


produselor parţiale ridică unele probleme complicate privind testarea semnelor şi execuţia
corecţiilor necesare.
O metodă alternativă ar consta în salvarea semnelorcelor două numere, conversia
numerelor negative în numere pozitive şi apoi realizarea operaţiei de înmulţire conform
algoritmului descris mai sus. Dacă semnele operanzilor sunt diferite, rezultatul este negativ şi
produsul se va converti înapoi în complement faţă de 2.
Complicaţiile metodelor descrise anterior pot fi înlăturate folosind metoda lui Booth
unde, deasemenea, procedura nu ţine cont de semnul înmulţitorului. În această metodă
cifrele înmulţitorului sunt examinate în perechi, începând cu cea mai puţin semnificativă
pereche; deînmulţitul este adunat sau scăzut din produsul parţial acumulat, în funcţie de
informaţia obţinută în urma comparaţiei biţilor înmulţitorului. Algoritmul pentru această
metodă poate fi enunţat astfel:
1) dacă cifrele comparate sunt 00 sau 11 nu se efectuează nimic şi se
deplasează înmulţitorul şi produsul parţial cu o poziţie spre dreapta;
2) dacă cifrele comparate sunt 10, se scade deînmulţitul (adică se adună
complementul său faţă de doi) din produsul parţial acumulat şi se deplasează
cu o poziţie la dreapta:
3) dacă cifrele comparate sunt 01, se adună deînmulţitul la produsul parţial
acumulat şi se deplasează cu o poziţie la dreapta.
Obs.: La deplasarea la dreapta a unui număr, se repetă bitul de semn în partea stângă.
Pentru prima comparaţie se plasează un 0 după bitul LSB, prima comparaţie
făcându-se între acest bit şi bitul LSB.

Ex.: D = +12 = 0,1100



bitul de semn

I = -14 = 1,0010 -14 este scris în complement faţă de doi

deînmulţitul 0,1100 +12


înmulţitorul 1,0010[0] -14
0,000000000
00 => depl. dreapta 0,000000000 primul produs parţial
10 => scădere 1,0100
1,010000000 al doilea produs partial
depl. dreapta 1,101000000
01 => adunare 0,1100
ignoră carry 0,011000000 al treilea produs partial
depl. dreapta 0,001100000
00 => depl.dreapta 0,000110000 al patrulea prod. partial
10 => scădere 1,0100
1,010110000
depl. dreapta 1,101011000 rezultatul înmulţirii

Rezultatul este negativ => complementare faţă de doi:

0,010100111 inversare rezultat


1 adună 1
0,010101000 = 168

Deci, 12*(-14) = -168.

Obs.: Înainte de începerea înmulţirii, numerele negative se complementează faţă de doi.

3.5. Împărţirea numerelor în complement faţă de doi. Algoritmul cu restaurare.

Iniţial se examinează semnul deîmpărţitului şi al împărţitorului, pentru a determina


semnele câtului şi restului.

Deîmpărţit Împărţitor Cât Rest


>0 >0 >0 >0
>0 <0 <0 >0
<0 >0 <0 <0
<0 <0 >0 <0

Mărimile câtului şi restului se determină după ce atât deîmpărţitul cât şi împărţitorul


se convertesc în numere pozitive, dacă este cazul. După ce mărimile câtului şi restului au
fost determinate, se convertesc în complement faţă de doi.
Metoda utilizată mai jos se numeşte algoritmul cu restaurare. El poate fi sintetizat astfel:

1. se aliniază biţii cei mai semnificativi ai deîmpărţitului şi împărţitorului;


2. se scade împărţitorul din deîmpărţit (adică se adună complementul faţă de doi al
împărţitorului la deîmpărţit);
3. dacă noul bit din poziţia cea mai semnificativă este 1, rezultatul este negativ, se
regenerează deîmpărţitul, se deplasează la dreapta împărţitorul şi se preia bitul
pentru cât ca fiind 0;
4. dacă noul bit din poziţia cea mai semnificativă este 0, rezultatul este pozitiv, se
deplasează împărţitorul la dreapta şi se preia bitul pentru cât ca fiind 1;
5. se repetă paşii 2) şi 3) sau 4) până când LSB-ul împărţitorului şi al deîmpărţitului se
aliniază.

Obs.: La deplasarea împărţitorului la dreapta se repetă bitul de semn.

Exemplu: D = 179 = 0,10110011


Î = 12 = 0,1100 => complement faţă de doi = 1,0100

0,10110011
1,0100 scade împărţitorul (adună compl. faţă de doi)
1,11110011 rezultat negativ =>restaurare deîmpărţit
preia 0 pentru cât
0,10110011
1,10100 depl. dreapta împărţitor şi scade
ignoră carry 0,01010011 rezultat pozitiv => preia 1 pentru cât
1,110100 depl. dreapta împărţitor şi scade
ignoră carry 0,00100011 rezultat pozitiv => preia 1 pentru cât
1,1110100 depl. dreapta împărţitor şi scade
ignoră carry 0,00001011 rezultat pozitiv => preia 1 pentru cât
1,11110100 depl. dreapta împărţitor şi scade
1,11111111 rezultat negaitv =>restaurare deîmpărţit
preia 0 pentru cât
restul 0,00001011 deîmpărţit restaurat

Deci, câtul = 0,1110 = 14


restul = 0,00001011 = 11
4. Reprezentarea cifrelor zecimale

Numerele zecimale, alcătuite din cifrele 0-9, se reprezintă în diferite coduri. Aceste coduri
sunt utilizate mai ales de sisteme sau de dispozitive pe 4 biţi. Cel mai utilizat cod este codul
zecimal codificat binar, BCD (Binary Coded Decimal). Cifrele de la 0 la 9 sunt reprezentate
prin valori binare echivalente, pe câte 4 biţi, conform tabelului următor:

Cifra Cod BCD


0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001

Avantajul acestei codificări este corespondenţa directă între cifra zecimală şi valoarea
sa. O altă modalitate de reprezentare a cifrelor zecimale este codul BCD în exces 3. Cifrele
zecimale sunt reprezentate pe câte 4 biţi, prin valorile cuprinse între 3 (0011) şi 12 (1100).
Pentru sistemele cu dispozitive care utilizează numere în cod BCD, este necesară o
operaţie de conversie din binar în BCD şi invers.

4.1. Conversia din binar în BCD

Regula de conversie este următoarea: se deplasează numărul binar spre stânga,


începând cu bitul cel mai semnificativ. Înainte de deplasare se adună 3 la decadele care
conţin un număr mai mare decât 4.
Fie N2 = 10101101
NBCD N2
0000 0000 0000 ← 10101101
0000 0000 0001 ← 0101101
0000 0000 0010 ← 101101
0000 0000 0101 + 01101
0011
0000 0000 1000 ← 01101
0000 0001 0000 ← 1101
0000 0010 0001 ← 101
0000 0100 0011 ← 01
0000 1000 0110 + 1
0011 0011
0000 1011 1001 ← 1
0001 0111 0011

Rezultatul este NBCD = 173

4.2. Conversia din BCD în binar

Regula de conversie este următoarea: se deplasează numărul BCD spre dreapta, cu


câte o poziţie, începând cu bitul cel mai puţin semnificativ. După deplasare se scade 3 din
acele decade care conţin un număr mai mare sau egal cu 8.

Fie NBCD = 173


NBCD N2
1 0111 0011 →
1011 1001 - 1
0011 0011
1000 0110 → 1
100 0011 → 01
10 0001 → 101
1 0000 → 1101
1000 - 01101
0011
0101 → 01101
010 → 101101
01 → 0101101
0 → 10101101
010101101

Rezultatul este N2 = 101011012 = 17310

5. Reprezentarea numerelor reale

Numerele care intervin în calcule sunt numere nu neapărat întregi, unele sunt foarte
mari, altele foarte mici, şi eventual cu multe cifre semnificative. De aceea este necesară o
reprezentare a lor în care să se facă distincţie între ordinul de mărime şi precizie (numărul de
cifre semnificative).
În notaţia ştiinţifică, un număr este reprezentat astfel: N = M * 10 E, unde E este
exponentul, un număr întreg pozitiv sau negativ, ce determină ordinul de mărime al
numărului, iar M este mantisa, un număr fracţionar, ce determină precizia numărului.
Echivalentul în calculator al acestei notaţii este formatul cu virgulă mobilă, folosit
pentru reprezentarea numerelor reale din matematică.
Nu există o corespondenţă biunivocă între numerele reale şi numerele în virgulă
mobilă. Astfel, numerele 0,998*109 şi 0,999*109 sunt consecutive în formatul în virgulă
mobilă, dar în realitate între ele există o infinitate de numere reale. Cele mai importante
diferenţe între numerele reale din matematică şi numerele reprezentate în virgulă mobilă
sunt domeniul finit şi mulţimea discretă de valori. Domeniul finit şi discret este determinat de
capacitatea fizică limitată a memoriei calculatorului.
Numerele se reprezintă în formatul cu virgulă mobilă prin bitul de semn al numărului,
exponent şi mantisă:
n-1 0
S Exponent Mantisă
e biţi m biţi

În continuare vom folosi următoarele notaţii:


b – baza de reprezentare a numărului;
bm – baza de reprezentare a mantisei;
e – numărul de biţi pe care se reprezintă exponentul;
m – numărul de cifre ale mantisei;
p – numărul de cifre ale părţii fracţionare a mantisei.

De remarcat faptul că informaţia care nu se modifică nu se reprezintă. Astfel avem


baza de numeraţie şi virgula, a cărei poziţie a fost stabilită prin convenţie (de exemplu, în
stânga bitului cel mai semnificativ al mantisei, adică m = p).
Mantisa se reprezintă, de regulă, în valoare absolută (prin mărime), baza de
reprezentare bm fiind 2, 4, 8 sau 16. Corespunzător, mantisa este o succesiune de cifre în
baza 2, 4, 8 sau 16, fiecare cifră fiind reprezentată în memoria calculatorului pe 1, 2, 3 şi
respectiv 4 biţi. Condiţia de normalizare, care asigură unicitatea reprezentării numărului real
în calculator, stabileşte numărul de cifre ale părţii fracţionare a mantisei. Considerând
mantisa subunitară, având prima cifră după virgulă semnificativă, vom avea următoarea
condiţie de normalizare:
0,1bm <= mantisa < 1.
Dacă bm este 2, bitul cel mai semnificativ al mantisei este întotdeauna 1. Acest bit, în
general, nu se reprezintă în memoria calculatorului (se numeşte bit ascuns), efectul fiind
acela de a dubla numărul de mantise distincte ce se pot reprezenta.
Observaţie: Tehnica bitului ascuns se referă doar la reprezentarea numerelor în
memoria calculatorului, nu şi la operaţiile efectuate de unitatea aritmetico-logică.
Pentru a creşte precizia reprezentării, trebuie mărit numărul de cifre ale mantisei. De
regulă, acest număr se dublează, de unde rezultă şi denumirea de reprezentare în dublă
precizie. Numărul total de mantise ce se pot reprezenta este:
Nmantise = (b – 1) * bm-1.
Pentru reprezentarea exponentului pe e biţi, care este întotdeauna un număr întreg
pozitiv sau negativ, se utilizează, în general, un cod în exces (2 e-1). Avantajul este acela de a
lucra numai cu numere întregi fără semn, deci operaţiile sunt mai simple. De regulă, e = 7
sau 8 biţi.
Prin reprezentarea în cod exces 2e-1, domeniul de valori al exponentului D = [-(2 e-1-1),
(2e-1-1)] se transformă în D’ = [1, 2e – 1]. Această convenţie se mai numeşte şi notaţie
polarizată, polarizarea fiind numărul care trebuie scăzut din reprezentarea normală, fără
semn, pentru a se obţine valoarea reală a exponentului.
Valoarea 0 a exponentului în cod exces este rezervată pentru reprezentarea
numărului 0.
Pentru a mări domeniul de reprezentare, se alege baza numărului 4, 8 sau 16. Baza
numărului (b) şi baza mantisei (bm) sunt, de regulă, egale.

Exemple de formate de reprezentare în virgulă mobilă sunt formatul DEC, formatul


IBM şi standardul IEEE. În cazul standardului IEEE, baza de reprezentare este b = 2. În
simplă precizie, un număr se reprezintă pe 32 de biţi. Exponentul se reprezintă pe e = 8 biţi,
în cod exces 127. Valoarea 255 a exponentului în cod exces are semnificaţia de ±∞, după
cum bitul de semn este 0 sau 1. Mantisa are m = 24 de biţi, din care p = 23 de biţi pentru
partea fracţionară. Mantisa se reprezintă în valoare absolută, folosind tehnica bitului ascuns.
Condiţia de normalizare a mantisei este:
1,000…002 <= mantisă <=1,111…112
Deoarece partea întreagă a mantisei este întotdeauna 1, aceasta nu se mai reprezintă în
calculator. Se vor reprezenta doar cifrele de la dreapta virgulei, în total 23 de biţi. Precizia
reprezentării este de 6 cifre zecimale.
31 30 23 22 0
S Exponent + 127 Mantisa normalizată

În dublă precizie, un număr se reprezintă pe 64 de biţi, cu m = 53 de biţi, p = 52 de


biţi, e = 11 biţi, iar exponentul este în cod exces 1023 (2 10-1). Se poate observa că domeniul
de reprezentare este mult mai mare decât în simplă precizie, iar precizia a crescut la 15 cifre
zecimale exacte.
31 30 20 19 0
S Exponent + 1023 Mantisa
31 0
Mantisă

5.1. Operaţii cu numere reprezentate în virgulă mobilă

În cadrul acestui paragraf se vor considera numerele reale reprezentate în virgulă


mobilă în formatul standard IEEE, simplă precizie.

5.1.1. Adunarea numerelor în virgulă mobilă

La adunarea a două numere reprezentate în virgulă mobilă, A+B=C, se parcurg


următoarele etape:
a) Se compară exponenţii celor doi operanzi şi, în cazul în care diferă, se va deplasa
mantisa operandului mai mic spre dreapta, cu un număr de poziţii egal cu diferenţa
exponenţilor. Dacă această diferenţă este mai mare decât numărul de biţi pe care se
reprezintă mantisa, rezultatul operaţiei de adunare este mai mare în modul.
b) Se adună mantisele conform regulilor de adunare în virgulă fixă.
c) Dacă la pasul b), a avut loc adunarea efectivă a modulelor mantiselor, iar rezultatul
generează depăşire, Mc se deplasează cu o poziţie spre dreapta şi Ec se incrementează.
Dacă Ec are valoare maximă şi nu se poate incrementa, atunci se poziţionează indicatorul de
depăşire superioară (eof – exponent overflow).
Dacă la pasul b) a avut loc scăderea efectivă a modulelor mantiselor, se vor avea în vedere
două situaţii:
- mantisa rezultatului este 0, caz în care se va face 0 întreg rezultatul (semn şi
exponent)
- mantisa rezultatului este nenormalizată: normalizarea se va realiza prin deplasarea
succesivă cu câte o poziţie spre stânga a mantisei, cu decrementarea exponentului.
Dacă la un moment dat exponentul a ajuns la valoarea minimă şi nu se mai poate
decrementa, se poziţionează indicatorul de depăşire inferioară (euf – exponent underflow).
Exemplu: Să se adune în virgulă mobilă numerele 3,78 şi 0,43.
În primul rând vom transforma cele două numere în binar, în formatul virgulă mobilă
standard. Dacă este necesar, se va face normalizarea şi egalizarea exponenţilor.
3,7810 = 11,11000112 = 1,11100011 * 21
0,4310 = 0,011011102 = 1,101110 * 2-2 = 0,001101110 * 21
1,11100011+
0,00110111
10,00011010
Deci rezultatul adunării este 10,00011010 * 21. Prin normalizarea mantisei se obţine:
1,00001101 * 22.
Pentru reprezentarea rezultatului în formatul standard IEEE 754 simplă precizie va
trebui să realizăm polarizarea exponentului (adunarea lui cu 127).
0 10000001 00001101000000000000000

5.1.2. Înmulţirea numerelor în virgulă mobilă

Iniţial se testează dacă este nul cel puţin unul dintre operanzi, caz în care rezultatul
înmulţirii este, de asemenea, nul. Operaţia de înmulţire în virgulă mobilă constă în adunarea
exponenţilor şi înmulţirea mantiselor.
La adunarea exponenţilor este posibil să apară depăşire superioară (prin înmulţirea a
două numere foarte mari în modul) sau depăşire inferioară (prin înmulţirea a două numere
foarte mici în modul). În aceste cazuri se vor poziţiona în mod corespunzător indicatorii de
depăşire superioară (eof) sau depăşire inferioară (euf).
Dacă la înmulţirea mantiselor rezultatul nu este normalizat, în cazul în care
exponentul Ec nu este minim, se va face o deplasare a mantisei M c cu o poziţie spre stânga,
cu decrementarea exponentului.
La operaţia de refacere a exponentului Ec, se ţine cont că prin adunarea exponenţilor
s-au adunat două deplasamente (2nr_biţi_exponent-1-1), deci se va scădea din exponentul
rezultatului obţinut un deplasament.

Exemplu: Să se înmulţească în virgulă mobilă numerele 8,36 şi 2,74.


În primul rând vom transforma cele două numere în binar, în formatul virgulă mobilă
standard. Dacă este necesar, se va face normalizarea şi egalizarea exponenţilor.
8,3610 = 1000,01012 = 1,0000101 * 23
2,7410 = 10,1011112 = 1,0101111 * 21
1,0000101*
1,0101111
10000101
10000101
10000101
10000101
00000000
10000101
00000000
10000101 .
1,01101011101011
Deci rezultatul final al înmulţirii este 1,01101011101011 * 24.
Pentru reprezentarea rezultatului în formatul standard IEEE 754 simplă precizie va
trebui să realizăm polarizarea exponentului (adunarea lui cu 127):
0 10000011 01101011101011000000000

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