Está en la página 1de 9

ARHITECTURA CALCULATOARELOR 2006-2007 CURSUL 3

1.4.2 Reprezentarea fraciilor n sistemul binar


Pentru a extinde notaia binar astfel nct s fie adecvat reprezentrii valorilor fracionare, vom utiliza notaia n virgul fix (radix point): reprezentarea binar conine un punct care are acelai rol ca i virgula utilizat n notaia zecimal. Aceasta nseamn c cifrele de la stnga punctului reprezint partea ntreag a valorii i sunt interpretate ca i n sistemul binar prezentat anterior, iar cifrele de la dreapta punctului reprezint partea fracionar a valorii i sunt interpretate ntr-o manier similar cu cea a celorlali bii, cu excepia faptului c poziiile lor au asociate ponderi fracionare. Astfel prima poziie din dreapta punctului are atribuit ponderea 1/2, urmtoarea poziie corespunde ponderii 1/4, urmtoarea corespunde ponderii 1/8 i aa mai departe. Observai ca aceasta nu nseamn altceva dect aplicarea n continuare a regulii stabilite anterior: fiecare poziie are alocat o pondere de dou ori mai mare dect cea a poziiei din dreapta sa. Avnd aceste ponderi asociate poziiilor biilor, decodificarea unei valori binare reprezentate n virgul fix se face la fel ca i n cazul n care n-am fi avut punctul care separ partea fix de cea fracionar. n particular, vom nmuli valoarea fiecrui bit cu ponderea asociat poziiei acelui bit. De exemplu, decodificarea reprezentrii binare 101.101 va avea ca rezultat 5 5/8, dup cum se art i n figura 1.19. Figura 1.19 Decodificarea reprezentrii binare 101.101 Valoarea bitului 1 0 1 . 1 0 1 Ponderea asociat poziiei 1 x o optime = 0 x o ptrime = 1 x o jumtate = 1 x unu = 0 x doi = 1 x patru = Total 1/8 0 1/2 1 0 4 5 5/8

n plus, tehnicile aplicate la sistemul de numeraie n baza zece se pot folosi de asemenea i n binar. Asta nseamn c pentru a aduna dou reprezentri binare n virgul fix, vom alinia unul sub altul punctele de separare ntre prile ntregi i fracionare i vom aplica acelai proces de adunare ca i cel prezentat anterior. De exemplu, 11.011 adunat cu 100.11 produce rezultatul 111.001, dup care se poate observa n continuare: 10.011 +100.11 111.001
CURS 3 AC 2006/2007 1/9

1.5 Stocarea numerelor ntregi


Atunci cnd avem nevoie de o tehnic eficient pentru reprezentarea numerelor ntregi ca iruri de bii, prima idee este s recurgem la notaia binar prezentat n sub capitolul 1.4. Acest lucru nu este ns posibil, pentru c adesea avem nevoie s memorm att valori pozitive, ct i negative. Ne trebuie deci un sistem de notaie care s permit reprezentarea att a numerelor ntregi pozitive, ct i a celor negative. Matematicienii au dezvoltat domeniul sistemelor de notaie pentru numere, iar unele dintre ideile lor s-au dovedit a fi foarte potrivite cu modul de realizare a circuitelor electronice i de aceia sunt utilizate pe scar larg n cadrul echipamentelor de calcul. n acest capitol vom prezenta dou astfel de sisteme de notaie: notaia n exces (excess notation) i notaia n complement fa de doi.

1.5.1 Notaia n exces


O metod de reprezentare a valorilor ntregi o reprezint notaia n exces (excess notation). Valorile din sistemul de reprezentare n exces sunt codificate utiliznd cuvinte binare de aceeai lungime. Pentru a realiza un sistem de notaie n exces, stabilim mai nti lungimea cuvintelor binare utilizate, apoi scriem una sub alta toate combinaiile posibile n ordinea n care ar aprea dac am numra n binar. n acest context, vom observa c primul cuvnt binar care are pe poziia bitului cel mai semnificativ valoarea 1 survine aproximativ la jumtatea listei. Vom considera c acest model reprezint valorile 1,2 3; iar cuvintele binare care-l preced sunt utilizate pentru codificarea valorilor negative 1, 2, 3, . n figura 1.20 este nfiat codul care rezult n cazul n care folosim cuvinte cu lungimea de patru bii. Putei observa c numrul 5 este reprezentat de combinaia 1101, iar 5 este codificat cu 0011. Remarcai c n sistemul de notaie n exces se poate face cu uurin diferena ntre cuvintele care reprezint valori negative i cele care reprezint valori pozitive. Primele au 0 pe poziia celui mai semnificativ bit , iar celelalte au 1. Cel mai semnificativ bit este adesea denumit bit de semn (sign bit). n cadrul notaiei n exces, un bit egal cu 0 indic o valoare negativ, iar un bit de semn egal cu 1 indic o valoare pozitiv sau valoarea zero. Figura 1.20 Tabelul de conversie pentru sistemul de notaie n exces cu opt Cuvnt Binar Valoarea reprezentat
1111 1110 1101 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8

Figura 1.21 Sistem de notaie n exces care utilizeaz cuvinte cu lungimea de trei bii Cuvnt Binar Valoarea reprezentat 111 3 110 2 101 1 100 0 011 -1 010 -2 001 -3 000 -4

CURS 3 AC 2006/2007

2/9

Sistemul reprezentat n figura 1.20 este cunoscut sub numele de notaia n exces cu opt. Pentru a nelege de ce, s interpretm mai nti fiecare dintre cuvintele de cod utiliznd sistemul binar clasic i apoi s comparm aceste rezultate cu valorile reprezentate n codul n exces. n fiecare caz, vei descoperi c valoarea rezultat n urma interpretrii binare este mai mare cu 8 dect cea rezultat n urma interpretrii n exces. De exemplu, cuvntul 1100 reprezint n codificarea normal valoarea 12, dar n cazul codificrii n exces reprezint valoarea 4; 0000 reprezint n mod normal valoarea zero, dar n cadrul codificrii n exces reprezint valoarea 8. ntr-o manier asemntoare, un sistem de reprezentare n exces bazat pe cuvinte cu lungimea de 5 bii va purta denumirea de notaie n exces cu 16, deoarece, de exemplu, cuvntul 10000 va fi utilizat pentru reprezentarea valorii 0, fa de cazul codificrii binare naturale, n care reprezint valoarea 16. Similar, v putei convinge c un sistem de notaie n exces pe trei bii poate fi numit i notaie n exces cu patru (figura 1.21). Pe baza acestor observaii obinem o metod rapid de codificare a valorilor utiliznd notaia n exces. Pentru a reprezenta o valoare n notaia n exces cu opt, trebuie s adunm 8 la acea valoare, s scriem rezultatul n baza 2 i apoi s adugm n fa bii de 0 (dac este nevoie) pentru a obine un cuvnt cu lungimea de 4 bii. De exemplu, pentru a codifica valoarea 5 utiliznd notaia n exces cu opt, adunm mai nti 8, obinnd valoarea 13, apoi scriem aceast valoare n binar obinnd 1101, care este chiar cuvntul binar dorit. Pentru a afla cuvntul care corespunde valorii 5 adunm 8 i obinem valoarea 3, care n binar se scrie 11, astfel c modelul de patru bii pe care-l cutm este 0011.

1.5.2 Notaia n complement fa de doi


Cel mai popular sistem de reprezentare a numerelor ntregi n cadrul calculatoarelor actuale este notaia n complement fa de doi (twos complement notation). Ca i sistemul de notaie n exces, acest sistem utilizeaz un numr fix de bii pentru a reprezenta valorile din cadrul sistemului. Figura 1.22 prezint sistemele n complement fa de doi bazate pe cuvinte de cod de lungime 3 i 4. Pentru construcia unui astfel de sistem, se ncepe cu un ir de bii de valoarea 0 de lungime adecvat i apoi se numr n binar pn cnd se ajunge la un ir de bii care ncepe cu un bit 0,1,2,3, Cuvintele care reprezint valorile negative se obin Figura 1.22 Sisteme de notaie n complement fa de doi Utiliznd cuvinte binare de lungime 3 Cuvnt binar Valoare reprezentat
011 010 001 000 111 110 101 100 3 2 1 0 -1 -2 -3 -4

Utiliznd cuvinte binare de lungime 4 Cuvnt binar Valoarea reprezentat


0111 0110 0101 0100 0011 0010 0001 0000 1111 1110 1101 1100 1011 1010 1001 1000 3/9 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8

CURS 3 AC 2006/2007

ncepnd cu un ir de bii cu valoarea 1 i numrnd n sens descresctor pn la atingerea cuvntului care ncepe cu un bit 1 i are toi ceilali bii zero. Cuvintele astfel obinute reprezint valorile 1, 2, 3, . (Dac v este greu s numrai n sens invers binar, ncepei de la cuvntul alctuit din 1 i restul biilor 0 i numrai ascendent pn la atingerea cuvntului care conine numai bii 1, scriind valorile obinute una deasupra celeilalte.) Observai c n sistemul de notaie n complement fa de doi valorile negative sunt reprezentate de cuvinte al cror bit de semn este 1; n schimb, un bit de semn egal cu 0 indic faptul c valoarea reprezentat este zero sau pozitiv. Reinei de asemenea c ntre reprezentrile valorilor pozitive i negative cu acelai modul exist o relaie de coresponden foarte convenabil. Aceste reprezentri sunt identice atunci cnd sunt citite de la dreapta la stnga, pn la inclusiv primul bit de 1 din cuvnt. De aici fiecare cuvnt este complementul celuilalt. (Complementul unui cuvnt binar este cuvntul obinut prin schimbarea tuturor biilor de 1 la valoarea 0, respectiv a tuturor biilor 0 n 1; cuvntul 0110 este complementul lui 1001 i invers.) De exemplu, n sistemul de codificare pe patru bii din figura 1.21 cuvintele care reprezint valorile 2 i 2 se termin amndou cu 10, dar cuvntul corespunztor valorii 2 ncepe cu 00, n timp ce reprezentarea valorii 2 ncepe cu 11. Aceast observaie conduce la realizarea unui algoritm care s permit obinerea reprezentrii binare pentru valori de semne contrare dar care au acelai modul. Vom copia cuvntul original ncepnd de la dreapta pn la apariia unui bit cu valoarea 1, apoi vom face complementul biilor rmai (vom schimba toi bii 1 rmai n 0 i toi biii 0 n 1) pe msur ce-i copiem (figura 1.23). Figura 1.23 Codificarea valorii 6 n complement fa de doi utiliznd patru bii Notaia valorii 6 n complement fa de doi cu utilizarea a 4 bii 0 1 1 0 Se copiaz biii de la dreapta la stnga pn cnd s-a copiat un bit cu valoarea 1

Notaia valorii 6 n complement fa de doi cu utilizarea a 4 bii

Se complementeaz biii rmai 1 0 1 0

nelegerea acestor proprietii elementare ale sistemelor n complement fa de doi conduce de asemenea la obinerea unui algoritm pentru decodificarea reprezentrilor n complement fa de doi. Dac modelul de bii ce trebuie decodificat are bitul de semn zero, se va citi direct valoarea ca i cum cuvntul ar fi o reprezentare binar normal. De exemplu, 0110 reprezint valoarea 6, deoarece 110 este reprezentarea binar a lui 6. Dac ablonul care trebuie decodificat are bitul de semn 1, vom nelege c valoarea reprezentat este negativ i tot ce ne rmne este s gsim modulul acelei valori. Vom realiza acest lucru copiind cuvntul original de la dreapta la stnga pn la copierea unui bit de 1, apoi vom completa biii rmai, i vom copia i n final vom decodifica cuvntul obinut ca i cum ar fi o reprezentare binar normal.

CURS 3 AC 2006/2007

4/9

De exemplu, pentru a decodifica cuvntul 1010, vom observa mai nti c bitul de semn este 1 i deci valoarea pe care o reprezint este negativ. n consecin, vom converti cuvntul n 0110, vom observa c aceasta corespunde valorii 6 i vom trage concluzia c ablonul original reprezint valoarea 6.

1.5.3 Adunarea numerelor reprezentate n complement fa de doi


Pentru a aduna valori reprezentate n complement fa de doi, aplicm acelai algoritm ca i pentru adunarea n binar, cu excepia faptului c toate cuvintele binare, inclusiv rezultatul, au aceiai lungime. Aceasta nseamn c atunci cnd se efectueaz o adunare ntr-un complement fa de doi, orice bit suplimentar generat la stnga rspunsului de ctre un transport final va fi eliminat. Astfel, adunnd 0101 i 0010 se obine 0111, n timp ce adunnd 0111 i 1011 se obine rezultatul 0010 (0111+1011 = 10010, care este trunchiat la 0010). Acceptnd aceast convenie, s considerm cele trei probleme de adunare prezentate n figura 1.24. n fiecare caz n parte, vom codifica valorile utiliznd notaia n complement fa de doi (pe patru biii), vom efectua adunarea aa cum s-a descris anterior i vom decodifica apoi rezultatul napoi n notaia zecimal. Figura 1.24 Probleme de adunare rezolvate utiliznd notaia n complement fa de doi 3 +2 0011 +0010 0101 1101 +1110 1011

(-3) +(-2)

-5

7 +(-5)

0111 +1011 0010

Observai c dac ar fi s folosim tehnicile uzuale nvate n coala primar, a treia problem ar fi un proces complet diferit de problemele precedente (este vorba de operaia de scdere). Pe de alt parte, prin trecerea problemelor n notaia n complement fa de doi, putem calcula rspunsul corect aplicnd n toate cazurile aceleai algoritm de adunare. Aceasta este prin urmare avantajul notaiei n complement fa de doi: adunarea oricrei combinaii de numere cu semn se poate efectua utilizndu-se acelai algoritm. Spre deosebire de elevi din coala primar, care nva mai nti adunarea i apoi scderea, un calculator care utilizeaz notaia n complement fa de doi trebuie s tie numai s efectueze adunarea i negarea biilor. De exemplu, operaia de scdere 7- 5 este identic cu problema de adunare 7 + (-5). n consecin, dac i se cere unui calculator s scad 5 (stocat sub forma 0101) din 7 (stocat ca 0111), acesta va schimba mai nti pe 5 n 5 (reprezentat ca 1011) i apoi va efectua adunarea 0111 + 1011, obinnd rezultatul 0010, care reprezint valoarea 2, dup cum este descris n continuare:
CURS 3 AC 2006/2007 5/9

7 +(-5)

0111 -0101

0111 +1011 0010

Observm astfel c atunci c pentru reprezentarea valorilor numerice se utilizeaz notaia n complement fa de doi, este suficient s folosim un circuit pentru adunare combinat cu un circuit pentru negarea unei valori pentru a rezolva att problema adunrii, ct i pe cea a scderii numerelor. Dar avantajele nu se opresc aici. nmulirea este de fapt adunarea repetat, iar mprirea reprezint scderea repetat (6/2 reprezint de cte ori poate fi sczut 2 din 6 fr s se obin un rezultat negativ). Astfel c, n ultim instan, putem efectua toate cele patru operaii aritmetice standard, adic adunarea, scderea, nmulirea i mprirea, utiliznd doar cele dou circuite.

1.5.4 Problema depirii superioare


O problem pe care am evitat-o n problemele precedente este aceea c n oricare dintre sistemele de numeraie pe care le-am prezentat exist o limit privind mrimea pe care pot so reprezinte valorile. Atunci cnd utilizm notaia n complement fa de doi cu cuvinte de patru bii, valoarea 9 nu are asociat nici un ablon, aa c nu este nici o ans s obinem un rspuns corect la efectuarea adunrii 5 + 4. De fapt, rezultatul va fi 7. O problem similar apare dac utilizm cuvinte cu lungimea de cinci bii i ncercm s reprezentm valoarea 17. O astfel de poat numele de depire superioar (overflow). Atunci cnd utilizm notaia n complement fa de doi, eroarea de depire superioar poate aprea la adunarea a dou valori pozitive sau la adunarea a dou valori negative. n fiecare dintre cazuri, depirea poate fi detectat prin verificarea bitului de semn a rspunsului. Aceasta nseamn c este semnalat depirea superioar dac adunarea a dou valori pozitive produce ca rezultat un ablon ce corespunde unei valori negative sau dac rezultatul adunrii a dou valori negative apare ca fiind pozitiv. Concluzia este aceea c i calculatoarele pot face greeli, aa c persoana care utilizeaz calculatorul trebuie s fie atent la pericole poteniale. Desigur, deoarece cele mai multe calculatoare manipuleaz cuvinte mult mai lungi dect cele pe care le-am utilizat n carte, valorile mari pot fi prelucrate fr s apar vreo eroare de depire. Multe calculatoare utilizeaz cuvinte de 32 de bii pentru stocarea valorilor utiliznd notaia n complement fa de doi, permind astfel lucrul cu valori de pn la 2.147.483.647, fr apariia depiri superioare. Dac sunt necesare i valori i mai mari, se folosete adesea tehnica denumit dubl precizie (double precision); ea permite ca lungimea cuvintelor utilizate s fie mrit fa de cea utilizat de obicei de ctre calculator. O alt abordare a problemei o reprezint schimbarea unitilor de msur. De exemplu, gsirea unei soluii exprimate n kilometri n loc de centimetri are ca efect utilizarea unor numere mai mici, pstrndu-i n unele cazuri precizia impus.

1.6 Stocarea numerelor fracionare


Spre deosebire de stocarea numerelor ntregi, stocarea unei valori care conine o parte fracionar impune s memorm nu numai modelele de 0 i 1 care compun reprezentare binar, ci i poziia virgulei zecimale. O metod uzual pentru a face acest lucru se bazeaz pe notaia tiinific i poart numele de notaie n virgul mobil (floating-point notation).
CURS 3 AC 2006/2007 6/9

1.6.1 Notaia n virgul mobil


S explicm notaia n virgul mobil printr-un exemplu care utilizeaz numai un octet pentru efectuarea stocrii. Cu toate c de obicei calculatoarele lucreaz cu cuvinte mult mai lungi, acest exemplu este reprezentativ pentru sistemele actuale i servete pentru a prezent concepte importante, fr s ne complicm folosind cuvinte lungi. Vom considera cel mai semnificativ bit din cadrul octetului ca fiind bitul de semn. Din nou, bitul de semn egal cu 0 nseamn c valoarea stocat este pozitiv, iar 1 nseamn c valoarea este strict negativ. mprim apoi cei apte bii rmai n dou grupuri dau cmpuri, cmpul exponentului (exponent field) i cmpul mantisei (mantissa field). S considerm cei trei bii care urmeaz dup bitul de semn ca fiind cmpul exponentului, iar cei patru bii rmai ca fiind cmpul mantisei. Octetul este deci mprit ca n figura 1.25. Putem explica semnificaia acestor cmpuri considernd urmtorul exemplu. S presupunem c un octet conine irul de bii 01101011. Analiznd acest cuvnt conform formatului precedent, putem vedea c bitul de semn este 0, exponentul este 110, iar mantisa este 1011. Pentru a decodifica octetul, extragem mai nti mantisa i plasm o virgul (punct) zecimal la stnga ei, obinnd .1011 Figura 1.25 Elemente componente ale notaiei n virgul mobil Cmp Bit de semn Exponent Mantis ___ _____

Apoi, extragem coninutul cmpului exponentului (110) i-l interpretm ca pe un ntreg stocat utiliznd metoda n exces pe trei bii (ca n figura 1.24). n acest caz, cuvntul binar din cmpul exponentului reprezint valoarea pozitiv 2. Acest fapt ne precizeaz c trebuie s mutm virgula la dreapta cu doi bii. (Un exponent negativ nseamn c virgula trebuie deplasat la stnga.) n consecin, obinem 10.11 care nseamn 2 3/4. Observm apoi c bitul de semn din exemplul considerat este 0; valoarea reprezentat este pozitiv. Vom trage concluzia c 01101011 reprezint valoarea 2 3/4. S lum alt exemplu, anume octetul 10111100. Extragem mantisa, obinem.1100 i mutm virgula cu un bit la stnga, deoarece cmpul exponentului (011) reprezint valoarea 1. Acum avem .01100 care reprezint 3/8. Deoarece bitul de semn din cuvntul iniial este 1, valoarea stocat este negativ. Tragem concluzia c 10111100 reprezint valoarea 3/8. Pentru a stoca o valoare utiliznd notaia n virgul mobil, vom inversa procesul prezentat anterior. De exemplu, pentru a codifica valoarea 1 1/8 o vom exprima mai nti n notaie binar, obinnd 1.001. Vom copia apoi cuvntul binar n cmpul rezervat mantisei de la stnga la dreapta, ncepnd cu primul bit diferit de zero din reprezentarea binar. n acest moment octetul arat astfel: ____1001 Acum trebuie s completm cmpul exponentului. n acest scop ne vom imagina coninutul cmpului mantisei avnd o virgul zecimal la stnga i vom determina numrul de bii i direcia n care trebuie s fie deplasat virgula pentru a se obine numrul binar iniial. n exemplul nostru, observm c virgula din .1001 trebuie deplasat cu un bit la dreapta pentru a se obine 1.001. Deoarece din aceast cauz exponentul trebuie s aib valoarea pozitiv 1, vom plasa combinaia 101 (care este reprezentarea valorii pozitive 1 st n notaia n exces cu
CURS 3 AC 2006/2007 7/9

patru) n cmpul exponentului. n final vom scrie 0 n bitul de semn, deoarece valoarea stocat este zero. La sfrit octetul arat astfel: 0 1 0 1 1 0 0 1 nainte de a trece mai departe, s explicm de ce este utilizat notaia n exces pentru reprezentarea exponentului n cazul sistemelor n virgul mobil. Utilizarea notaiei n exces reduce operaia de comparare a mrimii relative a dou valori la simpla parcurgere a reprezentrilor de la stnga la dreapta, pn la ntlnirea primului bit care difer. De exemplu, dac ambii bii de semn sunt zero, cea mai mare dintre cele dou valori este aceea care are 1 pe poziia primului bit care difer la parcurgerea de la stnga la dreapta celor dou cuvinte. Astfel, dac 00101010 i 00011001 sunt reprezentri n virgul mobil, vom putea afirma c prima reprezentare corespunde unei valori mai mari, fr a trebui s determinm mai nti valorile care corespund efectiv celor dou reprezentri.

1.6.2 Erori de rotunjire


S studiem acum ce se ntmpl dac ncercm s stocm valoarea 2 5/8 utiliznd sistemul n virgul mobil pe un octet (prezentat anterior). Scriem mai nti valoarea 2 5/8 n binar, cea ce conduce la 11.101. ns atunci cnd vom copia acest rezultat n cmpul mantisei, vom descoperi c nu avem suficient spaiu i ca urmare ultimul 1 (cel care corespunde ultimului 1/8) se va pierde (figura 1.26). Dac ignorm aceast problem i continum cu completarea cmpului exponentului i a bitului de semn, vom obine cuvntul 01101010, care reprezint valoarea 2 1/2, n loc de 2 5/8. Ceea ce s-a ntmplat poart numele de eroare de rotunjire (round-off error), cauzat n acest caz de faptul c lungimea cmpului mantisei este de patru bii, n timp ce pentru pstrarea preciziei de reprezentare este necesar un cmp de cinci bii. Soluia evident pentru evitarea acestei probleme const n creterea dimensiunii cmpului mantisei, adic exact cea ce se face n cazul calculatoarelor reale. La fel ca i n situaia stocrii numerelor ntregi, pentru memorarea valorilor n virgul mobil se utilizeaz de obicei cel puin 32 de bii, n loc de 8 bii, cum am procedat noi. Figura 1.26 Codificarea valorii 2 5/8 2 5/8 10.101

10101 Cmp Bit de semn Exponent Mantis _ ___ 1010

Bit se semn

Aceast abordare permite de asemenea i existena simultan a unui cmp al exponentului cu o lungime mai mare. Totui, chiar i utiliznd i aceste formate de dimensiuni mari, mai apar uneori situai n care este necesar o acuratee mai mare. n aceste cazuri, vom aplica din nou conceptul de dubl precizie, prezentat deja.

CURS 3 AC 2006/2007

8/9

O alt surs de erori de rotunjire este un fenomen cu care suntei obinuii deja din notaia zecimal; problema valorilor cu numr infinit de zecimale (periodice), cum ar fi de exemplu situaia n care ncercm s exprimm fracia 1/3 n form zecimal. Unele valori nu pot fi reprezentate precis, indiferent cte zecimale utilizm. Diferena dintre notaia zecimal utilizat de noi n mod curent i notaia binar este aceea c n binar exist mai multe valori care au reprezentri cu o infinitate de cifre. De exemplu, valoarea de o zecime este periodic atunci cnd este exprimat n binar. Imaginai-v problemele pe care le cauzeaz acest fapt unei persoane neavizate care utilizeaz notaia n virgul mobil pentru a stoca i manevra valori ce reprezint dolari i ceni. Concret, dac se utilizeaz ca unitate de msur dolarul, valoarea unei monezi de zece ceni nu poate fi stocat n mod precis. O soluie la aceast problem o constituie manipularea datelor de acest tip folosind ca unitate valoarea de un penny, astfel nct toate valorile s devin numere ntregi, ce pot fi stocate cu precizie utiliznd o metod cum ar fi de exemplu notaia n complement fa de doi. Astfel de tehnici sunt reprezentative pentru cele folosite de pachetele software proiectate special pentru utilizatori care nu au o formaie tehnic (cum ar fi sistemul de calcul tabelar). n aceste cazuri, pentru protejarea utilizatorilor de eventualele rezultate eronate, este evitat ntrebuinarea facilitilor calculatorului pentru lucrul n virgul mobil. Erorile de rotunjire, precum i metodele legate de acestea, reprezint preocuparea de zi cu zi a celor ce lucreaz n domeniul analizei numerice. Aceast ramur a matematicii se ocup cu studiul problemelor implicate de calculele reale, care sunt adesea foarte complexe i necesit o precizie foarte mare. Vom ncheia acest capitol cu o exemplificare a unei reguli generale care va nclzi inima oricrui analist numeric. S presupunem c ni se cere s adunm urmtoarele trei valori utiliznd notaia n virgul mobil pe un bit (definit anterior): 2 1/2 + 1/8 + 1/8. Dac adunm valorile n ordinea afiat, vom aduna mai nti 2 1/2 i 1/8 i vom obine 2 5/8, care n binar este 10.101. Din nefericire, deoarece aceast valoare nu poate fi stocat cu acuratee (dup cum am vzut mai nainte), rezultatul primei operaii va fi memorarea valorii 2 1/2 (care coincide cu primul termen al adunrii). Urmtorul pas este s adunm acest rezultat cu ultimul 1/8. Va aprea din nou o eroare de rotunjire, iar rezultatul final devine greit 2 1/2. S efectum acum operaiile n ordine invers. Adunm mai nti 1/8 cu 1/8 i obinem 1/4. n notaia binar aceasta reprezint .01; astfel nct rezultatul primei adunri va fi stocat pe un octet ca 00111000, memorarea fcndu-se fr erori. Adunm acum 1/4 cu ultima valoare rmas, respectiv 2 1/2, i obinem 2 3/4, rezultat ce poate fi stocat exact pe un octet sub forma 01101011. De data aceasta am obinut rezultatul corect. Pe scurt, atunci cnd sunt adunate valori reprezentate n notaia n virgul mobil, ordinea n care se fac operaiile poate fi extrem de important. Regula general este ca ntotdeauna s fie adunate mai nti valorile cele mai mici; totui, nici mcar acest mod de lucru nu garanteaz corectitudinea rezultatului.

CURS 3 AC 2006/2007

9/9

También podría gustarte