Sunteți pe pagina 1din 47

4

BAZELE NUMERICE ALE CALCULATOARELOR

4.1 Sisteme de numeraie Un numr reprezint informaia a crei semnificaie este universal stabilit i ale crei prelucrri au la baz aritmetica. Numerele sunt incluse ntr-o clas de codificare particular, n care proprietile abstracte ale aritmeticii sunt translatate n mecanismele concrete de calcul asupra codurilor. Sistemul de numeraie este format din totalitatea regulilor de reprezentare a numerelor cu ajutorul unor simboluri numite cifre. Numrul de simboluri permise pentru reprezentarea cifrei este numit baza sau rdcina sistemului de numeraie. Sistemele de numeraie pot fi: poziionale (sistemele: zecimal, binar, octal); nepoziional (sistemul roman). n continuare sunt prezentate simbolurile folosite n cadrul sistemului de numeraie roman i valorile zecimale corespunztoare 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 4.1): reprezentarea binar (baza=2); reprezentarea octal (baza=8); reprezentarea zecimal (baza=10); reprezentarea hexazecimal (b=16).

Sisteme de calcul i operare

Exemple de sisteme de numeraie


Tabelul 4.1 Sistem de numeraie Binar Octal Zecimal Hexazecimal Baza (b) 2 8 10 16 Cifrele (0,1) (0,1,2,3,4,5,6,7) (0,1,2,3,4,5,6,7,8,9) (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

Fiind dat un numr ntreg N, se numete reprezentare n baza b, orice succesiune de cifre a n , a n-1, ..., a 0 care satisface urmtoarele proprieti: cifrele lui sunt numere naturale cu proprietatea : 0 ai b-1 (i = 0n) exist egalitatea: N = anbn + an-1bn-1 + .a0b0 Cnd succesiunea de cifre are proprietile enumerate, prin definiie, se poate scrie: N = anan-1 .a0 sau (N)b = anan-1 .a0 Un numr ntreg admite o reprezentare unic n baza b. Fiind dat un numr real R, se numete reprezentare n baza b, orice succesiune de cifre an,an-1,...,a0,a-1, a-2,...,a-m ce ndeplinete proprietile: cifrele ai sunt numere naturale cu proprietatea : 0 ai b-1 (i = m, n ) ; nu exist un rang k astfel nct s avem: ak = ak-1 = ak-2 = = b-1 exist egalitatea: R = anbn + an-1bn-1 + .a0b0 + a-1b-1 +.+ a-mb-m n situaia n care succesiunea de cifre are proprietile enumerate prin definiie se scrie: R = anan-1.a0, a-1a-2 . a-m an este cifra cea mai semnificativ (CCMS) a numrului R, iar a-m este cifra cea mai puin semnificativ (CCMPS).

Bazele numerice ale calculatoarelor

4.2 Conversia bazei de numeraie Fiind dat un numr reprezentat n sistemul de numeraie cu baza b, calculul cifrelor reprezentrii n baza q, q>1 se numete conversia din baza b n baza q. Conversia numerelor dintr-un sistem de numeraie b n alt sistem de numeraie cu baza q se efectueaz examinnd separat partea ntreag i partea fracionar. Fie (N)b=(NI)b + (NF)b, unde (NI)b reprezint partea ntreag a numrului (N)b iar (NF)b reprezint partea fracionar.

4.2.1 Conversia numerelor ntregi n noua baz de numeraie 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 a i (i = 0, n) sunt cifre ce aparin sistemului de numeraie n baza q. Conversia prii ntregi (NI)b n baza q se va reduce la determinarea coeficienilor a i (i = 0, n) , ce se obin prin mprirea succesiv a lui (NI)b cu q, astfel: (NI)b/q=(anqn-1+an-1qn-1+,...,+a1) + a0/q a0
(NI1)b - partea ntreag a ctului (NI2)b Rest

(NI1)b/q= (anqn-2++a2) + a1/q a1 (NIk)b/q= anqn-k-1+an-1qn-k-2++ak+1 + ak/q ak (NI(n-1)b/q= an + an-1/q an-1 (NIn)b (NIn)b/q= 0 + an/q an (NI(k+1))b

Sisteme de calcul i operare

Algoritmul se ncheie cnd partea ntreag a ctului devine nul. Cifra an reprezint cifra cea mai semnificativ iar a0 este cifra cea mai puin semnificativ. Exemplul 1 Fiind dat numrul (248)10 s se fac conversia sa n sistemele: binar, octal i hexazecimal. (Numerele reprezentate n sistemul zecimal, n mod obinuit, se scriu fr specificarea bazei de numeraie.) Rezolvare. a. Conversia n binar 248/2=124 + 0/2 0 (a0) 124/2= 62 + 0/2 0 (a1) 62/2= 31 + 0/2 0 (a2) 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 b. 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 c. Conversia n hexazecimal 248/16=15 + 8/16 8 15/16= 0 + 15/16 F (248)10=(F8)H (a0) (a1)

Bazele numerice ale calculatoarelor

Calculul simplificat pentru conversia n:


binar 248 124 62 31 15 7 3 1 0 0 0 0 1 1 1 1 1 248 31 3 0 0 7 3 octal 15 0 hexazecimal 248 8 15

Aadar, (248)10=(11111000)2=(370)8=(F8)H

4.2.2 Conversia rapid n cazurile n care ntre cele dou baze de numeraie (implicate n conversie) exist o relaie de genul: p b1=b2 (b1 i b2 sunt cele dou baze, p este numr natural mai mare sau egal cu 2) atunci conversia se poate realiza mai rapid. Pentru a face conversia din baza b2 (baza mai mic) n baza b1, se mparte numrul reprezentat n b1 n grupe de cte p cifre, de la dreapta la stnga pentru partea ntreag i de la stnga la dreapta pentru partea fracionar. Dac ultimul grup de cifre nu are exact p cifre, se completeaz cu zerouri pentru a se obine un grup de p cifre. Pentru a face conversia din baza b1 (baza mai mare) n baza b2, pentru fiecare cifr a numrului din baza b1 se asociaz un grup de p cifre n baza b2, obinndu-se astfel numrul n noua baz b2.

Sisteme de calcul i operare

Exemplul 2. Pentru a face conversia din baza 2 n baza 8 sau 16 se poate porni de la reprezentarea n baza 2 a numrului i deoarece 8=23 iar 16=24, se pot face grupri de 3 respectiv 4 cifre binare pentru a obine reprezentarea n aceste baze. n cazul numerelor ntregi gruparea se face ncepnd de la CCMPS (de la dreapta la stnga numrului). (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 numrului scris n baza 8 cu un grup de 3 cifre binare, conform tabelului 4.2. Conversia rapid din baza 8 n baza 2
Tabelul 4.2 Cifra din baza 8 0 1 2 3 4 5 6 7 Grupul de cifre n baza 2 000 001 010 011 100 101 110 111

Folosind datele din tabelul anterior, numrul (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 numrului scris n hexazecimal cu un grup de 4 cifre binare, conform tabelului 4.3.

Bazele numerice ale calculatoarelor

Conversia rapida din baza 16 in baza 2 Tabelul 4.3 Cifra din hexazecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F Grupul de cifre n baza 2 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Folosind datele din tabelul anterior, numrul (5A2)16 = (0101 1010 0010)2 prin conversie direct. 4.2.3 Conversia numerelor fracionare Partea fracionar se poate scrie: (NF)b=a-1q-1 + a-2q-2 + a-3q-3 + unde: a-j reprezint cifre aparinnd sistemului de numeraie q. Conversia prii fracionare se va reduce la determinarea coeficienilor a-k (k=1,2,) prin nmuliri succesive: (NF)bq=a-1 + a-2q-1 + a-3q-2 + a-1 (NF1)b (NF1)bq=a-2 + a-3q-1 + a-4q-2 + a-2 (NF2)b

Sisteme de calcul i operare

unde: a-1 reprezint cifra cea mai semnificativ a prii fracionare. Teoretic, algoritmul ar trebui s se ncheie cnd partea fracionar devine egal cu zero, ceea ce se ntmpl ntr-un numr limitat de cazuri. n practic, procedeul are un numr finit de pai, n funcie de precizia aleas. De exemplu, pentru a obine o precizie bun, pentru fiecare cifr zecimal trebuie calculate 4 cifre binare (n cazul conversiei din zecimal n binar). Exemplul 5 Fiind dat numrul (0,251)10 s se realizeze conversia n sistemele: binar, octal i hexazecimal. Rezolvare. a. Conversia n octal 0,2518=2 + 0,008 0,0088=0 + 0,064 0,0648=0 + 0,512 0,5128=4 + 0,096 0,0968=0 + 0,768 2 0 0 4 0 (a -1) (a -2) (a -3) (a -4) (a -5)

(0,251)10=(0,20040)8 b. Conversia n hexazecimal 0,25116=4 + 0,016 4 (a -1) 0,01616=0 + 0,256 0 (a -2) 0,25616=4 + 0,096 4 (a -3) (0,251)10=(0,404)H

Bazele numerice ale calculatoarelor

c. Conversia n binar 0,2512=0 + 0,502 0,5022=1 + 0,004 0,0042=0 + 0,008 0,0082=0 + 0,016 0,0162=0 + 0,032 0,0322=0 + 0,064 0,0642=0 + 0,128 0,1282=0 + 0,256 0,2562=0 + 0,512 0,5122=1 + 0,024 0,0242=0 + 0,048 0,0482=0 + 0,096 0,0962=0 + 0,192 0,1922=0 + 0,382 0,3822=0 + 0,762 0,7622=1 + 0,524 0,5242=1 + 0,048 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 (a -1) (a -2) (a -3) (a -4) (a -5) (a -6) (a -7) (a -8) (a -9) (a-10) (a-11) (a-12) (a-13) (a-14) (a-15) (a-16) (a-17)

(0,251)10=(0,01000000010000011)2 Calculul simplificat pentru conversia n:


binar octal hexazecimal

0 0 1 0 0 0 0 0 0 0 1

251 502 004 008 016 032 064 128 256 512 024

0 2 0 0 4 0

251 008 064 512 096 768

0 4 0 4

251 016 256 096

Sisteme de calcul i operare

Conversia n octal sau hexazecimal se realizeaz i din reprezentarea binar a numrului, prin gruparea a cte trei, respectiv patru cifre binare. Gruparea se va face de la stnga spre dreapta (invers dect n cazul prii ntregi). Astfel, (0,251)10 = (0, 010 000 000 100 000 110)2 = (0, 200405)8 (0,251)10 = (0, 0100 0000 0100 0001 1000)2 = (0, 40418)H Exemplul 6 Fie numrul (23,65)10. S se realizeze conversia n sistemele: binar, octal i hexazecimal. Rezolvare. Conversia prii ntregi 23 11 5 2 1 0 1 1 1 0 1 0 1 0 1 0 0 1 1 0 Conversia prii fracionare 65 30 60 20 40 80 60 20 40

Deci: (23,65)10=(23)10 + (0,65)10=(10111)2 + (0,10100110)2 (23,65)10 = (1 0 111,1010 0110 )2 = (27,514)8 = (17,A6)H

Bazele numerice ale calculatoarelor

Exemplul 7. S se fac conversia din binar n zecimal a numrului (1100011)2. (1100011)2=126 + 125 + 024 + 023 + 022 + 121 + +120 = (99)10 Exemplul 8. Conversia din binar n zecimal a numrului (110,101)2 (110,101)2=122 + 121 + 020 + 12-1 + 02-2 + 12-3 = 6 + 0,5 + 0,125 = = (6,625)10 Exemplul 9. Conversia din octal n zecimal a numrului (235)8. (235)8=2 82 + 381 + 580=128 + 24 + 5=(157)10 Exemplul 10. Conversia din hexazecimal n zecimal a numrului (23F)H. (23F)H=2162 + 3161 + 15160=512 + 48 + 15=(575)10

4.3 Reprezentarea binar a informaiei numerice Informaia numeric se reprezint n calculatoare ntr-unul dintre formatele: n virgul fix (VF); n virgul mobil (VM); prin coduri numerice (cel mai utilizat este codul 8421).

Sisteme de calcul i operare

4.3.1 Reprezentarea n virgul fix (VF) a) Reprezentarea prin mrime i semn (Cod direct - CD). Un numr reprezentat prin mrime i semn se poate scrie conform relaiei:
CD

a n 2n +

i= m

n-1

a i 2i

0 dac N 0 an = 1 dac N p 0

an este bit de semn, iar ai {0,1} pentru i = m, (n 1) i au fost obinute n urma conversiei numrului (N) n sistemul de numeraie binar. Macheta de reprezentare a numrului N este:

Observaie. S-a considerat c partea ntreag se reprezint prin n cifre binare, iar partea fracionar prin m cifre binare: dac n = 0 se obine reprezentarea numerelor subunitare; dac m = 0 se obine reprezentarea numerelor ntregi.

Bazele numerice ale calculatoarelor

Exemplu. S se reprezinte n cod direct (pe 16 bii) numrul (27)10, respectiv numrul -(27)10. Rezolvare.

(27 )10 = (11011 )2 - -- f (27 )10

CD

= =

(0000000000011011) 2 b semn

- (27 )10

CD

(1000000000011011) 2

b) Reprezentarea prin complement fa de 1 ( cod invers - CI) Un numr reprezentat n cod invers se poate scrie:
n-1 n + 0 2 ai 2i CI i=- m N= n-1 n i 1 2 + ai 2 i=- m

dac N 0

dac N p 0

a i = 1 a i pentru i = m, (n 1) iar ai reprezint cifrele binare ale numrului N.

Observaie. Reprezentarea prin complement fa de 1 se obine astfel:

1. Fie calculnd:

CI N = 2 n+ 1 -| N |CD - 2- m

NCD este reprezentarea n cod direct a valorii absolute a numrului N.

Sisteme de calcul i operare

2. Fie prin inversarea cifrelor binare (inclusiv cifra de semn) din reprezentarea n cod direct a numrului n valoare absolut.
Exemplu. S se reprezinte n cod invers numerele (14)10 i -(14)10 (reprezentarea pe un octet). Rezolvare. * Numerele pozitive se reprezint n CI la fel ca i n CD.
(14 )10 = (1110 ) 2 (14 )10 CD, CI ( 0000 1110 ) = semn

CI pentru -(14)10 se poate calcula n dou variante: 1.

= 28 - ai 2i i=0

CI

20

ai ( i = 1,6 ) reprezint cifrele binare ale numrului (14)10, iar a7="0" este cifra de semn. Calculnd: 1 0000 0000 0000 1110 Aadar: 1111 0010 1 1111 0001

- (14)

CI

(1111 0001 )2 semn

Bazele numerice ale calculatoarelor

2. Acelai rezultat se obinea dac se pornea de la reprezentarea n CD a numrului n valoare absolut, adic (14)10, i se inversau toate cifrele binare.
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 n cod complementar este:
n-1 0 2n + ai 2i pentru N 0 CC i= m N = n-1 n ~ i 12 + a i 2 pentru N p 0 i= m

unde:

i= m

n-1

~ 2i = ai

i= m

n-1

ai 2i + 2-m

i a i = 1 a i iar ai (pentru i=n-1, n-2,...,0,...,-m) reprezint cifrele binare ale numrului | N|. Codul complementar al unui numr se poate obine astfel: 1. Fie calculnd:
CC

= 2n +1

- | N|CD

| N| are aceeai semnificaie

Sisteme de calcul i operare

ca la reprezentarea n CI; 2. Fie adunnd un 1 la CCMPS a reprezentrii numrului n CI; 3. Dac se consider reprezentarea n CD a numrului n valoare absolut, pentru obinerea codului complementar, ncepnd de la CCMPS se las neschimbate toate cifrele de zero, inclusiv prima cifr binar a crei valoare este 1; apoi toate celelalte cifre binare se vor inversa, inclusiv cifra de semn.
Exemplu. S se reprezinte n CC numerele 14 i -14 (pe un octet). Rezolvare.
CD,CI,CC

14

(0000 1110 )2

semn

Pentru a calcula CC al numrului -14 vom folosi cele trei metode. 1.


- (14 )10 = 28
CC

a i 2i

i=0

ai (i=16) fiind cifrele binare ale numrului zecimal 14, iar a7 = 0 cifra de semn.
CC

1 0000 0000 0000 1110 1111 0010

- (14 )10 = (1111 0010 )2

Bazele numerice ale calculatoarelor

2.
- (14)

= (1111
CC

CI

0001 )2 1

- (14)

= (1111

0010 )2

3. Cifre binare nemodificate


CD

14 = ( 000011 10)2
Cifrele binare se vor modifica 0 1 i 1 0.

14 = (11110010) 2
n sistemul octal sau hexazecimal vom avea:
CC

CC

- (14)

= (362 )8

= (F 2 ) H

Gruparea a trei cifre binare (respectiv patru cifre binare) se face ncepnd de la CCMPS (pentru numerele ntregi).
Observaie. n calculatoarele IBM-PC reprezentarea n virgul fix se face pentru numerele ntregi. Se utilizeaz formatele:

format ntreg pe cuvnt (word), avnd macheta:

Sisteme de calcul i operare

formatul scurt:

formatul lung:

0 dac N 0 unde S este bitul de semn i S = 1 dac N < 0

iar Ii (i=014|30|62) sunt cifrele reprezentrii binare a numrului. Dac N<0 (numr negativ) se utilizeaz reprezentarea prin complement fa de 2 (cod complementar). n tabelul 4.4 sunt prezentate formatul, precizia i domeniul de valori ale datelor reprezentate n virgul fix pentru Intel.
Lungimea, precizia i domeniul de valori ale datelor reprezentate n virgul fix la Intel
Tabelul 4.4 Tipul Format word Format scurt Lungime 16 32 Precizie 15 31 Domeniul de valori (binar) -215 215-1 -231 231-1 Domeniul de valori (zecimal) -32768 32767 -2.14*109 2.14*109

Format lung

64

63

-263 263-1

-9.22*1018 9.22*1018

Bazele numerice ale calculatoarelor

Exist o serie larg de aplicaii ce necesit numere care nu sunt ntregi. Exist, de asemenea, mai multe modaliti de reprezentare a numerelor reale fracionare. Una dintre modaliti este virgula fix, n care folosim aritmetica numerelor ntregi i ne imaginm virgula undeva n alt parte dect la dreapta bitului CMPS. Adunarea a dou numere astfel reprezentate poate fi fcut n acelai mod ca i o adunare ntreag, n timp ce nmulirea necesit o deplasare de bii. De-a lungul anilor au fost propuse i alte reprezentri ce utilizau fie stocarea logaritmului numerelor i executarea unei nmuliri prin adunarea logaritmilor, fie foloseau o pereche de ntregi (a,b) pentru reprezentarea fraciei a/b. Dintre toate aceste propuneri, una singur a avut succes pe scar larg: reprezentarea n virgul mobil, prezentat n continuare.
4.3.2 Reprezentarea n virgul mobil

n cazul reprezentrii numerelor n virgul mobil, se pleac de la faptul c un numr N se poate scrie sub forma: N=(f)b*bE, unde:
b reprezint baza sistemului de numeraie utilizat (mai frecvent se utilizeaz baza 2 sau 16); E exponentul real; f partea fracionar a numrului.

Reprezentarea n calculator, implic existena a trei cmpuri, acestea fiind:


bitul de semn:
0 dac N 0 S= 1 dac N < 0

La unele calculatoare reprezentarea numerelor reale pozitive difer de reprezentarea numerelor negative numai prin bitul de semn.

Sisteme de calcul i operare

Exponentul (cunoscut i sub denumirea de caracteristic), are o valoare determinat prin relaia: EXP = exponent real + constant n exces

Constanta n exces se stabilete n funcie de format i de calculator i are ca scop eliminarea unei zone n care s fie specificat semnul corespunztor exponentului real. Se pot reprezenta n acest mod i numere negative folosind acelai tip de reprezentare. Fracia (sau mantisa). Numrul de cifre binare corespunztoare acestei zone variaz, de asemenea, n funcie de calculator i formatul utilizat. De regul, fracia trebuie s fie normalizat, respectnd relaia:

1 (f ) b < 1 b
Pentru reprezentarea n virgul mobil a unui numr real N, ntr-un calculator din familia IBM-PC 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).

De regul se utilizeaz urmtoarele formate: 1) Formatul real binar simpl precizie, avnd macheta:

Bazele numerice ale calculatoarelor

dubl precizie:

S este bit de semn (S=0 dac N0 i S=1 dac N<0); fn - cifrele binare ale fraciei normalizate; Ei - cifrele binare ale zonei de exponent; EXP=E + (81)H. Dac zona exponent este egal cu zero, numrul zecimal este egal cu zero. Dac zona exponent este diferit de zero, atunci numrul zecimal va fi determinat astfel:

< N >=< S > ( 0.1 < fractie > )2 * 2< EXP> (80)h
2) Formatul real sau formatul IEEE (Institute of Electrical and Electronics Engineers) 754, aprut n anul 1985:
simpl precizie (format scurt), avnd macheta:

dubl precizie (format lung), cu macheta:

unde:
S - bit de semn (S=0 dac N0 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.

Sisteme de calcul i operare

format temporar (sau real extins), cu macheta:

unde:
S - bit de semn; I0 - bitul prii ntregii, ce se memoreaz n formatul temporar, implicit n formatul scurt i lung; fi - cifrele binare ale fraciei; Ei - cifrele binare ale zonei exponent,

EXP = E + 16383 [(3FFF)H] Dac exponentul este egal cu zero, atunci numrul este egal cu zero. Dac exponentul nu este egal cu zero, numrul zecimal se va calcula dup relaia: <N>=<S>*(1.<fracie>)2*2<EXP>-EXCES
Exemplu. S se reprezinte n virgul mobil (n format binar ct i n format real) simpl precizie numerele: N1 = 1 i N2 = -1. Rezolvare.

N1 = 120 ; N2 = -120

a) Format binar

VM

N1

= (8100

0000 ) H

Bazele numerice ale calculatoarelor

VM

N2

= (8180

0000 ) H

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


Exemplu Fie N1 = (8561 0000)H - reprezentarea n virgul mobil simpl precizie format binar. S se determine numrul din zecimal. Rezolvare. N1=25(0,1110000100...0)2=25x(2-1+2-2+2-3+2-8) = 24+23+22+2-3=28,125 4.3.3 Numere i valori speciale

n cadrul reprezentrii 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 funcie de bitul de semn. Ambele reprezentri sunt egale ca valoare. Semnul unui rezultat cu valoare 0 depinde de operaia 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 fracie 0 i de exponentul maxim permis de formatul respectiv (de exemplu 255 n format simpl precizie). Sunt generate excepii atunci cnd utilizarea unei valori infinite ca operand surs conduce la o operaie invalid.

Sisteme de calcul i operare

Valori NaN (Not a Number). Aceste valori nu fac parte din mulimea numerelor reale. Reprezentarea lor se face prin intermediul unui exponent maxim acceptat de reprezentarea respectiv i a unei fracii 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 exponeni modificai ntre 1 i 254 (ntre 126 i 127). Atunci cnd exponentul modificat este 0, numerele mai mici pot fi reprezentate fcnd bitul prii ntregi zero. Numerele din acest domeniu se numesc numere denormalizate. Acest lucru duce la scderea preciziei (numrul de bii semnificativi ai fraciei este redus datorit apariiei zerourilor de la nceput). n momentul normalizrii calculelor n virgul mobil, unitatea n virgul mobil opereaz cu numere normalizate i produce rezultate normalizate. Numerele denormalizate reprezint o condiie de excepie denumit underflow. Un numr denormalizat este calculat prin intermediul unei tehnici denumit gradual underflow. n figura 4.1 este prezentat un exemplu al procesului de denormalizare, iar n figura 4.2 sunt nfiate reprezentrile valorilor +0, -0 i a numerelor normalizate i denormalizate finite.

Figura 4.1 Exemplu de denormalizare

Bazele numerice ale calculatoarelor

Figura 4.2 Reprezentri pentru +0, -0, numere normalizate i denormalizate finite

Valori NaN (Not A Number)

Standardul IEEE definete 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 operaiile aritmetice fr a indica o excepie, pe cnd valorile SNaN semnalizeaz n general o excepie (operaie invalid) atunci cnd apar ca operanzi n operaii aritmetice. n figura 4.3 sunt nfiate modalitile de reprezentare pentru valorile speciale +, - i NaN. n figura 4.4 sunt prezentate operaiile ce genereaz valorile speciale despre care am discutat.

Figura 4.3 Reprezentri pentru +, -, valori NaN

Sisteme de calcul i operare

Figura 4.4 Operaii ce genereaz valori speciale

4.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 conine dou cifre zecimale pe un octet (cifra zecimal mai puin semnificativ pe biii 0 3 i cifra zecimal mai semnificativ pe biii 4 7). Datele reprezentate n BCD format despachetat conin o cifr zecimal pe octet - memorat n biii 0 3, iar biii 4 7 conin informaia (F)H [(1111)2]. Microprocesorul accept datele n format BCD mpachetat sau despachetat, avnd urmtoarea machet de reprezentare pe un octet:

Bazele numerice ale calculatoarelor

Exemplu. S se reprezinte n zecimal codificat binar (n BCD) numerele zecimale N1=9450 i N2=78431. Rezolvare. 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 secvenelor i nu s-a inut cont de semnul numrului. Pentru calculatoarele compatibile IBM-PC coprocesorul matematic memoreaz numerele ntregi zecimale pe zece octei - n format mpachetat. n acest caz macheta de reprezentare este:

unde: S - bit de semn ( 0 pentru numere pozitive, 1 pentru numere negative); Di - cifr zecimal (dou cifre per octet); X - bii nefolosii. Numerele negative se deosebesc de cele pozitive prin bitul de semn.
4.4 Operaii aritmetice n sistemul binar 4.4.1 Adunarea n binar

Tabela operaiei de adunare n binar este: + 0 1


*

0 0 1
*

1 1 10

1 se transport la rangul urmtor

Sisteme de calcul i operare

Exemplu. S se nsumeze n binar (00010101)2 cu (10010111)2. Vom avea:

(00010101)2 + (10010111)2 (10101100)2

(21)10 + (151)10 (172)10

4.4.2 Scderea n binar

Tabela operaiei de scdere n binar este: Desczut Scztor 0 1


*

0 0
*

1 1 0

Rezultat datorit mprumutului din rangul superior

Exemplu. S se scad n binar:

(11011)2 (27)10 (01111)2 (15)10 (01100)2 (12)10

Observaie. n calculator operaia de scdere se reduce la o operaie de adunare prin utilizarea codului invers sau a codului complementar.

Bazele numerice ale calculatoarelor

4.4.3 nmulirea n binar

Tabela nmulirii n binar este: 0 1 0 0 0 1 0 1


Exemplu. S se efectueze nmulirea: (1101)2 x (1001)2.

11012 10012 11012 00002 00002 11012 11101012 Deci (1101)2 x (1001)2 = (1110101)2 (13)10 x (9)10=(117)10

Sisteme de calcul i operare

4.4.4 mprirea n binar

Cea mai simpl metod este scderea repetat a mpritorului din demprit.
Exemplu. S se efectueze mprirea: (1010001)2:(1001)2=(1001)2.

n acest caz mprirea s-a efectuat fr rest: (81)10 :(9)10=(9)10.


Exemplu. S se efectueze mprirea: (100011)2 : (110)2= (101,110)2.

n aceast situaie operaia de mprire poate continua, astfel nct aproximarea rezultatului s fie ct mai bun. Operaiile n sistemul octal sau hexazecimal se vor efectua conform regulilor de adunare i nmulire ce sunt prezentate n tabelele 4.5 4.8.

Bazele numerice ale calculatoarelor

Adunarea n sistemul hexazecimal


Tabelul 4.5

+ 0 1 2 3 4 5 6 7 8 9

0 0 1 2 3 4 5 6 7 8 9

1 1 2 3 4 5 6 7 8 9 A B C D E F

2 2 3 4 5 6 7 8 9 A B C D E F

3 3 4 5 6 7 8 9 A B C D E F

4 4 5 6 7 8 9 A B C D E F

5 5 6 7 8 9 A B C D E F

6 6 7 8 9 A B C D E F

7 7 8 9 A B C D E F

8 8 9 A B C D E F

9 9 A B C D E F

A a B C D E F

B B C D E F

C C D E F

D D E F

E E F 10

F F 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

10 11

10 11 12

10 11 12 13

10 11 12 13 14

10 11 12 13 14 15

10 11 12 13 14 15 16

10 11 12 13 14 15 16 17

A A B B C C D D E E F

10 11 12 13 14 15 16 17 18 1 1 1 1

10 11 12 13 14 15 16 17 18 19 1 1 1

10 11 12 13 14 15 16 17 18 19 1 1

10 11 12 13 14 15 16 17 18 19 1

10 11 12 13 14 15 16 17 18 19

F 10 11 12 13 14 15 16 17 18 19

Sisteme de calcul i operare

nmulirea n sistemul hexazecimal


Tabelul 4.6

* 0 1 0 0 0 1 0 1 2 0 2 3 0 1 4 0 4 5 0 5 6 0 6 7 0 7

2 0 2 4 6 8 A C E

3 0 3 6 9 C F

4 0 4 8 C

5 0 5 A F

6 0 6 C

7 0 7

8 0 8

9 0 9

A 0 A

B 0 B

C 0 C

D 0 D

E 0 E

F 0 F

E 10 12 14 16 18 1A 1C 1E

12 15 18 1B 1E 21 24 27 2A 2D

10 14 18 1C 20 24 28 2C 30 34 38 3C 14 19 1E 23 28 2D 32 37 3C 41 46 4B

12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A 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

Bazele numerice ale calculatoarelor

Adunarea n sistemul octal


Tabelul 4.7

+ 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

nmulirea n sistemul octal


Tabelul 4.8

* 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 23

4 0 4 10 14 20 24 30 34

5 0 5 12 17 24 31 36 45

6 0 6 14 22 30 36 44 52

7 0 7 16 25 34 43 52 61

Sisteme de calcul i operare

4.5 Operaiile aritmetice n virgul fix (VF) 4.5.1 Adunarea n cod direct (CD)

Se adun mrimile numerelor, fr cifra de semn i se d rezultatului semnul comun celor dou numere. Fie:
CD

N1

= an
CD

2n

+ ai 2i
i= m n-1

n-1

ai

{0,1}

N2

= bn

2n

+ bi2i
i= m
n -1 i i

bi

{0,1}
i i

n N1 + N 2 = a n 2 +

CD

i = m

(a + b + t ) 2

nsumarea se face ncepnd de la bitul cel mai puin semnificativ al reprezentrii numerelor, inndu-se cont de transportul de la rangul anterior (ti). Se consider t-m=0, iar dac va apare tn (transport de la bitul CMS al mrimii) avem de-a face cu depire binar. Rezultatul operaiei poate fi corect cnd nu apare transport de la cifra cea mai semnificativ a mrimii rezultatului i poate fi incorect cnd apare transport. Pentru simplitate, vom lucra cu numere ntregi reprezentate pe un octet, primul bit fiind bitul de semn iar urmtorii apte bii pentru mrime (-128 < N < 127).

Bazele numerice ale calculatoarelor

Exemplu S se nsumeze N1 cu N2, avnd N1=(40)10 i N2=(60)10. Rezolvare.


CD

N1

= (00101000 )2 = (00111100 )2
CD

CD

N2

N1 + N 2

= (01100100 )2

Verificnd rezultatul o s obinem: N 1 +N 2 =+(1 2 6 +1 2 5 +0 2 4 +0 2 3 +1 2 2 +0 2 1 +0 2 0 )=(100) 10


Exemplu S se calculeze N1 + N2, avnd N1=40 i N2=90. Rezolvare.
CD

N1

(00101000 )2 (01011010 )2

CD

N2

N1 + N 2 = (10000010 )2 Bitul CMS al mrimii rezultatului Deoarece n acest caz rezult transport de la bitul CMS, rezultatul este incorect. (Rezultatul nsumrii celor dou numere nu poate fi reprezentat utiliznd doar apte cifre binare).

CD

Sisteme de calcul i operare

Exemplu S se calculeze N1+N2, avnd N1= -25 i N2= -30. Rezolvare.


CD

N1

(1 0011001 )2 (1 0011110 )2 0110111 )2

CD

N2

CD

N1 + N 2
Verificnd:

= (1

N 1 +N 2 = -(0 2 6 +1 2 5 +1 2 4 +0 2 3 +1 2 2 +1 2 1 +1 2 0 ) N 1 +N 2 = -55, rezultat corect


Exemplu S se calculeze N1+N2, avnd N1= -75 i N2= -80 Rezolvare.
CD

N1

= (11001011 )2 = (11010000 )2
CD

CD

N2

N1 + N 2 = (10011011 )2

Apare transport de la bitul CMS, rezultat incorect.

Bazele numerice ale calculatoarelor

Dac cele dou numere au semne diferite procedura de lucru este asemntoare celei ce urmeaz, cnd numerele sunt reprezentate n cod invers.
4.5.2 Adunarea/scderea n cod invers (CI)
Adunarea/scderea numerelor cu acelai semn

a) Dac ambele numere sunt pozitive, reprezentarea lor n cod invers este identic reprezentrii 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 N1CD ,N2CD reprezentarea n cod direct a valorilor absolute ale numerelor N1 i N2.
N1 = 28 - | N1 |CD - 20
CI

N2

= 2 -| N
8

CI

2 CD

-2

N1 + N 2 = 28 + 28 -| N 2 |CD -| N 2 |CD - 2 0 - 2 0
Avnd 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 cea mai puin semnificativ,

CI

Sisteme de calcul i operare

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

CI

Bitul CMPS

Rezultat

Transport de la cifra de semn

Exemplu. S se calculeze N1+N2, avnd: N1= -30 i N2= -14.


Rezolvare

N1 = ( 1110 0001 )2 N 2 = ( 1111 0001 )2 N1 + N 2 = (1 1101 0010 )2 + 1 N1 + N 2 = (1101 0011 )2 N1 + N 2 = (1010 1100 )2
CD CI CI CI

CI

Verificnd: N 1 +N 2 = - (1 2 5 +1 2 3 +1 2 2 )=-44, rezultat corect.

Bazele numerice ale calculatoarelor

Exemplu. S se calculeze N1+N2, avnd N1= -81 i N2= -72 Rezolvare.

N1 = ( 1010 1110 )2 N 2 = ( 1011 0110 )2 N1 + N 2 = (1 0110 0100 )2 + 1


CI CI

CI

N1 + N 2 = (0110 0101 )2

CI

N1 + N 2 > 0

Rezultatul este eronat, deoarece cel mai mic numr ntreg ce se poate reprezenta n cod invers pe un octet este -127.
Adunarea/scderea numerelor cu semne diferite

Fie N1>0 i N2<0. Reprezentarea lui N1 este aceeai n cod direct i cod invers.
CI

N 2 = 28 -| N 2 |CD - 2 0
n urma operaiei de adunare obinem:
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.

Sisteme de calcul i operare

Exemplu. S se calculeze N1 + N2, avnd N1=91 i N2=-20. Rezolvare.

N1 = ( 0101 1011 )2 N 2 = ( 1110 1011 )2 N1 + N 2 = (1 0100 0110 )2 + 1 N1 + N 2 = (0100 0111 )2


CI CI CI

CI

rezultat corect

Exemplu. S se calculeze N1+N2, avnd N1= -91 i N2= 20. Rezolvare.


N1= ( 1010 0100 ) 2 N1 + N 2 = (1011 1000 ) 2
CI CI

N 2 = ( 0001 0100 ) 2 N1 + N 2 = (1100 0111 ) 2


CD

CI

i n acest caz rezultatul este corect. Pentru verificarea rezultatului se va ine seama de bitul de semn: dac acesta este "0" reprezentarea rezultatului este acelai n cod invers i cod direct. dac acesta este "1" rezultatul este n cod invers i difer de reprezentarea lui n cod direct. Scderea a dou numere binare se rezum la adunarea celor dou numere, utiliznd reprezentarea n cod invers. Fie N1>0 i N2>0. Relaia N1 - N2 este echivalent cu N1 + (-N2).

Bazele numerice ale calculatoarelor

Observaie. Adunarea n cod invers, ca i n cod complementar, opereaz asupra tuturor cifrelor binare, inclusiv asupra cifrei de semn. 4.5.3 Adunarea/scderea n cod complementar (CC) Adunarea /scderea numerelor cu acelai semn

a) Dac ambele numere sunt pozitive, reprezentarea lor n cod complementar este identic reprezentrii n CD. b) Numerele sunt negative. Fie N 1 <0 i N 2 <0:
CC CC

N1 = 28 -| N1|CD

N 2 = 28 -| N 2 |CD

Prin N1CD, N2CD am notat reprezentrile n cod direct ale valorilor absolute pentru numrul 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

innd seama de forma de reprezentare a rezultatului, apare necesar ca transportul de la cifra de semn s se neglijeze.

Sisteme de calcul i operare

Exemplu.

S se calculeze: N1+N2, avnd N1=-14 i N2=-72


Rezolvare.
N1 = ( 1111 0010 )2
CC CC

N 2 = ( 1011 1000 )2

CC

N1 + N 2 = (1 1010 1010 )2

Se ignor Pentru verificarea rezultatului se va calcula:


CD

N1 + N 2

= (11010110 )2

= - (1 26 + 1 24 + 1 22 + 1 21) = - 86

Observaie. Dac n urma nsumrii a dou numere cu acelai semn, rezultatul are semn contrar acesta este eronat (valoarea rezultatului nu se poate ncadra pe numrul de bii utilizat). Adunarea/scderea numerelor cu semn diferite

Fie N1>0 i N2<0.


CC

N2

= 28 -| N 2 |CD
CC

Prin adunare avem:

N1 + N 2

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

Dac N1 > N2 rezultatul va fi pozitiv, iar pentru N1 < N2 rezultatul va fi negativ.

Bazele numerice ale calculatoarelor

Exemplul. S se calculeze N1 + N2, avnd N1= 33 i N2= -23. Rezolvare.

N1 = ( 0010 0001 )2
CC

CC

N 2 = ( 1110 1001 )2

CC

N1 + N 2 = (1 0000 1010 )2
Transport care se neglijeaz Verificarea: N 1 +N 2 = 1 2 3 +1 2 1 =(10) 1 0
Exemplu. S se calculeze N1+N2, avnd N1 = -33 i N2 = 3
CC CC

N1 = ( 1101 1111 )2
CC

N 2 = ( 0001 0111 )2

N1 + N 2 = ( 1111 0110 )2

Pentru verificarea rezultatului se va ine seama de valoarea bitului de semn: dac acesta este "0" - rezultatul este pozitiv i reprezentarea este aceeai n CD i CC; dac acesta este "1" - rezultatul negativ i avem reprezentri diferite n CD i CC. Verificarea rezultatului anterior:
CD

N1 + N 2

= (1000 1010 )2

_ N1 + N 2 = - (10 )10

Sisteme de calcul i operare

4.6 Operaii aritmetice n virgul mobil (VM) a) Adunarea/scderea

Fie numerele 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 numrul de cifre binare utilizate pentru reprezentarea prii fracionare.
a1) n1=n2 N 1 +N 2 =2 n 1 (f 1 +f 2 ) Dac f1+f2 1 sau f1-f2 < 1/2 , rezultatul se va normaliza, prin deplasarea cu o poziie spre stnga sau dreapta virgulei, concomitent cu adunarea sau scderea unei uniti din zona exponent. a2) n1n2, n1 > n2 . Pentru a aduna/scdea cele dou numere, trebuie s aib acelai exponent. Deoarece n1 > n2, putem scrie:

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

Un numr de (n1-n2) zerouri n continuare se va proceda ca n cazul precedent; dac n urma efecturii adunrii/scderii fracia rezultat nu este normalizat se va normaliza modificnd corespunztor i exponentul.

Bazele numerice ale calculatoarelor

b) nmulirea i mprirea

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

Operaiile de nmulire/mprire asupra zonelor de fracie se realizeaz prin nsumri (scderi) repetate. Dac nu este normalizat, fracia rezultat se va normaliza.
4.7 Operaii aritmetice n codul numeric 8421

4.7.1 Adunarea n 8421

Adunarea numerelor n zecimal codificat binar (8421) se face binar, rang cu rang pe fiecare grup de patru cifre binare, cu adugarea, eventual, a unor corecii. Fie a i b dou cifre zecimale codificate binar (n 8421) care se adun; rezultatul c = a + b poate fi: corect, i nu este necesar s se aplice nici o corecie dac: 0000< c< 1001; incorect i se impune corecia, adunnd 0110 n situaiile: 1010< c< 1111 - aceast reprezentare nu corespunde unei cifre n zecimal. Adunnd 0110 va determina n transport la rangul urmtor. 0000< c< 1001, dar a rezultat a cincea cifr binar, aceasta fiind 1 i reprezint transportul pentru tetrada binar superioar. ccorectat = c + 0110

Sisteme de calcul i operare

Exemplu. S se adune n codul numeric 8421 numerele N=883 i M= 592.

4.7.2

Scderea n 8421

Fie a i b dou cifre zecimale codificate binar, n codul 8421 ce se scad astfel: dac c = a-b este un numr 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 configuraie de cifre [(10000)2] se adun la tetrada a i din aceasta se scade tetrada b, obinndu-se un numr pozitiv. Noului rezultat i se aplic o corecie prin scderea cifrei 610, adic (0110)2. Scderea este necesar deoarece n zecimal valoarea mprumutului este 10, iar prin reprezentarea ntr-un cod cu 4 cifre binare mprumutul este 16.

Bazele numerice ale calculatoarelor

Exemplu S se scad, n codul 8421, din numrul N= 1032, numrul M = 974.