Sunteți pe pagina 1din 5

Arhitectura calculatoarelor. Laborator 1.

Reprezentri numerice n virgul fix


1.1. Noiunea de virgul fix
Reprezentrile numerice folosite n calculatoarele numerice au un caracter poziional. Prin aceasta nelegem faptul c poziia unei cifre n reprezentarea formal a numrului semnific ponderea acelei cifre n raport cu o baz de numeraie. Bazele de numeraie folosite frecvent sunt: - sistemul zecimal, cu baza de numeraie 10 - sistemul binar, cu baza de numeraie 2, uor de implementat n calculatoare dar dificil de folosit de ctre om - sistemul hexazecimal, folosit pentru reprezentarea simbolic a numerelor binare ntr-o form acceptabil pentru om Prin termenul de virgul fix nelegem c unitatea aritmetic a unui calculator este proiectat aa fel nct s converteasc coduri binare n numere i s opereze cu aceste numere conform unei scheme fixe, n sensul c partea supraunitar i cea subunitar a numrului au un numr fix de bii. n cursul evoluiei calculatoarelor au fost folosite, practic, dou convenii de reprezentare n virgul fix: - numere subunitare (cu partea ntreag nul) - numere supraunitare (cu partea fracionar nul). Calculatoarele actuale folosesc reprezentarea n virgul fix pentru numere supraunitare, fr parte fracionar, adic pentru numere ntregi, cu semn. Not: Faptul c virgula este fix nu nseamn c programele nu pot opera cu numere fracionare. Aceasta nseamn doar c modificarea conveniei de plasare a virgulei trebuie asumat la nivelul software, ceea ce nseamn un efort suplimentar pentru programator.

1.2. Reprezentarea natural a numerelor pozitive.


Considernd baza de numeraie 2, reprezentarea natural este una poziional, n care valoarea asociat unei cifre este dat de valoarea cifrei (0 sau 1) i de poziia sa n reprezentare. Astfel, numrului scris sub forma: an-1an-2a1a0 unde ai este o cifr binar, i se asociaz valoarea: an-1*2n-1+an-2*2n-2++a1*2+a0 n funcie de valoarea lui n, avem urmtoarele lungimi de reprezentare tipice: octet (byte) cuvnt (word) dublu cuvnt (long) cvadruplu cuvnt (quad, double long) n=8 n=16 n=32 n=64

Denumirile de mai sus au un caracter istoric i sunt dependente de context. Asfel, la nceputurile calculatoarelor, prin byte se desemna cea mai mic unitate de

adresare a memoriei, cu valori, de la caz la caz, de 5, 6, 7, 8 sau 9 bii. n timp, pe msura unificrii practicilor, termenii de byte i octet au devenit sinonimi. Termenul word poate fi folosit n contextul unui limbaj de programare de nivel nalt, ca variabil de doi octei, sau n contextul implementrii hardware. Astfel, dac unitatea de calcul suport operanzi de 32 de bii atunci word se poate folosi pentru a desemna un astfel de operand. Aceast form de reprezentare, corespunznd mulimii numerelor naturale, este potrivit acelor variable care, prin natura lor, nu pot lua valori negative, de exemplu indeci n iruri sau tabele. Numrul maxim reprezentabil pe o lungime de n bii este 2n-1. Pe un octet, acest numr este 255. Avantajul reprezentrii este c unitatea aritmetic de calcul poate sesiza situaia n care rezultatul unei operaii de scdere este negativ i poate semnala acest fapt ca pe o eroare. La operaia de adunare este posibil ca rezultatul s depeasc capacitatea de reprezentare. Pentru exemplificare adunm numerele 65(10) i 192(10), reprezentate pe octet. 65(10) 01000001 + 192(10) 11000000
----------------1000000001

Rezultatul, considerat pe 9 bii este reprezentarea binar a numrului 257(10). n fapt, rezultatul const doar din cei mai puin semnificativi 8 bii, cu valoarea 00000001, iar bitul al noulea, cu valoarea 1, este memorat separat sub numele de transport sau carry. Semnificaia bitului de transport depinde de modul de reprezentare folosit. La reprezentarea natural a numerelor pozitive semnificaia este de depire a capacitii de reprezentare, ceea ce este echivalent cu un rezultat eronat pe componenta de 8 bii. La operaia de scdere avem n vedere necesitatea de a face un mprumut din rangul anterior, atunci cnd este cazul. Dac mprumutul trebuie fcut dinspre bitul de rang 2n spre rangul 2n-1 atunci el se manifest prin poziionarea fanionului carry i semnific un rezultat negativ, deci eronat.

1.3. Reprezentarea semn-mrime.


n majoritatea cazurilor se cere ca domeniul de apartenen al variabielor s fie mulimea numerelor ntregi. Una dintre reprezentrile posibile este cea numit semn-mrime, care deriv din reprezentarea comun n form scris. Deoarece semnul poate lua dou valori logice, i se va asocia un bit din cei 8, 16,... ai reprezentrii, iar ceilali se vor folosi pentru a reprezenta magnitudinea numrului (valoarea absolut). Prin convenie, bitul cel mai semnificativ, an-1, se folosete pentru a reprezenta semnul, cu valoarea 0 pentru + i 1 pentru -. Rezult o reprezentare simetric, n care fiecare numr pozitiv are o pereche negativ. Numrul maxim reprezentabil, ca valoare absolut, este jumtate din cel reprezentabil ca numr natural. Pe octet acest numr este 127. Avantajele reprezentrii semn-mrime sunt: - este o reprezentare natural n raport cu percepia uman. - la nivelul unitii aritmetice faciliteaz realizarea operaiilor de nmulire i mprire.

Dezavantaje: - exist dou coduri pentru numrul 0. - necesit tratarea semnului printr-un proces de decizie complicat. n continuare comentm dezavantajele. Existena a dou coduri pemtru numrul zero, respectiv +0 i -0 complic implementarea la nivel de logic hardware a uneia dintre cele mai frecvente operaii dintr-un calculator, anume comparaia cu zero. Practic, trebuie prevzute dou comparatoare i apoi o operaie sau logic. Deasemenea, este necesar ncorporarea n unitatea aritmetic a unei scheme de unificare a reprezentrii lui 0, nainte de introducerea n calcul a oricrui operand. Operaiile de adunare i scdere necesit tratarea semnelor i compararea magnitudinii operanzilor, urmate de un proces de decizie. Aceste operaii le facem, mental, fr s sesizm, atunci cnd adunm/scdem numere n baza 10, pe baza experienei deprinse prin nvare i exerciiu. Astfel: (+3) + (+5) este o operaie imediat, n timp ce (+3) + (-5) presupune: - extragerea valorii absolute a operanzilor [3, 5] - schimbarea ordinii operanzilor [3, 5 -> 5, 3] - operaia de scdere [5 - 3 = 2] - schimbarea semnului rezultatului [2 -> -2] Implementarea la nivel hardware a unui sumator/scztor devine o operaiune extrem de costisitoare, n termeni de complexitate a schemei, iar performanele de vitez vor fi foarte slabe.

1.4. Reprezentarea n complement de 1.


Obiectivul adoptrii unui cod de reprezentare a numerelor ntregi, altul dect semn-mrime, este de a simplifica schema sumatorului, respectiv scztorului. Ideal, un astfel de dispozitiv, va putea aduna/scdea dou numere ntr-o singur faz, indiferent de semnele i magnitudinile lor. n codul complement de 1 numerele pozitive se reprezint la fel ca n codul semn-mrime. Numerele negative se reprezint, prin convenie, inversnd bit cu bit reprezentarea numrului pozitiv. Astfel, considernd o lungime de un octet, numrul +19(10) se reprezint 00010011 iar numrul -19(10) se reprezint 11101100(C1) Complementnd fa de 1 un numr negativ se obine, aa cum era de ateptat, numrul pozitiv care are aceeai magnitudine, fapt ce se poate verifica imediat pe exemplul de mai sus. Fa de reprezentarea semn-mrime se pstreaz semnificaia bitului de semn, dar la numere negative ceilali bii nu mai formeaz o reprezentare poziional. Se poate demonstra c adunarea a dou numere n complement de 1 se poate face cu urmtorul algoritm: - se adun numerele bit cu bit, tratnd toi biii nedifereniat, inclusiv cei de semn. - se adun la rezultat bitul carry. Exemplu 1: Se calculeaz (+5) + (-3), unde +5 = 00000101C1, +3 = 00000011C1 i -3 = 11111100C1

00000101 + 11111100 1|00000001 + 1 00000010 Rezultatul, 00000010C1 corespunde numrului 210. Exemplu 2: Se calculeaz (-5) + (+3), unde +5 = 00000101C1, -5 = 11111010C1, +3 = 00000011C1 11111010 + 00000011 0|11111101 + 0 11111101 Rezultatul, 11111101C1 corespunde numrului -210, ceea ce se poate verifica imediat deoarece prin complementare rezult 00000010C1, adic +210. Operaia de scdere se realizeaz prin complementarea scztorului, urmat de adunare. Condiia de corectitudine a rezultatului este ca el s se ncadreze n intervalul numerelor reprezentabile n cod C1 (vezi exerciii). De exemplu, ncercarea de a aduna 6410 (01000000C1) cu 6510 (01000001C1) duce la rezultatul 0|10000001, care se interpreteaz ca numr negativ.

1.5. Reprezentarea n complement de 2.


n codul complement de 2 numerele pozitive se reprezint la fel ca n codul semn-mrime, respectiv la fel ca n codul complement de 1. Numerele negative se reprezint, prin convenie, adunnd 1 la reprezentarea numrului n complement de 1. Exemplificm pentru nunrul numrul -19(10): +19(10) se reprezint 00010011 -19(10) se reprezint 11101100(C1) respectiv 11101100 + 1 11101101(C2) Complementnd nc o dat fa de 2 obinem din nou numrul pozitiv: 11101101(C2) acesta este -19 complementm fa de 1 00010010 + adunm 1 1 rezult +19 00010011 Spre deosebire de codurile semn-mrime i complement de 1, exist o singur reprezentare pentru numrul 0 (verificai la exerciii). Operaia de adunare se face adunnd numerele bit cu bit, tratnd toi biii nedifereniat, inclusiv cei de semn. Spre deosebire de adunarea n cod complement de 1, nu mai este necesar pasul suplimentar, de corecie a rezultatului prin adunarea bitului carry. Operaia de scdere se face complementnd al doilea operand i adunndu-l la primul. Rezumnd, avem urmtoarele avantaje ale reprezentriii n complement de doi, fa de semn-mrime i complement de unu: - Exist o singur reprezentare pentru zero.

Schimbarea semnului se face prin complementare iar scderea se face prin adunarea desczutului cu complementul scztorului. - Adunarea se face ntr-un singur pas, fr a fi necesar o corecie. - La adunare, bitul de semn este tratat la fel ca ceilali bii. Aceste caracteristici permit implementarea hardware unitar i simpl a unui sumator/scztor combinaional, fcnd din codul complement de doi codul acceptat de toi productorii pentru reprezentarea intern a numerelor ntregi.

1.6. Exerciii.
Se consider cele trei moduri de reprezentare, pe lungime de 8 bii. 1. S se reprezinte numrul 0 n cele trei moduri. S se verifice relaia 0+0=0, n toate variantele, n cele trei reprezentri. S se verifice relaia x-x=0, n cele trei reprezentri. 2. S se determine domeniul de reprezentabilitate (numrul maxim, pozitiv i cel minim, negativ) n cele trei moduri de reprezentare. Se vor calcula valorile, n baza 10, pentru dimensiuni de 8, 16 i 32 de bii. 3. S se aleag dou numere, primul pozitiv i al doilea negativ, s se reprezinte n cele trei moduri i s se fac operaiile de adunare i scdere ntre ele.

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