Sunteți pe pagina 1din 9

26

Arhitectura calculatoarelor

2.6. Reprezentarea numerelor n virgul mobil


Multe aplicaii necesit numere care nu sunt ntregi. Exist mai multe posibiliti pentru reprezentarea acestor numere. O posibilitate este reprezentarea n virgul fix. n acest caz, se poate utiliza aritmetica pentru numere ntregi, iar apoi se plaseaz virgula binar n poziia predefinit, de exemplu, dup bitul de semn. Adunarea a dou numere reprezentate ntr-un asemenea format poate fi realizat cu un sumator pentru numere ntregi, n timp ce nmulirea necesit operaii suplimentare de deplasare. n cazul reprezentrii numerelor n virgul fix, dei virgula nu mai este reprezentat fizic n calculator, poziia virgulei binare, stabilit prin proiectare, nu mai poate fi schimbat. Pentru transformarea tuturor numerelor n acest format, trebuie executate o serie de operaii de scalare sau deplasare, atand numerelor factori de scal. Evidena acestora trebuie realizat prin program, ceea ce mrete timpul de calcul. Alte reprezentri care au fost propuse constau n pstrarea logaritmilor numerelor i executarea nmulirii prin adunarea logaritmilor, sau utilizarea unei perechi de ntregi (x, y) pentru a reprezenta fracia x/y. O soluie mai avantajoas este utilizarea unei tehnici de scalare automat, cunoscut sub numele de reprezentare n virgul mobil (numit i reprezentare n virgul flotant sau notaie tiinific). n acest caz, factorul de scal devine o parte a cuvntului din calculator, poziia virgulei variind pentru fiecare numr n mod automat.

2.6.1. Principii
n general, un numr N se poate reprezenta n virgul mobil (VM) n forma urmtoare: N = M B E (2.25) Un numr reprezentat n VM are dou componente. Prima component este mantisa (M), care indic valoarea exact a numrului ntr-un anumit domeniu, fiind reprezentat de obicei ca un numr fracionar cu semn. A doua component este exponentul (E), care indic ordinul de mrime al numrului. n expresia de sus, B este baza exponentului. Aceast reprezentare poate fi memorat ntr-un cuvnt binar cu trei cmpuri: semnul, mantisa i exponentul. De exemplu, presupunnd un cuvnt de 32 de bii, o asignare posibil a biilor la fiecare cmp poate fi urmtoarea:
31 30 23 22 S Exponent 0 Mantis

Aceasta este o reprezentare n mrime i semn, deoarece semnul are un cmp separat fa de restul numrului. Cmpul de semn const dintr-un bit care indic semnul numrului, 0 pentru un numr pozitiv i 1 pentru un numr negativ. Nu exist un cmp rezervat pentru baza B, deoarece aceast baz este implicit i ea nu trebuie memorat, fiind aceeai pentru toate numerele.

2. Bazele aritmetice ale calculatoarelor

27

De obicei, cmpul rezervat exponentului nu conine exponentul real, ci o valoare numit caracteristic, care se obine prin adunarea unui deplasament la exponent, astfel nct s rezulte ntotdeauna o valoare pozitiv. Astfel, nu este necesar s se rezerve un cmp separat pentru semnul exponentului. Caracteristica C este deci exponentul deplasat: C = E + deplasament (2.26) Valoarea real a exponentului se poate afla prin scderea deplasamentului din caracteristica numrului. De exemplu, dac pentru caracteristic se rezerv un cmp de 8 bii, valorile caracteristicii pot fi cuprinse ntre 0 i 255. Considernd un deplasament de 128 (80h), exponentul real poate lua valori ntre 128 i +127, fiind negativ dac C < 128, pozitiv dac C > 128, i zero dac C = 128. Exponentul este deci reprezentat n exces 128. Unul din avantajele utilizrii exponentului deplasat const n simplificarea operaiilor executate cu exponentul, datorit lipsei exponenilor negativi. Al doilea avantaj se refer la modul de reprezentare al numrului zero. Mantisa numrului zero are cifre de 0 n toate poziiile. Exponentul numrului zero poate avea, teoretic, orice valoare, rezultatul fiind tot zero. La unele calculatoare, dac un rezultat are mantisa zero, exponentul rmne la valoarea pe care o are n momentul respectiv, rezultnd un zero impur. La majoritatea calculatoarelor, se recomand ca numrul zero s aib cel mai mic exponent posibil, rezultnd astfel un zero pur. n cazul exponenilor deplasai, exponentul cu cea mai mic valoare este 0. Deci, prin utilizarea caracteristicii, reprezentarea n VM a numrului zero este aceeai cu reprezentarea n VF, adic toate poziiile sunt 0. Aceasta nseamn c se pot utiliza aceleai circuite pentru testarea valorii zero. Un alt avantaj al utilizrii exponenilor deplasai este c numerele pozitive n virgul mobil sunt ordonate n acelai fel ca i numerele ntregi. Deci, mrimea numerelor n virgul mobil poate fi comparat utiliznd un comparator pentru numere ntregi. Un dezavantaj al utilizrii exponenilor deplasai este c adunarea lor este mai complicat, deoarece necesit scderea deplasamentului din suma exponenilor. n reprezentarea ilustrat anterior, mantisa const din 23 de bii. Dei virgula binar nu este reprezentat, se presupune c ea este aezat naintea bitului c.m.s. al mantisei. De exemplu, dac B = 2, numrul 1,75 poate fi reprezentat sub mai multe forme:
+0,111 21 +0,00111 23 0 0 1000 0001 1000 0011 1110 0000 0000 0000 0000 000 0011 1000 0000 0000 0000 000

Pentru simplificarea operaiilor cu numere n VM i pentru creterea preciziei acestora, se utilizeaz reprezentarea sub forma normalizat. Un numr n VM este normalizat dac bitul c.m.s. al mantisei este 1. Din cele dou reprezentri ale numrului 1,75 ilustrate anterior, prima este cea normalizat.

28

Arhitectura calculatoarelor

Deoarece bitul c.m.s. al unui numr normalizat n VM este ntotdeauna 1, acest bit nu este de obicei memorat, fiind un bit ascuns la dreapta virgulei binare. Aceasta permite ca mantisa s aib un bit semnificativ n plus. Astfel, cmpul de 23 de bii este utilizat pentru memorarea unei mantise de 24 de bii cu valori cuprinse ntre 0,5 i 1,0. Cu aceast reprezentare, Figura 2.1 indic gama numerelor care pot fi reprezentate pe cuvnt de 32 de bii, n virgul fix i n virgul mobil.

Figura 2.1. Numere care pot fi reprezentate n formate tipice de 32 de bii.

Dac se utilizeaz reprezentarea n C2, se pot reprezenta toate numerele ntregi ntre 231 i 2311, cu un total de 232 numere diferite. Pentru formatul prezentat, se pot reprezenta numere n urmtoarele domenii (Figura 2.1): Numere negative ntre (12 -24) 2127 i 0,5 2-128; Numere pozitive ntre 0,5 2-128 i (12-24) 2127. Exist cinci regiuni care nu sunt cuprinse n aceste domenii: Numere negative mai mici dect (12-24) 2127, apariia acestora determinnd o depire superioar negativ; Numere negative mai mari dect 0,5 2-128, care determin o depire inferioar negativ; Zero; Numere pozitive mai mici dect 0,5 2-128, care determin o depire inferioar pozitiv; Numere pozitive mai mari dect (12-24) 2127, care determin o depire superioar pozitiv.

2. Bazele aritmetice ale calculatoarelor

29

n unele cazuri, bitul ascuns se presupune poziionat la stnga virgulei binare. Astfel, mantisa memorat M va reprezenta de fapt valoarea 1,M. n acest caz, numrul normalizat 1,75 va avea urmtoarea form:
+1.11 20 0 1000 0000 1100 0000 0000 0000 0000 000

Presupunnd c bitul ascuns este poziionat la stnga virgulei binare n formatul prezentat, un numr normalizat diferit de zero reprezint urmtoarea valoare: (1)S (1,M) 2E128 unde S indic bitul de semn. n acest format se pot reprezenta numere n urmtoarele domenii: Numere negative ntre [1 + (1 223)] 2127 i 1,0 2128; Numere pozitive ntre 1,0 2128 i [1 + (1 223)] 2127. Problema care apare n cazul formatului prezentat este c nu exist o reprezentare pentru valoarea 0. Aceasta deoarece valoarea 0 nu poate fi normalizat. Totui, reprezentrile n VM rezerv de obicei o combinaie special de bii pentru reprezentarea valorii 0. De multe ori, aceast valoare se reprezint prin cifre de 0 n cadrul mantisei i a exponentului. Un asemenea exemplu de reprezentare este formatul standard definit de organizaia IEEE (standardul IEEE 754). Depirea superioar apare atunci cnd exponentul depete valoarea maxim, de exemplu peste 127 n cazul formatului prezentat. Depirea inferioar apare atunci cnd exponentul are o valoare negativ prea mic, de exemplu sub 128. n cazul depirii inferioare, rezultatul se poate aproxima cu 0. Coprocesoarele matematice i unitile de calcul n virgul mobil au anumite mecanisme pentru detectarea, semnalarea i tratarea depirii superioare i a celei inferioare. Pentru alegerea unui format n VM trebuie realizat un compromis ntre dimensiunea mantisei i cea a exponentului. Creterea dimensiunii mantisei va conduce la creterea preciziei numerelor, iar creterea dimensiunii exponentului va conduce la creterea domeniului numerelor care pot fi reprezentate. Singura cale de a crete att precizia, ct i domeniul numerelor, este de a utiliza un numr mai mare de bii pentru reprezentare. Cele mai multe calculatoare utilizeaz cel puin dou formate, n simpl precizie (de exemplu, pe 32 de bii), i dubl precizie (de exemplu, pe 64 de bii). (2.27)

2.6.2. Reprezentarea numerelor n formatul IEEE 754


n trecut, au existat diferene considerabile n modul de execuie a operaiilor n
VM la diferite familii de calculatoare. Aceste diferene se refereau la numrul de bii

alocai pentru exponent i pentru mantis, la gama exponenilor, la modurile de rotunjire i la operaiile executate la apariia unor condiii de excepie, ca depirea superioar sau cea inferioar. Pentru a facilita portabilitatea programelor de la un calculator la altul i pentru a ncuraja dezvoltarea programelor complexe orientate pe calcule numerice, Societatea de Calculatoare a organizaiei IEEE (Institute of Electrical and Electronics

30

Arhitectura calculatoarelor

Engineers) a elaborat un standard pentru reprezentarea numerelor n VM i pentru operaii aritmetice n aceast reprezentare. Acest standard a fost publicat n 1985. Standardul era destinat n primul rnd microprocesoarelor i microcalculatoarelor, unde unii productori pun la dispoziie doar posibiliti limitate pentru calcule numerice. Ca rezultat al acestui standard, au fost dezvoltate circuite sau procesoare care implementeaz standardul. De exemplu, cele mai multe uniti de calcul n VM i coprocesoare matematice, printre care i coprocesoarele matematice i unitile de calcul n VM ale procesoarelor Intel din familia 80x86, se conformeaz acestui standard. Standardul IEEE 754 definete urmtoarele formate sau precizii: precizie simpl, precizie simpl extins, precizie dubl i precizie dubl extins. Parametrii principali ai acestor formate sunt prezentai n Tabelul 2.7. Standardul nu precizeaz ca obligatorie implementarea tuturor formatelor, dar recomand implementarea combinaiei formatelor cu precizie simpl i precizie simpl extins, sau a formatelor cu precizie simpl, precizie dubl i precizie dubl extins.
Tabelul 2.7. Parametrii formatelor definite de standardul IEEE 754.
Precizie simpl Bii ai mantisei Exponent real maxim Exponent real minim Deplasament exponent 24 127 -126 127 Precizie simpl extins 32 1023 -1022 Nespecificat Precizie dubl 53 1023 -1022 1023 Precizie dubl extins 64 16383 -16382 Nespecificat

Pentru toate formatele, baza implicit este 2. Formatele cu precizie simpl, precizie dubl i precizie dubl extins sunt prezentate n Figura 2.2. Coprocesoarele matematice i unitile de calcul n virgul mobil ale procesoarelor implementeaz de obicei aceste formate.

Figura 2.2. Formatele cu precizie simpl, precizie dubl i precizie dubl extins definite de standardul IEEE 754.

S reprezint semnul numrului. Pentru exponentul deplasat se rezerv 8 bii n formatul scurt, 11 bii n formatul lung i 15 bii n formatul temporar. Deplasamentul exponentului pentru cele trei formate este de 127 (7Fh), 1023 (3FFh), respectiv 16.383

2. Bazele aritmetice ale calculatoarelor

31

(3FFFh). Valorile minime (0) i cele maxime (255, 2047, respectiv 32.767) ale exponentului nu sunt utilizate pentru numerele normalizate, ele fiind utilizate pentru reprezentarea unor valori speciale. Bitul ascuns este utilizat i la standardul IEEE 754, dar mantisa este reprezentat ntr-un mod diferit. Reprezentarea mantisei este denumit significand n standardul IEEE. n cazul formatelor cu precizie simpl i precizie dubl, mantisa const dintr-un bit implicit cu valoarea 1 (partea ntreag), virgula binar implicit i biii fraciei F: M = 1,F Dac toi biii fraciei sunt 0, mantisa este 1,0; dac toi biii fraciei sunt 1, mantisa este cu puin mai mic dect 2,0. Deci: 1,0 M < 2,0 Formatul cu precizie dubl extins este utilizat pentru reprezentarea numerelor n cadrul unitilor de calcul n VM i a coprocesoarelor matematice, n scopul reducerii erorilor datorate rotunjirilor. n acest format, bitul 63 reprezint partea ntreag a mantisei, care nu este implicit. Numerele n formatul temporar nu sunt ntotdeauna normalizate, de aceea nu ncep n mod obligatoriu cu un bit de 1. Din acest motiv, acest bit este reprezentat n mod explicit, fiind notat cu I n cadrul formatului. Valoarea mantisei este n acest caz: M = I,F Valoarea unui numr n precizie simpl (NS), n precizie dubl (ND) i n precizie dubl extins (NE) este: NS = (1)s M 2E-127 ND = (1) M 2
s E-1023

(2.28) (2.29) (2.30)

NE = (1)s M 2E-16383

Gama numerelor care pot fi reprezentate n precizie simpl este cuprins ntre aproximativ 1,1810-38 i 3,41038, cea a numerelor reprezentate n precizie dubl este cuprins ntre 2,2310-308 i 1,7910308, iar cea a numerelor n precizie dubl extins este cuprins ntre 3,3710-4932 i 1,18104932.

Exemple
1) Care este reprezentarea binar a numrului 0,75 n simpl precizie? Numrul 0,75 poate fi scris ca 3/4 sau 0,11 n binar. Notaia tiinific a numrului este -0,1120, iar forma normalizat a acestei notaii este 1,121. Exponentul va fi 1 + 127 = 126 (7Eh). Reprezentarea numrului n precizie simpl este deci:
31 30 23 22 0 1 0111 1110 1000 0000 0000 0000 0000 000

32

Arhitectura calculatoarelor 2) Care este numrul zecimal reprezentat de urmtorul cuvnt?


31 30 23 22 0 1 1000 0001 0100 0000 0000 0000 0000 000

Bitul de semn este 1, cmpul rezervat exponentului conine 81h = 129, iar cmpul fraciei conine 1 22 = 0,25. Valoarea numrului este: (1)1 1,25 2(129127) = 1,25 22 = 1,25 4 = 5,0 Una din problemele care apare la calculele cu numere n VM se refer la modul de tratare al depirilor inferioare i superioare. O alt problem este reprezentarea valorilor nedefinite. n acest scop, pe lng numerele normalizate, standardul mai permite i reprezentri ale unor valori speciale, pentru care sunt rezervate valoarea 0 i valoarea maxim a exponentului. Valorile speciale pentru formatele cu precizie simpl i precizie dubl sunt prezentate n Tabelul 2.8. n acest tabel se indic i valorile numerelor normalizate n cele dou formate.
Tabelul 2.8. Valori ale numerelor reprezentate conform standardului IEEE 754.
Precizie simpl (32 bii) Exponent 0 0 1254 255 255 Significand 0 0 orice valoare 0 0 Valoare (1) 0 (1) 2
S E126 S

Precizie dubl (64 bii) Exponent 0 0 12046 2047 2047 Significand 0 0 orice valoare 0 0
S

Valoare (1)S 0 (1) 2E1022 (0.F) (1)S 2E1023 (1.F) (1)S NaN

(0.F)

(1)S 2E127 (1.F) (1) NaN


S

Pentru valoarea zero, att exponentul, ct i mantisa, sunt egale cu 0. Exist dou reprezentri pentru valoarea 0, n funcie de bitul de semn: +0, respectiv 0. Bitul ascuns de la stnga virgulei binare este implicit 0 n loc de 1. n cazul obinerii unui rezultat cu o valoare mai mic dect numrul normalizat cel mai mic posibil, n mod obinuit rezultatul este setat la zero i calculele continu, sau se semnaleaz o condiie de depire inferioar. Nici una din aceste soluii nu este satisfctoare. De aceea, standardul permite utilizarea numerelor care nu sunt normalizate, acestea fiind numite numere denormalizate. Caracteristica acestor numere este 0, iar mantisa este diferit de 0. n acest caz, bitul ascuns este 0. Un numr denormalizat este generat printr-o tehnic numit depire inferioar gradual. Tabelul 2.9 prezint un exemplu de aplicare a acestei tehnici n procesul de denormalizare.

2. Bazele aritmetice ale calculatoarelor


Tabelul 2.9. Exemplu de aplicare a depirii inferioare graduale pentru denormalizare.
Operaie Rezultat Denormalizare Denormalizare Denormalizare Rezultat denormalizat Semn 0 0 0 0 0 Exponent 129 128 127 126 126 Mantis 1,0101110000000 0,1010111000000 0,0101011100000 0,0010101110000 0,0010101110000

33

Formatul utilizat este cel cu precizie simpl, astfel nct exponentul real minim este 126. Rezultatul din acest exemplu necesit un exponent egal cu 129 pentru a se obine un numr normalizat. Deoarece 129 este n afara domeniului permis pentru exponeni, rezultatul este denormalizat prin deplasarea mantisei la dreapta i incrementarea exponentului pn cnd acesta ajunge la valoarea minim permis 126. n cazul extrem, toi biii semnificativi sunt deplasai n afara mantisei, obinndu-se un rezultat egal cu zero. Pentru cazul n care apare o depire superioar, exist o reprezentare special pentru infinit, constnd din exponentul cu valoarea maxim pentru formatul respectiv, i mantisa egal cu 0. n funcie de bitul de semn, sunt posibile dou reprezentri pentru infinit, + i . Valoarea infinit se poate utiliza ca operand, utiliznd reguli ca: +n= n/=0 n/0= Astfel, utilizatorul poate decide dac va trata depirea superioar ca o condiie de eroare, sau va continua calculele cu valoarea infinit. Pentru indicarea diferitelor condiii de excepie, ca n cazul operaiilor nedefinite de forma /, , 0, 0/, 0/0, sau extragerea rdcinii ptrate dintr-un numr negativ, s-a prevzut un format special, care nu reprezint un numr obinuit, fiind numit NaN (Not a Number). Exponentul are valoarea maxim posibil, iar mantisa este diferit de 0. Astfel, exist o clas ntreag de valori NaN. Standardul IEEE specific faptul c atunci cnd argumentul unei operaii este NaN, rezultatul trebuie s fie NaN. Datorit regulilor de execuie a operaiilor aritmetice cu valori NaN, la scrierea subrutinelor de calcul n VM care accept o valoare NaN ca argument nu sunt necesare verificri speciale. De exemplu, presupunem c funcia arccos se calculeaz pe baza funciei arctg, utiliznd formula: arccos ( x) = 2arctg (1 x) /(1 + x)

Dac funcia arctg trateaz un argument NaN n mod corect, i funcia arccos va trata un asemenea argument n mod corect. Dac x este o valoare NaN, 1+x, 1x, (1+x)(1x) i (1 x) /(1 + x) vor fi de asemenea valori NaN. Astfel, nu este necesar testarea valorilor NaN. O alt caracteristic a standardului IEEE cu implicaii asupra circuitelor este regula de rotunjire. n urma operaiilor efectuate ntre dou numere n VM, de obicei

34

Arhitectura calculatoarelor

rezultatul nu poate fi reprezentat n mod exact ca un alt numr n VM. Standardul specific patru moduri de rotunjire: rotunjire spre 0, rotunjire spre +, rotunjire spre , i rotunjire la cel mai apropiat numr reprezentabil. Ultimul mod de rotunjire este cel implicit, i este prevzut pentru situaiile n care numrul se afl exact la jumtatea intervalului dintre dou reprezentri n VM. Acest mod efectueaz rotunjirea la un numr par. Standardul IEEE definete cinci tipuri de excepii: depire inferioar, depire superioar, mprire la zero, rezultat inexact i operaie invalid. n mod implicit, la apariia unei asemenea excepii, este setat un indicator i calculele continu. Standardul recomand ca implementrile s prevad un bit de validare pentru fiecare excepie. Dac apare o excepie cu bitul de validare setat, este apelat o rutin de tratare a excepiei. Excepiile de depire inferioar, depire superioar i mprire la zero sunt prevzute la majoritatea sistemelor de calcul n VM. Excepia de rezultat inexact apare atunci cnd rezultatul unei operaii trebuie rotunjit. Aceasta nu este o condiie excepional, deoarece apare n mod frecvent. Deci, validarea rutinei de tratare a acestei excepii poate avea un impact semnificativ asupra performanei. Excepia de operaie invalid apare n cazul unor operaii ca 0/0, sau 1 . Avantajul principal al standardului IEEE este c ajut la scrierea unor biblioteci de programe portabile. Acest standard are ns i unele dezavantaje: 1. Standardul a fost destinat iniial microprocesoarelor, astfel nct cerinelor pentru implementrile cu performane ridicate nu li s-a acordat o prioritate ridicat. 2. Standardul conine specificaii opionale. Pentru cei care implementeaz standardul, este dificil s decid care din aceste specificaii vor fi implementate. Pentru programatorii care doresc scrierea unor programe portabile, problema este dac trebuie s evite utilizarea specificaiilor opionale ale standardului. 3. Depirea inferioar gradual a fost implementat de obicei ntr-un mod care este cu mai multe ordine de mrime mai lent dect setarea rezultatului la zero, astfel nct de multe ori utilizatorii invalideaz aceast tehnic. 4. Standardul nu descrie operaiile aritmetice cu numere ntregi i nici funciile transcendentale (sin, cos, exp). n particular, standardul nu specific acurateea necesar pentru funciile transcendentale, sau valorile excepionale ale funciilor transcendentale, ca de exemplu 00.

2.7. Coduri
2.7.1. Coduri binar-zecimale
Aceste coduri se utilizeaz pentru codificarea cifrelor zecimale. Pentru codificarea fiecreia din cele 10 cifre, sunt necesari 4 bii; din cele 16 valori posibile, 6 vor fi neutilizate. Prin stabilirea unor corespondene ntre mulimea cifrelor zecimale i

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