Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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.
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
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.
(-3) +(-2)
-5
7 +(-5)
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
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.
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.
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