Sunteți pe pagina 1din 9

Lucrarea 1

Reprezentarea Numerelor n Virgul Fix


Prima lucrare prezint modul n care este reprezentat informaia n calculator i detaliaz reprezentrile numerelor n virgul fix, analiznd avantajele i scderile fiecrui tip de codificare: semn-mrime, complement de 1, complement de 2. n plus, sunt soluionate probleme practice precum shiftarea numerelor n diferite reprezentri de virgul fix dar i conversia numerelor n reprezentare cu set redundant de cifre.

1 Reprezentarea Numerelor n Calculator 1.1 Clasificarea Informaiei Informaia n calculator este organizat n cuvinte (words). Cuvntul este unitatea de informaie care are lungime fix. El admite n cifre binare sau bii, unde n este n primul rnd determinat din considerente legate de costul hard. n general este un multiplu de byte Clasificarea informaiei:
Binary

Instruction Information Data Numbers

Fixed point
Decimal Binary

Floating point
Decimal

Non-numerical data ASCII (American Standard Code for Information Interchange)

1.2 Formate pentru Numere Pentru selectarea unei reprezentri de numr care s fie utilizat n calculator trebuie s se in cont de urmtoarele: - tipul numerelor de reprezentat; - domeniul valoric care trebuie acoperit de reprezentare; - precizia numerelor, strict legat de acurateea maxim a reprezentrii; - costul hardware-ului necesar memorrii numerelor; Exist dou formate de reprezentare a numerelor: - formate de virgul mobil(flotant); - formate de vigul fix; Formatele de virgul fix au un domeniu mai restrns, dar i costul circuisticiihardware este mai mic. 1.2.1 Reprezentarea Numerelor n Vigul Fix Este dedus n mod direct din forma zecimal ordinar a numerelor, n conformitate cu care numerele prezint o virgul zecimal, la partea stng a acesteia corespunznd partea ntreag a numrului, iar la partea dreapt corespunde partea zecimal. Fiecare poziie are asociat o pondere, fapt pentru care se spune c numerele sunt scrise ntr-o notaie ponderat: notaie poziional.

N = ci r i
i = m

(1.1)

unde r este baza sistemului de numeraie, 0 ci < r . Ponderile pozitive ale notaiei poziionale (avnd index i 0 ) definesc partea ntreag a numrului N, iar ponderile negative ( i < 0 ) definesc partea fracionar. 1.2.1.1 Numere binare Pentru o reprezentare uniform a numerelor binare cu semn, din cei n bii considerai disponibili, unul este sacrificat pentru semn, i prin convenie este bitul situat n partea stng (bitul cel mai semnificativ). Tot prin convenie se atribuie 0 pentru semnul + i 1 pentru semnul -. Biii pot fi numerotai de la dreapta la stnga (cum se ntmpl la SPARC), caz n care se numete reprezentare Little Endian, sau de la

stnga la dreapta (cum se ntmpl la familia INTEL), caz n care se numete reprezentare Big Endian. Cele dou moduri de numerotare se vor reprezenta mai jos:
cn 1cn 2 c1c0 c1 c m cn 1cn 2 c1c0

(1.2) (1.3)

n Ecuaia 1.2 semnul indic punctul binar ce definete numerele fracionare, iar pentru Ecuaia 1.3 numerele ntregi. n mod clar, virgula nu necesit o poziie binar suplimentar, ci este implicit: la clasa numerelor ntregi este admis la dreapta poziiei cea mai puin semnificativ, iar la cele fracionare e implicit situat ntre primii doi bii, cei mai semnificativi bii din stnga
xn 1 xn 2 x1 x0 xn 1 xn 2 x1 x0 integers fractions

(1.4) (1.5)

Exist 3 reprezentri fundamentale ale numerelor binare n virgul fix: a) Sign-magnitude (semn-mrime)
X = xn 1 xn 2 xi x1 x0
sign magnitude

integers

(1.6) (1.7)

X = xn 1 xn 2 xi x1 x0
sign magnitude

fractions

n ceea ce privete domeniul valoric, pentru numerele ntregi (Ecuaia 1.6) avem gama valoric:
0 X 2n 1 1

(1.8)

Iar pentru numere fracionare gama valoric este:


0 X 1 2 n +1

(1.9)

n reprezentarea semn-mrime operaiile de nmulire i mprire pot

fi implementate n mod direct, dar dificultatea cea mai mare apare la operaia de adunare cea mai frecvent folosit n sistemele de calcul. Dou exemple de adunare n semn-mrime pot fi edificatoare n acest sens.
+3 = 0011 + (3) = 1011 1110 = 6 0 +1 = 0001 + (6) = 1110 1111 = 7 5

(1.10)

Cnd efectum operaia de adunare ntre numere care difer ca semn trebuie s se in cont de semn, iar aceast situaie complic algoritmul de nsumare i circutele corespunztoare, reprezentnd o scdere a codificrii semn-mrime. Pentru cifra 0, a crei testare n calculator se efectueaz frecvent, avem dou reprezentri:
+0 = 00...0 i -0 = 10...0

(1.11)

b) Ones complement (complement de 1 C1) n conformitate cu aceast reprezentare, fiecare cifr binar este substituit prin valoarea ei complementar, adic 0 este substituit prin 1 i invers. Fa de reprezentarea semn-mrime, numerele pozitive au aceiai reprezentare, dar difer reprezentarea numerelor negative. Complementul de 1 nu mai are o notaie poziional. Oricum, i n cazul complementului de 1 exist dou scderi, caracterizate prin corecia end-around carry.
2 = 4 = 1101 + 1011 11000 + 0001 1001 = 6 7 = + (3) = 0111 + 1100 10011 + 0001 0100 = +4

(1.12)

La ambele exemple apare un transport (carry) la bitul de semn, reprezentat prin 1 (n plus) din faa rezultatului, i care va fi adunat la rezultat pentru efectuarea coreciei de tip end-around carry. A doua scdere const n faptul c 0 are i n acest caz dou reprezentri:

+0 = 00...0 i -0 = 11...1

(1.13)

c)

Twos complement (complement de 2 C2)

La fel ca la complementul de 1, numerele pozitive rmn cu reprezentarea identic cu cea n semn-mrime, dar difer atunci cnd vorbim de reprezentarea celor negative. Obinerea reprezentrii n complement de 2 se face astfel: se complementeaz bit cu bit partea de mrime a reprezentrii n semn-mrime, dup care se adun un 1 la rezultatul obinut. Se poate folosi urmtoarea notaie pentru numrul X din ecuaiile (1.6) i (1.7): X este numrul n semnmrime, X este n complement de 1, iar X este n complement de 2. Astfel, reprezentarea n complement de 2 se poate scrie precum n ecuaiile (1.14) numere ntregi i (1.15) numere fracionare.
X = x n 1 x n 1 x1 x 0 +1 (mod 2n ) X = x n 1 x n 1 x1 x 0 + 0001 (mod 2)

(1.14) (1.15)

Nu s-a luat n consideraie carry-ul care apare la bitul de semn. Pentru reprezentarea numerelor avem urmtoarele caracteristici: - toate reprezentrile au xn 1 ca bit de semn; - ambele reprezentri complementare pentru numere negative nu au corespondent ntr-o notaie poziional; - n codurile complementare operaia de scdere se realizeaz prin adunarea complementului; - n codurile complementare, exceptnd cazul end-around carry, bitul de semn nu revendic o tratare special. El poate fi tratat ca un bit ordinar de mrime; - apare anomalia complementului de 2, de exemplu pentru o reprezentare pe 4 bii -8 poate fi reprezentat (are un cod disponibil), chiar dac acest numr nu poate fi reprezentat pe 4 bii n semn-mrime i complement de 1. - overflowunderflow (sitaii de depire): la operaia de adunare a dou numere cu semn se spune c apare depire atunci cnd semnul rezultatului difer de cel (identic) al operanzilor.

Considerm adunarea a dou numere n complement de doi pe n bii, X = xn 1 xn 2 x1 x0 , X+Y=Z, unde reprezentarea binar este Y = yn 1 yn 2 y1 y0 i Z = zn 1 zn 2 z1 z0 .

xi

yi

ci

zi

ci +1

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

0 1 1 0 1 0 0 1

0 0 0 1 0 1 1 1

Figura 1.1 Tabela de adevr i simbolul logic pentru sumatorul complet pe 1 bit (1-bit full adder). Ecuaiile fundamentale pentru sumatorul complet pe 1 bit, care adun xi cu yi , (i. pentru un carry-in ci , rezultnd bitul sum zi i carry-out-ul ci +1 ), conform cu tabela de adevr din Figura 1.1, sunt:
zi = xi yi ci ci +1 = xi yi + xi ci + yi ci

(1.16)

Detecia situaiei de overflow ( ) se face pentru celula (sumator complet = xn 1 yn 1 zn 1 + xn 1 yn 1 zn 1 . pe 1 bit) cea mai semnificativ (i=n-1): Prin inspecia tabelei din Figura 1.1 sau prin deducie la nivel de ecuaii booleene, se poate demonstra c:
= cn cn 1

(1.17)

Aplicaii

Problema 1.1 (Shiftarea numerelor n complement de 1 i de 2) Shiftarea la dreapta sau la stnga este folosit pentru a dubla/njumti mrimea ntrebilor binari ffr semn. Cum putem realiza shiftarea pentru numerele n complement de 1 i de 2?

Rezolvare: La complementul de 1 avem shiftarea la stnga/dreapta din Figura 1.2, unde se explic i modul de shiftare: bitul care vine pe poziia lsat liber este identic cu cel de dinainte de shiftare (shiftarea la dreapta right), sau este 1 (shiftarea la stnga).

Figura 1.2 Shiftarea n complement de 1. La complementul de 2, Figura 1.3 ne prezint maniera n care se shifteaz la stnga/dreapta: bitul de pe poziia rmas liber va fi identic cu cel de dinainte de shiftare (right shift), sau are valoarea 0 (left shift).

Figura 1.3 Shiftarea n complement de 2. Problema 1.2 (Adunarea numerelor n complement de 1 i de 2) S se adune urmtoarele perechi de numere n semn-mrime, complement de 1 i de 2: +47 i +75, -47 i +75, +47 i -75, -47 i -75 (numere exprimate n zecimal).

Rezolvare: Figura 1.4 prezint adunarea seturilor de numere cerute. n semn-mrime, doar adunarea numerelor pozitive este ncununat de succes.

Figura 1.4 Adunarea seturilor de numere n SM, C1 i C2. Problema 1.3 (Propus) S se indice o metod de transformare a numerelor exprimate n sistemele {1,0,1} i {2,1,0,1, 2} redundante de reprezentare. Indicaie: n sistemul {1,0,1} , numrul -1910 se poate scrie ca 10101 = 1 24 1 22 + 1 20 , iar -45710 se poate scrie ca 121021 = 1 45 + 2 44 + 1 43 2 41 1 40 . Mecanismul de conversie n

binar este sugerat n Figura 1.5, att pentru primul, ct si pentru cel de-al doilea sistem de reprezentare a numerelor ntregi pe un set redundant de cifre.

Figura 1.5 Conversia din sistemul de reprezentare cu set redundant de cifre n binar.

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