Sunteți pe pagina 1din 42

CAPITOLUL 3

3.1. Sisteme de numeraţie................................................................................ 75


3.2. Conversia bazei de numeraţie ................................................................... 76
3.2.1. Conversia numerelor întregi .............................................................. 77
3.2.2. Conversia numerelor fracţionare ....................................................... 80
3.3. Reprezentarea binară a informaţiei numerice ........................................... 83
3.3.1. Reprezentarea în virgulă fixă (VF).................................................... 83
3.3.2. Reprezentarea în virgulă mobilă ...................................................... 89
3.3.3. Numere şi valori speciale .................................................................. 92
3.3.4. Reprezentarea numerelor întregi zecimale codificate binar (BCD) . 95
3.4. Operaţiile aritmetice în sistemul binar...................................................... 96
3.4.1. Adunarea în binar .............................................................................. 96
3.4.2. Scăderea în binar ............................................................................... 96
3.4.3. Înmulţirea în binar ............................................................................. 96
3.4.4. Împărţirea în binar ............................................................................. 97
3.5. Operaţiile aritmetice în virgulă fixă (VF) ............................................... 100
3.5.1. Adunarea în cod direct (CD) ........................................................... 100
3.5.2. Adunarea/scăderea în cod invers (CI) ............................................. 103
3.5.3. Adunarea/scăderea în cod complementar (CC) ............................... 107
3.6. Operaţii aritmetice în virgulă mobilă (VM) ........................................... 109
3.7. Operaţii aritmetice în codul numeric 8421 ............................................. 110
3.7.1. Adunarea ......................................................................................... 110
3.7.2. Scăderea .......................................................................................... 111
3.8. Probleme rezolvate ................................................................................. 112
3.9. Probleme propuse ................................................................................... 114
3
BAZELE NUMERICE ALE
CALCULATOARELOR

3.1. Sisteme de numeraţie


Un număr reprezintă informaţia a cărei semnificaţie este universal stabilită şi ale
cărei prelucrări au la bază aritmetica. Numerele sunt incluse într-o clasă de codificare
particulară, în care proprietăţile abstracte ale aritmeticii sunt translatate în
mecanismele concrete de calcul asupra codurilor.
Sistemul de numeraţie este format din totalitatea regulilor de reprezentare a
numerelor cu ajutorul unor simboluri numite cifre. Numărul de simboluri permise
pentru reprezentarea cifrei este numit baza sau rădăcina sistemului de numeraţie.
Sistemele de numeraţie pot fi:
 poziţionale (sistemele: zecimal, binar,octal)
 nepoziţional (sistemul roman) În continuare sunt prezentate simbolurile
folosite în cadrul sistemului de numeraţie roman şi valorile zecimale
corespunzătoare acestor simboluri:
 I X C M V L D
 1 10 100 1000 5 50 500

În studiul arhitecturii calculatoarelor ne interesează în mod deosebit (tabelul 3.1):


 reprezentarea binară (baza=2);
 reprezentarea octală (baza=8);
 reprezentarea zecimală (baza=10);
 reprezentarea hexazecimală (b=16).
76 Bazele tehnologiei informaţiei

Tabelul 3. 1. Sisteme de numeraţie

Sistem de numeraţie Baza (b) Cifrele


Binar 2 (0,1)
Octal 8 (0,1,2,3,4,5,6,7)
Zecimal 10 (0,1,2,3,4,5,6,7,8,9)
Hexazecimal 16 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

Fiind dat un număr întreg N, se numeşte reprezentare în baza b, orice succesiune


de cifre a n , a n-1, ..., a 0 care satisface următoarele proprietăţi:
 cifrele lui sunt numere naturale cu proprietatea:
0  ai  b-1 (i = 0n)
 există egalitatea:
N = anbn + an-1bn-1 + ….a0b0
Când succesiunea de cifre are proprietăţile enumerate, prin definiţie, se poate
scrie:
N = anan-1 ….a0 sau (N)b = anan-1 ….a0
Un număr întreg admite o reprezentare în baza b şi numai una. Fiind dat un număr
real R, se numeşte reprezentare în baza b, orice succesiune de cifre an,an-1, ...,a0,a-1, a-
2,...,a-m ce îndeplineşte proprietăţile:
 cifrele ai sunt numere naturale cu proprietatea:

0  ai  b-1 (i   m, n ) ;
 nu există un rang k astfel încât să avem:
ak = ak-1 = ak-2 = … = b-1
 există egalitatea:
R = anbn + an-1bn-1 + ….a0b0 + a-1b-1 +….+ a-mb-m
În situaţia în care succesiunea de cifre are proprietăţile enumerate prin definiţie se
scrie:
R = anan-1….a0, a-1a-2 …. a-m

an este cifra cea mai semnificativă (CCMS) a numărului R, iar a-m este cifra cea mai
puţin semnificativă (CCMPS).

3.2. Conversia bazei de numeraţie


Fiind dat un număr reprezentat în sistemul de numeraţie cu baza b, calculul
cifrelor reprezentării în baza q, q>1 se numeşte conversia din baza b în baza q.
Conversia numerelor dintr-un sistem de numeraţie b în alt sistem de numeraţie cu
baza q se efectuează examinând separat partea întreagă şi partea fracţionară.
Fie (N)b=(NI)b + (NF)b, unde (NI)b - reprezintă partea întreagă a numărului (N)b
Bazele numerice ale calculatoarelor 77

iar (NF)b - reprezintă partea fracţionară.

3.2.1. Conversia numerelor întregi

În noua bază de numeraţie q, partea întreagă [(NI)b] se va scrie:


( N I )b = a n q n + a n-1 q n-1 +     + a0 q 0 ,
unde ai (i = 0, n) sunt cifre ce aparţin sistemului de numeraţie în baza q.
Conversia părţii întregi (NI)b în baza q se va reduce la determinarea coeficienţilor
a i (i = 0, n) , ce se obţin prin împărţirea succesivă a lui (NI)b cu q, astfel:
(NI)b/q=(anqn-1+an-1qn-1+,...,+a1) + a0/q  a0

(NI1)b - partea întreagă Rest


a câtului

(NI1)b/q= (anqn-2++a2) + a1/q  a1

(NI2)b

(NIk)b/q= anqn-k-1+an-1qn-k-2++ak+1 + ak/q  ak

(NI(k+1))b


(NI(n-1)b/q= an + an-1/q  an-1

(NIn)b

(NIn)b/q= 0 + an/q  an
Algoritmul se încheie când partea întreagă a câtului devine nulă. an - reprezintă
cifra cea mai semnificativă iar a0 - cifra cea mai puţin semnificativă.

Exemplul 1. Fiind dat numărul (248)10 să se facă conversia sa în sistemele: binar,


octal şi hexazecimal. (Numerele reprezentate în sistemul zecimal, în mod obişnuit, se
scriu fără specificarea bazei de numeraţie.)
Rezolvarea
Conversia în binar
248/2=124 + 0/2  0 (a0)
124/2= 62 + 0/2  0 (a1)
62/2= 31 + 0/2  0 (a2)
78 Bazele tehnologiei informaţiei

31/2= 15 + 1/2  1 (a3)


15/2= 7 + 1/2  1 (a4)
7/2= 3 + 1/2  1 (a5)
3/2= 1 + 1/2  1 (a6)
1/2= 0 + 1/2  1 (a7)
(248)10=(11111000)2

Conversia în octal
248/8=31 + 0/8  0 (a0)
31/8= 3 + 7/8  7 (a1)
3/8= 0 + 3/8  3 (a2)
(248)10=(370)8

Conversia în hexazecimal
248/16=15 + 8/16  8 (a0)
15/16= 0 + 15/16 F (a1)
(248)10=(F8)H
Calculul simplificat pentru conversia în:
binar octal hexazecimal
248 0 248 0 248 8
124 0 31 7 15 15
62 0 3 3 0
31 1 0
15 1
7 1
3 1
1 1
0

Aşadar (248)10=(11111000)2=(370)8=(F8)H

Conversie rapidă. În cazurile în care între cele două baze de numeraţie (implicate
p
în conversie) există o relaţie de genul: b1=b2 (b1 şi b2 sunt cele două baze, p este un
număr natural mai mare sau egal cu 2) atunci conversia se poate realiza mai rapid.
Pentru a face conversia din baza b2 (b2 < b1) în baza b1, se împarte numărul
reprezentat în b1 în grupe de câte p cifre, de la dreapta la stânga pentru partea
Bazele numerice ale calculatoarelor 79

întreagă şi de la stânga la dreapta pentru partea fracţionară. Dacă ultimul grup de


cifre nu are exact p cifre, se completează cu zerouri pentru a se obţine un grup de p
cifre.
Pentru a face conversia din baza b1 (b1 > b2) în baza b2, pentru fiecare cifră a
numărului din baza b1 se asociază un grup de p cifre în baza b2, obţinându-se astfel
numărul în noua bază b2.

Exemplul 2. Pentru a face conversia în baza 8 sau 16 se poate porni de la


reprezentarea în baza 2 a numărului şi deoarece 8=23 iar 16=24, se pot face grupări de
3 respectiv 4 cifre binare pentru a obţine reprezentarea în aceste baze. În cazul
numerelor întregi gruparea se face începând de la CCMPS.

(248)10=( 11 111 000 )2=(370)8

(248)10=( 1111 1000 )2=(F8)H

Exemplul 3. Pentru a face conversia din baza 8 în baza 2 vom înlocui fiecare
cifră a numărului scris în baza 8 cu un grup de 3 cifre binare, conform tabelului 3.2.

Tabelul 3. 2. Conversia rapidă din baza 8 în baza 2

Cifra din baza 8 Grupul de cifre în baza 2


0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
Folosind datele din tabelul anterior, numărul (734)8 = (111 011 100)2 prin
conversie directă.

Exemplul 4. Pentru a face conversia din baza 16 în baza 2 vom înlocui fiecare
cifră a numărului scris în hexazecimal cu un grup de 4 cifre binare, conform tabelului
3.3.

Tabelul 3.3. Conversia rapidă din baza 16 în baza 2

Cifra din Grupul de cifre în Cifra din Grupul de cifre în


hexazecimal baza 2 hexazecimal baza 2
80 Bazele tehnologiei informaţiei

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

Folosind datele din tabelul anterior, numărul (5A2)16 = (0101 1010 0010)2 prin
conversie directă.

3.2.2. Conversia numerelor fracţionare

Partea fracţionară se poate scrie:

(NF)b = a-1q-1 + a-2q-2 + a-3q-3 + 


unde a-j reprezintă cifre aparţinând sistemului de numeraţie q. Conversia părţii
fracţionare se va reduce la determinarea coeficienţilor a-k (k=1,2,) prin înmulţiri
succesive:
(NF)bq = a-1 + a-2q-1 + a-3q-2 +   a-1

(NF1)b

(NF1)bq = a-2 + a-3q-1 + a-4q-2 +   a-2

(NF2)b
a-1 reprezintă cifra cea mai semnificativă a părţii fracţionare. Teoretic, algoritmul ar
trebui să se încheie când partea fracţionară devine egală cu zero, ceea ce se întâmplă
într-un număr limitat de cazuri. În practică, procedeul are un număr finit de paşi, în
funcţie de precizia aleasă.

Exemplul 5. Fiind dat numărul (0,251)10 să se realizeze conversia în sistemele de


numeraţie: binar, octal şi hexazecimal.

Rezolvarea
a. Conversia în binar
0,2512=0 + 0,502  0 (a -1)
0,5022=1 + 0,004  1 (a -2)
0,0042=0 + 0,008  0 (a -3)
0,0082=0 + 0,016  0 (a -4)
Bazele numerice ale calculatoarelor 81

0,0162=0 + 0,032  0 (a -5)


0,0322=0 + 0,064  0 (a -6)
0,0642=0 + 0,128  0 (a -7)
0,1282=0 + 0,256  0 (a -8)
0,2562=0 + 0,512  0 (a -9)
0,5122=1 + 0,024  1 (a-10)
0,0242=0 + 0,048  0 (a-11)
0,0482=0 + 0,096  0 (a-12)
0,0962=0 + 0,192  0 (a-13)
0,1922=0 + 0,382  0 (a-14)
0,3822=0 + 0,762  0 (a-15)
0,7622=1 + 0,524  1 (a-16)
0,5242=1 + 0,048  1 (a-17)
(0,251)10=(0,01000000010000011)2
b. Conversia în octal
0,2518=2 + 0,008  2 (a -1)
0,0088=0 + 0,064  0 (a -2)
0,0648=0 + 0,512  0 (a -3)
0,5128=4 + 0,096  4 (a -4)
0,0968=0 + 0,768  0 (a -5)
(0,251)10=(0,20040)8
c. Conversia în hexazecimal
0,25116=4 + 0,016  4 (a -1)
0,01616=0 + 0,256  0 (a -2)
0,25616=4 + 0,096  4 (a -3)
(0,251)10=(0,404)H
Calculul simplificat pentru conversia în:

binar octal hexazecimal


0 251 0 251 0 251
0 502 2 008 4 016
1 004 0 064 0 256
0 008 0 512 4 096
0 016 4 096
0 032 0 768
82 Bazele tehnologiei informaţiei

0 064
0 128
0 256
0 512
1 024

Conversia în octal sau hexazecimal se realizează şi din reprezentarea binară a


numărului, grupând câte trei, respectiv patru, cifre binare. Gruparea se va face de la
stânga spre dreapta (invers decât în cazul părţii întregi).

Astfel (0,251)10 = (0, 010 000 000 100 000 110)2 = (0, 200406)8

(0,251)10 = (0, 0100 0000 0100 0001 1000)2 = (0, 40418)H

Exemplul 6. Să se facă conversia numărului (1100011)2 din binar în zecimal.

(1100011)2=126 + 125 + 024 + 023 + 022 + 121 + +120 = (99)10


Exemplul 7. Conversia numărului (110,101)2 din binar în zecimal.

(110,101)2=122 + 121 + 020 + 12-1 + 02-2 + 12-3 = 6 + 0,5 + 0,125 = (6,625)10


Exemplul 8. Conversia numărului (235)8 din octal în zecimal.

(235)8=2  82 + 381 + 580=128 + 24 + 5=(157)10


Exemplul 9. Conversia numărului (23F)H din hexazecimal în zecimal.

(23F)H=2162 + 3161 + 15160=512 + 48 + 15=(575)10


Exemplul 10. Fie numărul (23,65)10. Să se realizeze conversia în sistemele de
numeraţie: binar, octal şi hexazecimal.
Rezolvarea

Conversia părţii Conversia părţii


întregi fracţionare
23 1 0 65
11 1 1 30
5 1 0 60
Bazele numerice ale calculatoarelor 83

2 0 1 20
1 1 0 40
0 0 80
1 60
1 20
0 40

Deci: (23,65)10=(23)10 + (0,65)10=(10111)2 + (0,10100110)2

(23,65)10 = (10 111,1010 0110 )2 = (27,514)8 = (17,A6)H

3.3. Reprezentarea binară a informaţiei numerice


Informaţia numerică se regăseşte în calculatoare reprezentată:
 în virgulă fixă (VF);
 în virgulă mobilă (VM);
 prin coduri numerice (cel mai utilizat codul 8421).

3.3.1. Reprezentarea în virgulă fixă (VF)

a) Reprezentarea prin mărime şi semn (Cod direct - CD).


Un număr reprezentat prin mărime şi semn se poate scrie conform relaţiei:
CD n-1
N = an  2n +  ai  2i
i=  m

0 dacă N 0
an = 
 1 dacă N 0
an este bit de semn, iar ai  {0,1}
pentru i   m, (n  1) şi au fost obţinute în urma conversiei numărului (N) în
sistemul de numeraţie binar. Macheta de reprezentare a numărului N este:
84 Bazele tehnologiei informaţiei

Observaţie. S-a considerat că partea întreagă se reprezintă prin n cifre binare, iar
partea fracţionară prin m cifre binare:
 dacă n = 0  se obţine reprezentarea numerelor subunitare;
 dacă m = 0  se obţine reprezentarea numerelor întregi.

Exemplul 11. Să se reprezinte în CD (pe 16 biţi) numărul (27)10, respectiv


numărul -(27)10 .
Rezolvarea
CD
(27 )10 = (11011) 2  (27 )10 = (0000000000011011) 2

 semn
CD
- (27 )10 = (1000000000011011) 2

b) Reprezentarea prin complement faţă de 1 ( cod invers -CI)


Un număr reprezentat în cod invers se poate scrie:

2  a i  2i dacă N  0
n-1
 n
CI 
0 +
 i=- m
N= n-1
1 2 n +
 
i=- m
a i  2 dacă N  0
i

a i  1  a i pentru i   m, (n  1) iar ai reprezintă cifrele binare ale numărului


N.

Observaţie. Reprezentarea prin complement faţă de 1 se obţine astfel:


Bazele numerice ale calculatoarelor 85

CI
b1. Fie calculând: N = 2n+ 1 -| N |CD - 2- m

NCD este reprezentarea în cod direct a valorii absolute a numărului N.

b2. Fie prin inversarea cifrelor binare (inclusiv cifra de semn) din reprezentarea în
cod direct a numărului în valoare absolută.

Exemplu 12. Să se reprezinte în CI numerele (14)10 şi -(14)10 (reprezentarea pe un


octet).

Rezolvarea
Numerele pozitive se reprezintă în CI la fel ca şi în CD.
CD, CI
(14 )10 = (1110 ) 2 (14 )10 = (0000 1110 ) 2


semn

CI pentru -(14)10 se poate calcula în două variante:

CI 7 b1.
N  28 -  ai  2i - 20
i=0

ai ( i  1,6 ) reprezintă cifrele binare ale numărului (14)10, iar a7="0" este cifra de
semn. Calculând:
1 0000 0000 -
CI
0000 1110
- (14) = (1111 0001 )2
Aşadar:
1111 0010 -
1  semn

1111 0001

b2. Acelaşi rezultat se obţinea dacă se pornea de la reprezentarea în CD a


numărului în valoare absolută, adică (14)10, şi se inversau toate cifrele binare.
86 Bazele tehnologiei informaţiei

CD
(14 )10 = (0000 1110 ) 2

CI
- (14 )10 = (1111 0001 ) 2

c. Reprezentarea
prin complement faţă de 2 (cod complementar - CC)
Forma de scriere este:

 n-1

CC 

0  2
n
+ 
i= m
a i2i dacă N  0
N = n-1
 12 n +
 ~ i
 a i2 dacă N  0
i= m
unde:

n-1 n-1
 ~
a i 2i =  ai  2i + 2-m
i=  m i=  m

şi a i  1  a i iar ai (pentru I = n-1, n-2,...,0,...,-m) reprezintă cifrele binare ale


numărului | N|.
Codul complementar al unui număr se poate obţine astfel:
c1. Fie calculând:
CC
N  2n1 - | N|CD
| N| are aceeaşi semnificaţie ca la
reprezentarea în CI;
c2. Fie adunând 1 la cifra cea mai puţin semnificativă (CCMPS) a reprezentării
numărului în CI;
c3. Dacă se consideră reprezentarea în CD a numărului în valoare absolută,
pentru obţinerea codului complementar, începând de la CCMPS - se lasă
neschimbate toate cifrele de zero, inclusiv prima cifră binară a cărei valoare este 1;
apoi toate celelalte cifre binare se vor inversa, inclusiv cifra de semn.

Exemplul 13. Să se reprezinte în CC numerelele 14 şi -14 (pe un octet).

Rezolvarea
Bazele numerice ale calculatoarelor 87

CD,CI,CC
14 = (0000 1110 )2

semn
Pentru a calcula CC al numărului -14 vom folosi cele trei metode.
c1.
CC 7
- (14 )10 = 28 -  a i  2i ai (i=16) fiind cifrele binare ale numărului
zecimal 14, iar a7 = 0 cifra de semn.
i=0

1 0000 0000 -
CC
0000 1110
1111 0010
- (14 )10 = (1111 0010 )2

c2.

CI
- (14) = (1111 0001 )2
1
CC
- (14) = (1111 0010 )2

c3.
Cifre binare nemodificate
CD
14  ( 000011 10)2

Cifrele binare se vor modifica 0  1 şi 1  0.


CC
 14  (11110010) 2
CC
În sistemul octal sau hexazecimal vom avea: - (14) = (362 )8 = (F 2 ) H

Gruparea a trei cifre binare (respectiv patru cifre binare) se face începând de la
CCMPS (pentru numerele întregi).

Observaţie. În calculatoarele PC-IBM reprezentarea în VF se face pentru


numerele întregi. Se utilizează formatele:

 format întreg pe cuvânt, având macheta:


88 Bazele tehnologiei informaţiei

 formatul scurt:

 formatul lung:

unde:
 0 dacă N  0
 S este bitul de semn şi S = 
 1 dacă N  0
 Ii (i=014|30|62) sunt cifrele reprezentării binare ale numărului. Dacă
N<0 se utilizează reprezentarea prin complement faţă de 2 (CC).

În tabelul 3.4 sunt prezentate formatul, precizia şi domeniul de valori ale datelor
reprezentate în virgulă fixă pentru procesoarele Intel.
Bazele numerice ale calculatoarelor 89

Tabelul 3.4. Lungimea, precizia şi domeniul de valori ale datelor reprezentate în virgulă
fixă în microprocesoarele Intel

Tipul Lungime Precizie Domeniul de Domeniul de valori


valori (binar) (zecimal)
Format 16 15 -215 – 215-1 -32768 ÷ 32767
pe
cuvânt
Format 32 31 -231 – 231-1 -2.14*109 ÷ 2.14*109
scurt

Format 64 63 -263 – 263-1 -9.22*1018 ÷ 9.22*1018


lung

Există o serie largă de aplicaţii ce necesită numere care nu sunt întregi. Există, de
asemenea, mai multe modalităţi de reprezentare a numerelor reale fracţionare.
Una dintre modalităţi este virgula fixă, în care folosim aritmetica numerelor întregi şi
ne imaginăm virgula undeva în altă parte decât la dreapta bitului CMPS. Adunarea a
două numere astfel reprezentate poate fi făcută în acelaşi mod ca şi o adunare
întreagă, în timp ce înmulţirea necesită o deplasare de biţi.
De-a lungul anilor au fost propuse şi alte reprezentări ce utilizau fie stocarea
logaritmului numerelor şi executarea unei înmulţiri prin adunarea logaritmilor, fie
foloseau o pereche de întregi (a,b) pentru reprezentarea fracţiei a/b. Dintre toate
aceste propuneri, una singură a avut succes pe scară largă: reprezentarea în virgulă
mobilă, prezentată în continuare.

3.3.2. Reprezentarea în virgulă mobilă

Un număr N se poate scrie sub forma: N = ±(f)b*bE, unde:


 b - reprezintă baza sistemului de numeraţie utilizat (mai frecvent se
utilizează baza 2 sau 16);
 E - exponentul (real);
 f - partea fracţionară a numărului.
Macheta de reprezentare a numerelor în virgulă mobilă implică existenţa a cel
puţin trei câmpuri: bit de semn, zona pentru exponent şi zona pentru fracţie.
Bitul de semn:
0 dacã N  0
S = 
 1 dacã N < 0

La unele calculatoare reprezentarea nu-
merelor reale pozitive, diferă de cele negative numai prin bitul de semn.
Exponentul (cunoscut şi sub denumirea de caracteristică) are o valoare
determinată prin relaţia:
90 Bazele tehnologiei informaţiei

EXP = exponent real + constantă exces

 constanta în exces este stabilită în funcţie de format şi de tipul


calculatorului şi are ca scop eliminarea unei zone în care să fie specificat
semnul corespunzător exponentului real.
Fracţia (sau mantisa). Numărul de cifre binare corespunzătoare acestei zone
variază, de asemenea, funcţie de calculator şi format. De regulă fracţia trebuie să
fie normalizată, respectând relaţia:
1
 (f ) b < 1
b
Pentru reprezentarea în virgulă mobilă a
unui număr real N, într-un calculator din familia PC-IBM se consideră:
N=±2E (f)2
1(f)2<2 iar (f)2=I0f1f2...fn (I0 = 1 iar valoarea lui n depinde de formatul ales).
Formatele utilizate în mod general sunt:
I. Formatul real binar
 simplă precizie, având macheta:

 dublă precizie:

unde:
 S este bit de semn (S=0 dacă N0 şi S=1 dacă N<0);
 fn - cifrele binare ale fracţiei normalizate;
 Ei - cifrele binare ale zonei de exponent;
 EXP=E + (81)H.

Dacă zona exponent este egală cu zero, numărul zecimal este egal cu zero. Dacă
zona exponent este diferită de zero, atunci numărul zecimal va fi determinat astfel:
< N >=< S > ( 0.1 < frac ţ ie > ) 2 * 2< EXP >  (80)h
II. Formatul real sau formatul IEEE (Institute of Electrical and Electronics
Engineers) 754 - lansat în anul 1985
 simplă precizie (format scurt), având macheta:
Bazele numerice ale calculatoarelor 91

 dublă precizie (format lung), cu macheta:

unde:
 S - bit de semn (S=0 dacă N0 şi S=1 dacă N<0);
 fi - cifrele binare ale zonei exponent (EXCES=127 sau 1023);
 EXP = E + 127 [(7F)H] - pentru format scurt;
 EXP = E + 1023 [(3FF)H] - pentru format lung.

 format temporar, cu macheta:

unde:
 S - bit de semn;
 I0 - bitul părţii întregii, ce se memorează în formatul temporar, implicit
în formatul scurt şi lung;
 fi - cifrele binare ale fracţiei;
 Ei - cifrele binare ale zonei exponent, EXP = E + 16383 [(3FFF)H]
Dacă exponentul este egal cu zero, atunci numărul este egal cu zero. Dacă
exponentul nu este egal cu zero, numărul zecimal se va calcula după relaţia:
<N> = <S>*(1.<fracţie>)2*2<EXP>-EXCES
Exemplul 14. Să se reprezinte în virgulă mobilă (în format binar cât şi în format
real) simplă precizie numerele: N1=1 şi N2=-1.

Rezolvarea
N1=120 ; N2= -120
a) Format binar
VM
N1 = (8100 0000 ) H
92 Bazele tehnologiei informaţiei

VM
N2 = (8180 0000 ) H

b) Format real
N1=(3F800000)H
N2=(BF800000)H

Exemplul 15. Fie N1=(8561 0000)H reprezentarea în VM simplă precizie format


binar. Să se determine numărul din zecimal.

Rezolvarea
N1=25(0,1110000100...0)2=25x(2-1+2-2+2-3+2-8)=24+23+22+2-3=28,125

3.3.3. Numere şi valori speciale

În cadrul reprezentării valorilor numerice pentru microprocesorul Intel, există o


serie de numere şi valori ce au o reprezentare specială, prezentate în continuare.
Există astfel:
 Zerouri cu semn. În acest sens, valoarea 0 poate fi reprezentată drept +0
sau -0 în funcţie de bitul de semn. Ambele reprezentări sunt egale ca
valoare. Semnul unui rezultat cu valoare 0 depinde de operaţia efectuată şi
de modalitatea de rotunjire.
 Numere finite normalizate si denormalizate.
 +, - reprezintă valoarea maximă pozitivă, respectiv valoarea minimă
negativă pentru numere reale ce poate fi reprezentată în virgulă mobilă.
Valoarea infinit este totdeauna reprezentată de o fracţie 0 şi de exponentul
maxim permis de formatul respectiv (de exemplu 255 în format simplă
precizie). Sunt generate excepţii atunci când utilizarea unei valori infinite
ca operand sursă conduce la o operaţie invalidă.
 Valori NaN (Not a Number). Aceste valori nu fac parte din mulţimea
numerelor reale. Reprezentarea lor se face prin intermediul unui exponent
maxim acceptat de reprezentarea respectivă şi a unei fracţii diferită de zero.
În acest caz bitul de semn este ignorat.
Numere finite normalizate şi denormalizate
În această categorie intră numerele diferite de zero finite. Numerele normalizate
reprezintă numerele ce pot fi codificate într-o formă normalizată între 0 şi . În
reprezentarea de mai jos, acest grup include toate numerele cu exponenţi modificaţi
între 1 şi 254 (între –126 şi 127).
Bazele numerice ale calculatoarelor 93

Atunci cand exponentul modificat este 0, numerele mai mici pot fi reprezentate
făcând bitul părţii întregi zero.Numerele din acest domeniu se numesc numere
denormalizate. Acest lucru duce la scăderea preciziei (numărul de biţi semnificativi
ai fracţiei este redus datorită apariţiei zerourilor de la început).
În momentul normalizării calculelor în virgulă mobilă, unitatea în virgulă
mobilă operează cu numere normalizate şi produce rezultate normalizate. Numerele
denormalizate reprezintă o condiţie de excepţie denumită underflow. Un număr
denormalizat este calculat prin intermediul unei tehnici denumită gradual
underflow. În figura 3.1 este prezentat un exemplu al procesului de denormalizare,
iar în figura 3.2 sunt înfăţişate reprezentările valorilor +0, -0 şi a numerelor
normalizate şi denormalizate finite.

Figura 3.1. Exemplu de denormalizare

Figura 3.2. Reprezentări pentru +0, -0, numere normalizate


94 Bazele tehnologiei informaţiei

şi denormalizate finite

Valori NaN (Not A Number)

Standardul IEEE defineşte două clase de valori NaN:


 QNaN (quiet NaN) –au bitul CMS setat (valoarea 1)
 SNaN (signaling NaN) – au bitul CMS zero.
Valorile QNaN se propagă prin operaţiile aritmetice fără a indica o excepţie, pe
când valorile SNaN semnalizează în general o excepţie (operaţie invalidă) atunci
când apar ca operanzi în operaţii aritmetice. În figura 3.3 sunt înfăţişate
modalităţile de reprezentare pentru valorile speciale +, - şi NaN. În figura 3.4
sunt prezentate operaţiile ce generează valorile speciale despre care am discutat.

Figura 3.3. Reprezentări pentru +∞, -∞, valori NaN


Bazele numerice ale calculatoarelor 95

Figura 3.4. Operaţii ce generează valori speciale

3.3.4. Reprezentarea numerelor întregi zecimale codificate binar (BCD)

Pentru reprezentarea numerele folosind codificarea BCD (Binary Coded Decimal)


se utilizează două formate: formatul împachetat (packed BCD) şi formatul
despachetat (unpacked BCD).
Reprezentarea în BCD format împachetat conţine două cifre zecimale pe un octet
(cifra zecimală mai puţin semnificativă pe biţii 0  3 şi cifra zecimală mai
semnificativă pe biţii 4  7).
Datele reprezentate în BCD format despachetat conţin o cifră zecimală pe octet -
memorată în biţii 0  3, iar biţii 4  7 conţin o configuraţie de biţi; în exemplul
prezentat este (F)H [(1111)2].
Microprocesorul acceptă datele în format BCD împachetat sau despachetat, având
următoarea machetă de reprezentare pe un octet:

Exemplul 16. Să se reprezinte în zecimal codificat binar (în BCD) numerele


zecimale N1=9450 şi N2=78431.

Rezolvarea
N1=(1001 0100 0101 0000)2 - format împachetat
N2=(0111 1000 0100 0011 0001)2 - format împachetat
N1=(F9F4F5F0)H - format despachetat
N2=(F7F8F4F3F1)H - format despachetat
Pentru reprezentarea numerelor nu s-a impus o anumită lungime a secvenţelor şi
nu s-a ţinut cont de semnul numărului.
Pentru calculatoarele PC-IBM coprocesorul matematic memorează numerele
întregi zecimale pe zece octeţi - în format împachetat. În acest caz macheta de
reprezentare este:

unde:
 S - bit de semn ( 0 - număr pozitiv, 1 - număr negativ);
 Di - cifră zecimală (două cifre/octet);
96 Bazele tehnologiei informaţiei

 X - biţi nefolosiţi.
Numerele negative se deosebesc de cele pozitive prin bitul de semn.

3.4. Operaţiile aritmetice în sistemul binar


3.4.1. Adunarea în binar
+ 0 1
0 0 1
*
1 1 10
*
1 se transportă la rangul următor

Exemplul 17. Să se însumeze în binar (00010101)2 cu (10010111)2. O să avem:

(00010101)2 + (21)10 +
(10010111)2  (151)10

(10101100)2 (172)10

3.4.2. Scăderea în binar


Descăzut
- 0 1
Scăzător 0 0 1
*
1 1 0
*
Rezultat datorită împrumutului din rangul superior
Exemplul 18. Să se scadă în binar:

(11011)2 - (27)10
(01111)2  (15)10

(01100)2 (12)10

În calculatoarele numerice operaţia de scădere se reduce la o operaţie de adunare


prin utilizarea codului invers sau a codului complementar.

3.4.3. Înmulţirea în binar


x 0 1
0 0 0
1 0 1
Bazele numerice ale calculatoarelor 97

Exemplul 19. Să se efectueze înmulţirea: (1101)2 x (1001)2.


(1101)2 x
(1001)2

(1101)2
(0000)2
(0000)2
(1101)2
(1110101)2
Deci (1101)2 x (1001)2 = (1110101)2 [(13)10 x (9)10=(117)10]

3.4.4. Împărţirea în binar

Cea mai simplă metodă este scăderea repetată a împărţitorului din deîmpărţit.

Exemplul 20. Să se efectueze împărţirea: (1010001)2:(1001)2=(1001)2.

În acest caz împărţirea s-a efectuat fără rest [(81)10 :(9)10=(9)10].

Exemplul 21. Să se efectueze împărţirea: (100011)2 : (110)2= (101,110)2.

În această situaţie operaţia de împărţire se poate continua, astfel încât aproximarea


rezultatului să fie cât mai bună.

Operaţiile în sistemul octal sau hexazecimal se vor efectua conform regulilor de


adunare şi înmulţire ce sunt prezentate în tabelele 3.5 3.8.

Tabelul 3.5. Adunarea în sistemul octal


98 Bazele tehnologiei informaţiei

+ 0 1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 10
2 2 3 4 5 6 7 10 11
3 3 4 5 6 7 10 11 12
4 4 5 6 7 10 11 12 13
5 5 6 7 10 11 12 13 14
6 6 7 10 11 12 13 14 15
7 7 10 11 12 13 14 15 16

Tabelul 3.6. Înmulţirea în sistemul octal

* 0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7
2 0 2 4 6 10 12 14 16
3 0 3 6 11 14 17 22 25
4 0 4 10 14 20 24 30 34
5 0 5 12 17 24 31 36 43
6 0 6 14 22 30 36 44 52
7 0 7 16 23 34 45 52 61
Bazele numerice ale calculatoarelor 99

Tabelul 3.7. Adunarea în sistemul hexazecimal

+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 1 2 3 4 5 6 7 8 9 a B C D E F
1 1 2 3 4 5 6 7 8 9 A B C D E F 10
2 2 3 4 5 6 7 8 9 A B C D E F 10 11
3 3 4 5 6 7 8 9 A B C D E F 10 11 12
4 4 5 6 7 8 9 A B C D E F 10 11 12 13
5 5 6 7 8 9 A B C D E F 10 11 12 13 14
6 6 7 8 9 A B C D E F 10 11 12 13 14 15
7 7 8 9 A B C D E F 10 11 12 13 14 15 16
8 8 9 A B C D E F 10 11 12 13 14 15 16 17
9 9 A B C D E F 10 11 12 13 14 15 16 17 18
A A B C D E F 10 11 12 13 14 15 16 17 18 19
B B C D E F 10 11 12 13 14 15 16 17 18 19 1A
C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B
D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C
E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D
F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E
100 Bazele tehnologiei informaţiei

Tabelul 3.8. Înmulţirea în sistemul hexazecimal

* 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 A B C D E F
2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E
3 0 1 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D
4 0 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C
5 0 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B
6 0 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A
7 0 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69
8 0 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78
9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87
A 0 A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96
B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5
C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4
D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3
E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2
F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1

3.5. Operaţiile aritmetice în virgulă fixă (VF)


3.5.1. Adunarea în cod direct (CD)

Adunarea numerelor cu acelaşi semn

Se adună mărimile numerelor, fără cifra de semn, şi se dă rezultatului semnul


comun celor două numere. Fie:
Bazele numerice ale calculatoarelor 101

CD n-1
a n  2n +  ai  2i 
Însumarea se
N1 = ai {0,1} face începând de
i=  m la cifra cea mai
puţin
semnificativă
CD n-1 (CCMPS) a
N2 = bn2n +  bi2i bi  {0,1} reprezentării
numerelor,
i=  m
ţinându-se cont

CD n- 1
N1 + N 2 = an  2n +  ( ai + bi + t i ) 2i
i = m
de transportul de la rangul anterior (ti).
Se consideră t-m=0, iar dacă va apare tn (transport de la cifra cea mai semnificativă
a mărimii) - este depăşire binară. Rezultatul operaţiei poate fi corect când nu apare
transport de la cifra cea mai semnificativă a mărimii rezultatului şi poate fi incorect
când apare transport.
Pentru simplitate vom lucra cu numere întregi reprezentate pe un octet, primul bit
fiind bit de semn iar şapte biţi pentru mărime. (-127 < N < 127)

Exemplul 22.
Să se însumeze N1 cu N2, având N1=(40)10 şi N2=(60)10.

Rezolvarea
CD
N1 = (00101000 )2
CD
N2 = (00111100 )2
CD
N1 + N 2 = (01100100 )2

Verificând rezultatul obţinem:

N1+N2=+(126+125+024+023+122+021+020)=(100)10
Exemplul 23.
Să se calculeze N1 + N2, având N1=40 şi N2=90.
102 Bazele tehnologiei informaţiei

Rezolvarea
CD
N1 = (00101000 )2

CD
N2 = (01011010 )2

CD
N1 + N 2 = (10000010 )2

În acest caz rezultă transport de la cifra cea mai semnificativă a mărimii, rezultatul
este incorect. (Rezultatul însumării celor două numere nu poate fi reprezentat prin
cele şapte cifre binare).

Exemplul 24.
Să se calculeze N1+N2, având N1= -25 şi N2= -30.

Rezolvarea
CD
N1 = (1 0011001 )2

CD
N2 = (1 0011110 )2

CD
N1 + N 2 = (1 0110111 )2

Verificând:

N1+N2 = -(026+125+124+023+122+121+120)
N1+N2 = -55  rezultat corect

Exemplul 25.
Să se calculeze N1+N2, având N1= -75 şi N2= -80

Rezolvarea
Bazele numerice ale calculatoarelor 103

CD
N1 = (11001011 )2
CD
N2 = (11010000 )2
CD
N1 + N 2 = (10011011 )2

Prin adunarea celor două numere rezultă transport de la cifra cea mai semnificativă a
mărimii, rezultat incorect.
Dacă cele două numere au semne diferite procedura de lucru este asemănătoare celei
ce urmează, când numerele sunt reprezentate în cod invers.

3.5.2. Adunarea/scăderea în cod invers (CI)

Adunarea/scăderea numerelor cu acelaşi semn

a) Dacă ambele numere sunt pozitive, reprezentarea lor în cod invers este identică
reprezentării în cod direct.
b) Numerele sunt negative, fie N1 < 0 şi N2 < 0
( În continuare se va lucra cu numere întregi reprezentate pe un octet).
Vom nota prin N1CD,N2CD reprezentarea în cod direct a valorilor absolute ale
numerelor N1 şi N2.
CI
N1 = 28 - | N1 |CD - 20

CI
N2 = 2 -| N
8
|
2 CD -2 0

CI
N1 + N 2 = 28 + 28 -| N 2 |CD -| N 2 |CD - 2 0 - 2 0

Având în vedere că rezultatul trebuie să fie de forma:

CI
N1 + N 2 = 28 -(| N1|CD +| N 2 |CD ) - 2 0
apare necesar ca transportul de la
cifra de semn să fie adunat la cifra
104 Bazele tehnologiei informaţiei

cea mai puţin semnificativă,


CI
N1 + N 2 = 28 - (| N1|CD +| N 2 |CD ) - 20 + 28 - 20 CCMPS

Rezultat Transport de la cifra de semn

Exemplul 26.
Să se calculeze N1+N2, când: N1= -30 şi N2= -14.

Rezolvarea
CI
N1 = ( 1110 0001 )2

CI
N 2 = ( 1111 0001 )2

CI
N1 + N 2 = (1 1101 0010 )2 +

1
CI
N1 + N 2 = (1101 0011 )2

CD
N1 + N 2 = (1010 1100 )2
Verificând N1+N2 = -
(125+123+122) = -44  rezultat corect.

Exemplul 27.
Să se calculeze N1+N2, având N1= -81 şi N2= -72

Rezolvarea
Bazele numerice ale calculatoarelor 105

CI
N1 = ( 1010 1110 )2

CI
N 2 = ( 1011 0110 )2

CI
N1 + N 2 = (1 0110 0100 )2 +
1
CI
N1 + N 2 = (0110 0101 )2 N1 + N 2 > 0

Rezultatul este eronat, deoarece cel mai mic număr întreg ce se poate reprezenta
în cod invers pe un octet este -127.

Adunarea/scăderea numerelor cu semne diferite

Fie N1>0 şi N2<0.

Reprezentarea lui N1 este aceeaşi în cod direct şi în cod invers.


CI
N 2 = 28 -| N 2 |CD - 2 0
În urma operaţiei de adunare se obţine:

CI
N1 + N 2 = 28 -(| N 2 |CD -| N1|CD ) - 2 0

Rezultatul este pozitiv sau negativ, după valorile absolute ale numerelor N1 şi N2.

Exemplul 28.
Să se calculeze N1 + N2, având N1 = 91 şi N2 = -20.

Rezolvarea
106 Bazele tehnologiei informaţiei

CI
N1 = ( 0101 1011 )2

CI
N 2 = ( 1110 1011 )2

CI
N1 + N 2 = (1 0100 0110 )2 +

1
CI  rezultat corect
N1 + N 2 = (0100 0111 )2

Exemplul 29.
Să se calculeze N1+N2, având N1= -91 şi N2= 20.

Rezolvarea
CI CI
N1= ( 1010 0100 )2 N 2 = ( 0001 0100 )2

CI CD
N1 + N 2 = (1011 1000 ) 2 N1 + N 2 = (1100 0111 ) 2

Şi în acest caz rezultatul este corect. Pentru verificarea rezultatului se va ţine seama
de bitul de semn:
 dacă bitul de semn este "0"  rezultatul este un număr pozitiv şi
reprezentarea este aceeaşi în cod invers şi în cod direct;
 dacă bitul de semn este "1"  rezultatul este un număr negativ şi
reprezentarea în cod invers diferă de reprezentarea în cod direct.
Scăderea a două numere binare se rezumă la adunarea celor două numere, utilizând
reprezentarea în cod invers. Fie N1>0 şi N2>0. Relaţia N1 - N2 este echivalentă cu N1
+ (-N2).

Observaţie. Adunarea în cod invers, ca şi în cod complementar, operează asupra


tuturor cifrelor binare, inclusiv asupra cifrei de semn.
Bazele numerice ale calculatoarelor 107

3.5.3. Adunarea/scăderea în cod complementar (CC)

Adunarea /scăderea numerelor cu acelaşi semn

a) Dacă ambele numere sunt pozitive, reprezentarea lor în cod complementar este
identică reprezentării în cod direct.

b) Numerele sunt negative.

Fie N1<0 şi N2<0:


CC CC
N1 = 28 -| N1|CD N 2 = 28 -| N 2 |CD

Prin N1CD, N2CD am notat reprezentarea în cod direct a valorii absolute a


numărului N1, respectiv N2. Deci:

CC
N1 + N 2 = 28 -(| N1|CD +| N 2 |CD ) + 28

Forma de reprezentare a rezultatului Transportul de la bitul de semn

Ţinând seama de forma de reprezentare a rezultatului, apare necesar ca transportul


de la cifra de semn să se neglijeze.

Exemplul 30.
Să se calculeze: N1+N2, având N1 = -14 şi N2 = -72.

Rezolvarea
CC CC
N1 = ( 1111 0010 )2 N 2 = ( 1011 1000 )2

CC
N1 + N 2 = (1 1010 1010 )2

Transportul de la bitul de semn se ignoră

Pentru verificarea rezultatului se va calcula:


108 Bazele tehnologiei informaţiei

CD
N1 + N 2 = (11010110 )2 = - (1  26 + 1  24 + 1  22 + 1  21) = - 86

Observaţie. Dacă în urma însumării a două numere cu acelaşi semn, rezultatul


are semn contrar  acesta este eronat (valoarea rezultatului nu se poate încadra pe
numărul de biţi utilizat).

Adunarea/scăderea numerelor cu semn diferite

Fie N1>0 şi N2<0.

CC
N2 = 28 -| N 2 |CD
Prin adunare avem:

CC
N1 + N 2 = 28 -(| N 2 |CD - | N1|CD )
Dacă N1 > N2  rezultatul va fi pozitiv, iar pentru N1 < N2 
rezultatul va fi negativ.

Exemplul 31.
Să se calculeze N1 + N2, având N1= 33 şi N2= -23.

Rezolvarea
CC CC
N1 = ( 0010 0001 )2 N 2 = ( 1110 1001 )2

CC
N1 + N 2 = (1 0000 1010 )2

Transport care se neglijează

Verificarea: N1+N2 = 123+121=(10)10

Exemplul 32.
Să se calculeze N1+N2, având N1 = -33 şi N2 = 3.
Rezolvarea
Bazele numerice ale calculatoarelor 109

CC CC
N1 = ( 1101 1111 )2 N 2 = ( 0001 0111 )2

CC
N1 + N 2 = ( 1111 0110 )2

Pentru verificarea rezulta-


tului se va ţine seama de valoarea bitului de semn:
 dacă bitul de semn este "0"  rezultatul este un număr pozitiv şi
reprezentarea este aceeaşi în cod complementar şi în cod direct;
 dacă bitul de semn este "1"  rezultatul este un număr negativ şi
reprezentarea în cod complementar diferă de reprezentarea în cod direct.
Verificarea rezultatului anterior:

CD
N1 + N 2 = (10001010 )2  N1 + N2 = - (10 )10
3.6. Operaţii
aritmetice în virgulă mobilă (VM)
a) Adunarea/scăderea
Fie N1>0 şi N2>0, ce se pot scrie:

N1 = 2n1 x (0, b11 b12 b13 ... b1k )2 = 2n1 x( f 1 )2

N 2 = 2n 2 x (0, b21 b22 b23 ... b2 k )2 = 2n 2 x( f 2 )2

unde bij {0,1} pentru i=1,2 şi j = 1, k , valoarea lui k depinde de numărul de


cifre binare utilizate pentru reprezentarea părţii fracţionare.

a1) n1=n2
N1+N2=2n1(f1+f2)
Dacă f1+f2 1 sau f1-f2<1/2, rezultatul se va normaliza prin deplasarea cu o
poziţie spre stânga/ sau dreapta a virgulei, concomitent cu adunarea/ sau scăderea
unei unităţi din zona exponent.
a2) n1n2, n1 > n2 . Pentru a aduna/scădea cele două numere, trebuie să aibă
acelaşi exponent. Deoarece n1 > n2, putem scrie:
110 Bazele tehnologiei informaţiei

N 2 = 2n1x(0, 0....0 b21 b22 .... b2[k-( n1- n 2 )])2


un număr de (n1-
n2) zerouri

În continuare se va proceda ca în cazul precedent. Dacă în urma efectuării


adunării/scăderii fracţia rezultat nu este normalizată se va normaliza, modificând în
mod corespunzător şi exponentul.

b) Înmulţirea, împărţirea
Operaţiile de înmulţire/împărţire asupra zonelor de fracţie se realizează prin
însumări (scăderi) repetate. Fracţia rezultat, dacă nu este normalizată se va
normaliza.

N1 = 2n1  ( f 1 )2 N 2 = 2n 2  ( f 2 )2

N1 * N 2 = 2n1+ n 2 x ( f 1 x f 2 )2 iar

N1 / N 2 = 2n1- n 2 x ( f 1 / f 2 )2

3.7. Operaţii aritmetice în codul numeric 8421


3.7.1. Adunarea

Adunarea numerelor în zecimal codificat binar (8421) se face binar, rang cu rang
pe fiecare grup de patru cifre binare, cu adăugarea, eventual, a unor corecţii.
Fie a şi b două cifre zecimale codificate binar (în 8421) care se adună; rezultatul
c = a + b poate fi:
 corect - nu este necesar să se aplice nici o corecţie dacă: 0000 c 1001;
 incorect şi se impune corecţia, adunând 0110 în situaţiile:
 1010 c 1111 - această reprezentare nu corespunde unei cifre în
zecimal, adunând 0110 va determina transport la rangul următor;
 0000 c 1001 dar a rezultat a cincea cifră binară, aceasta fiind 1 şi
reprezintă transportul pentru tetrada binară superioară.
ccorectat = c + 0110

Exemplul 33.
Să se adune în codul numeric 8421 numerele N=883 şi M= 592.
Bazele numerice ale calculatoarelor 111

3.7.2. Scăderea

Fie a şi b două cifre zecimale codificate binar, în codul 8421, ce se scad:


 dacă c = a - b este un număr pozitiv, acest rezultat este corect;
 dacă rezultatul este negativ, se realizează un împrumut de la tetrada binară
superioară (-0001)2, care va reprezenta pentru tetrada unde este necesar
împrumutul valoarea (10000)2=16. Această configuraţie de cifre [(10000)2]
se adună la tetrada a şi din aceasta se scade tetrada b, obţinându-se un
număr pozitiv. Rezultatului obţinut i se aplică o corecţie prin scăderea
cifrei 610, adică (0110)2. Scăderea este necesară deoarece în zecimal
valoarea împrumutului este 1010, iar prin reprezentarea într-un cod cu 4
cifre binare împrumutul este 16.
Exemplu 34.
Să se scadă, în codul 8421, din numărul N= 1032, numărul M = 974.
112 Bazele tehnologiei informaţiei

3.8. Probleme rezolvate


Problema 1.
Fie numerele:
a = (0101 0011, 0110 0010 0101)2
b = (0111, 0011) 2
Ştiind că acestea sunt reprezentate în BCD format împachetat, să se reprezinte
în virgulă mobilă simplă precizie şi să se efectueze operaţiile a+b şi a-b.

Rezolvarea
Tranformând din BCD în zecimal şi apoi realizând conversia în sistemul de
numeraţie binar obţinem:
a = (53,625)10 = (110101,101)2
b = (7,3)10 = (111,010011001)2

Facem normalizarea celor două numere conform formatului IEEE:


a = (1,10101101)2  25  Exponent = 5+127=132
b = (1,11010011001)223  Exponent = 3+127=130

Vom calcula expresiile:


a+b = (1,10101101)2  25 + (1,11010011001)2  23 =
23 (110,101101+1,11010011001) 2 = 23  (1000,10000111001)2 =
(1,00010000111001)2 26

a-b = 23 (110,101101-1,11010011001)2 = 23(100,11100000110)2 =


(1,0011100000110)225

Reprezentările în virgulă mobilă sunt prezentate în tabelul următor:

Reprezentarea în virgulă mobilă simplă precizie


Binar Hexazecimal
Număr Semn Exponent Fracţie
a 0 10000100 101011010…0 4256 8000 H
b 0 10000010 11010011001...0 4169 9000 H
a+b 0 10000101 00010000111001000000000
a-b 0 10000100 00111000001100000000000 41699000H

Problema 2.
Să se calculeze în virgula fixă: a+b+c; -a+b; a-b ştiind că a = 53, b = 20, c =
90.

Rezolvarea
Bazele numerice ale calculatoarelor 113

Facem conversia celor trei numere din sistemul de numeraţie zecimal în binar şi
le reprezentăm în virgula fixă pe un octet luând în considerare şi valorile negative:

Număr în zecimal Număr în binar


53 110101
20 10100
90 1011010

Număr Reprezentare în VF -a+b (-53+20) CI


zecima S valoarea 1 1 0 0 1 0 1 0 +
l
0 0 0 1 0 1 0 0
53 C 0 0 1 1 0 1 0 1
1 1 0 1 1 1 1 0
D
- 53 C 1 0 1 1 0 1 0 1 a-b (53-20) CI
D 0 0 1 1 0 1 0 1 +
53 CI 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1
- 53 CI 1 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 +
53 CC 0 0 1 1 0 1 0 1 1
- 53 CC 1 1 0 0 1 0 1 1 0 0 1 0 0 0 0 1
Număr Reprezentare în VF
zecima S valoarea -a+b (-53+20) CC
l
1 1 0 0 1 0 1 1 +
90 C 0 1 0 1 1 0 1 0
0 0 0 1 0 1 0 0
D
1 1 0 1 1 1 1 0
- 90 C 1 1 0 1 1 0 1 0
D a-b (53-20) CC
90 CI 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 1 +
- 90 CI 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0
90 CC 0 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1
- 90 CC 1 0 1 0 0 1 1 0
Număr Reprezentare în VF
zecima S valoarea
l
20 C 0 0 0 1 0 1 0 0 a+b+c (53+20+90) CD, CI, CC
D 0 0 1 1 0 1 0 1 +
- 20 C 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0
D 0 1 0 1 1 0 1 0
20 CI 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 1
- 20 CI 1 1 1 0 1 0 1 1
20 CC 0 0 0 1 0 1 0 0
- 20 CC 1 1 1 0 1 1 0 0

La calcularea sumei a+b+c s-a produs depăşire, pe 8 biţi putându-se reprezenta


numere în virgulă fixă până la maxim 127. Prin urmare, pentru a obţine un rezultat
corect trebuie să se folosească o reprezentare pe 16 biţi.
114 Bazele tehnologiei informaţiei

Reprezentarea pe 16 biţi
a 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1
c 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0
c 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0
a+b+c 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1

Problema 3.
Să se determine valoarea zecimală a numărului A=(C2D0F800)H ştiind că
acesta este reprezentat în virgulă mobilă simplă precizie.
Rezolvarea

A=(C2D0F8)H=(110000101101000011111000)2

S Exponent Fracţie
1 10000101 10100001111100000000000

Exponent real = Exponent – 127 = 133-127 = 6


Aşadar
A = 26  (1, 10100001111100000000000)2 = (1101000,011111)2 =
(104,484375)10

3.9. Probleme propuse


1. Să se facă conversia din sistemul de numeraţie zecimal în sistemele binar,
octal şi hexazecimal pentru numerele: 64, 81, 511, 1000, 0.675, 0.455, 0.025,
0.34, 52.55, 134.625, 254.12, 938.27.

2. Fiind date numerele binare: (10101011.1101)2, (11000110110.101)2,


(10001000.00001)2, (0.001001)2, (110010)2, (111000110)2 să se facă conversia lor în
zecimal, octal şi hexazecimal.

3. Fiind date numerele în sistemul octal: (42)8, (77)8, (36.2)8, (311.08)2, (417.24)8
să se facă conversiunea lor în binar, zecimal şi hexazecimal.

4. Să se transforme în numere binare, octale şi zecimale următoarele numere


hexazecimale: (1C7)H, (2B.F4)H, (A9D.3E)H, (0.0F)H.

5. Să se reprezinte în VF, folosind CD, CI şi CC următoarele numere întregi


zecimale: ±74, ±1032, ±243, ±544, ±1753. Se vor exprima în binar, octal şi hexaze-
cimal (reprezentarea se va face pe doi octeţi).
6. Să se determine valoarea zecimală a numerelor:
Bazele numerice ale calculatoarelor 115

N1 = (F302)H ; N2 = (45BA)H ; N3 = (0C13)H ; N4 = (8FFC)H, ştiind că acestea


sunt reprezentate în VF cod complementar.

7. Ştiind că:
a) N1CD = N2CI = N3CC = (7051 A4D2)H
b) N1CD = N2CI = N3CC = (8FFD 5426)H
să se calculeze valorile zecimale ale numerelor N1, N2, N3.

8. Să se reprezinte în virgulă mobilă simplă precizie numerele zecimale:


N1 = 377.52 ; N2 = 0.00025 ; N3 = 511.47; N4 = 0.00041.

9. Să se determine valorile zecimale pentru numerele:


N1 = (C3D0 0000)H;
N2 = (1F80 0000)H;
N3 = (41A0 0000)H.
ştiind că acestea sunt reprezentări în virgulă mobilă simplă precizie (format IEEE).

10. Să se reprezinte în BCD (împachetat şi despachetat) numerele zecimale:


N1 = 8321; N2 = 9674 ; N3 = 252.

11. Să se calculeze în virgulă fixă (CD/ CI / CC):


N1 + N2, N1 - N2, N2 - N1 şi -N1 -N2 având
a) N1 = 47, N2 = 52 ;
b) N1 =32, N2 = 73 ;
c) N1 = 653, N2 = -277
Numerele vor fi reprezente pe doi octeţi, iar rezultatele se vor exprima în
octal şi hexazecimal.

12. Să se calculeze în VM simplă precizie: N1 + N2, N1 - N2 pentru:


a) N1 = 52,47 ; N2 = 37,650;
b) N1 = 248,15 ; N2 = 72,31;
c) N1 = 654,25 ; N2 = 117,24.
Atât numerele N1 şi N2, cât şi rezultatele vor fi reprezentate în VM (exprimare în
binar şi hexazecimal).

3. Să se efectueze în BCD (cod 8421) operaţiile N1 + N2 şi N1 - N2 având:


a) N1 = 829 ; N2 = 358;
b) N1 = 967 ; N2 = 389;
c) N1 = 2134 ; N2 = 1746.

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