Reprezentarea binara a numerelor in calculatoare

Reprezentarea numerelor intregi

Reprezentarea intregilor fara semn (unsigned integer)

Formatul de reprezentare intreg fara semn nu presupune nimic in plus decat trecerea de la baza 10 la baza 2. 

Reprezentarea numerelor pe care o folosim in ziua de azi o datoram arabilor. In aceasta reprezentare, spre exemplu, numarul 482 inseamna rezultatul calculului 3102+8101+2100. In baza 2, acelasi numar este reprezentat prin secventa de caractere 111100010 care semnifica analog rezultatul calcului 128+127+126+125+121. Observam doua generale trasaturi ale unui reprezentari intro baza oarecare. O reprezentare foloseste un numar caractere distincte egal cu baza de numeratie aleasa. Fiecare caracter este asociat unui rest posibil de obtinut atunci cand numarul respectiv este impartit la baza. Trecerea unui numar de la o baza la alta presupune aflarea unei secvente unice de resturi conform algoritmului urmator. Numarul se imparte la baza si se retine restul obtinut. Acesta constituie ultima cifra din reprezentare in acea baza. Catul obtinut in urma acestei prime impartiri este din nou imparti la baza si se retine iarasi restul. Acest rest constituie a doua cifra, in ordinea de la dreapta la stanga, a reprezentarii in baza aleasa. algoritmul continua pana cand catul obtinut este mai mic decat baza. Acest cat va reprezenta cea mai semnificativa cifra a numarului in baza data. Tabelul urmator prezinta pasii acestui algoritm pentru trecerea numarului 13 in bazele 2 si respectiv 3.

Baza 2   Baza 3
Cat Rest   Cat Rest
13   1   13   1
 0    1
 1    1
 1      

Prin urmare, 13 in baza 2 se scrie 1101 in timp ce in baza 3 are reprezentare 111.

In bazele mai mari ca 10, se obisnuieste ca pentru resturile mai mari de 10 sa se foloseasca literele alfabetului latin in ordinea lor. Adica A pentru 10, B pentru 11, C pentru 12 si asa mai departe. Formularul urmator permtite trecerea de la baza 10 la orice alta baza mai mica sau egala cu 36. Dupa alegerea numarului si bazei apasati butonul de mai jos.

Numarul zecimal in baza

Reprezentarea intregilor cu semn folosind reprezentarea in complement fata de 2

Reprezentarea in complement fata de 2 este folosita de majoritatea procesoarelor actuale. Ideea acestei reprezentari se intelege pe baza observatiei simple numarul x adunat cu numarul -x trebuie sa dea intotdeauna 0. Intrebarea ce se pune este cum se scrie -x, deoarece pentru numerele intregi pozitive se pastreza regula de la paragraful precedent. Pentru simplitate sa consideram reprezentarea numerelor pe 3 biti data in tabelul urmator

Numar in baza 10 reprezentarea pe 3 biti Obs.

3  

 011 Cel mai mare numar in aceasta reprezentare. In general, aces maxim este 2N-1-1, unde N este numarul de biti folosit pentru reprezentare.
2    010  
1    001  
0    000 zero
-1    111  
-2    110  
-3    101  
-4    100 Cel mai mic numar in aceasta reprezentare. In general, acest minim este -2N-1, unde N este numarul de biti folosit pentru reprezentare.

Astfel, intr-o reprezentare pe 8 biti gama acoperita este [-27...27-1], adica de la -128 la 127, in total 256 numere. Numerele intregi pe 16 biti apartin gamei [-32768, 32767], in total 65536 numere. La fel, pe 32 de biti gama numerelor intregi cu semn este [-2147483648, 2147483647].

Reprezentarea deplasata a  intregilor cu semn (Offset binary)

In aceast caz, pentru reprezentarea intregilor negativi se procedeaza la adaugarea unui numar 2N-1-1, unde N este numarul de cifre folosit pentru reprezentare. Spre exemplu, in cazul a reprezentarii pe 3 biti, se va adauga la numarul intreg dorit valoarea 3. Astfel cel mai mic numar reprezentabil este -3 iar cel mai mare 4 (vezi tabelul urmator).

Numar in baza 10 reprezentarea pe 3 biti Obs.

4  

 111 Cel mai mare numar in aceasta reprezentare. In general, aces maxim este 2N-1, unde N este numarul de biti folosit pentru reprezentare.
3    110  
2    101  
1    100  
0    011 zero
-1    010  
-2    001  
-3    000 Cel mai mic numar in aceasta reprezentare. In general, acest minim este -(2N-1-1), unde N este numarul de biti folosit pentru reprezentare.

 Reprezentarea numerelor in virgula mobila

Calculatoarele folosesc de regula reprezentarea propusa de standardul ANSI/IEEE nr. 754 din 1985. Conform acesteia reprezentarea binara a unui numar real se scrie

        Numar = (-1)S M 2E

Unde S este bitul de semn (pozitionat pe pozitia cea mai din stanga, vezi figura urmatoare). M este mantisa (un numar binar fractionar), iar E este exponentul (un numar intreg cu semn). In cazul reprezentarii pe 32 de biti se aloca, de regula, pentru pentru semn un bit, pentru exponent 8 biti, si restul pentru mantisa restul (aici 23 biti). Mantisa reprezinta un numar fractionar de exemplu 1,00101. Deoarece partea fractionara incepe intotdeauna cu 1 urmat, dupa virgula, de alte cifre binare, cifra 1 se omite reprezentandu-se in zona alocata mantisei numai cifrele binare de dupa virgula.

Semnificatia cifrelor binare pozitionate dupa virgula este analoga celei din reprezentarea zecimala obisnuita. Spre exemplu numarul binar fractionar 1.101 inseamna 1+1/2+0/4+1/8 adica, in reprezentarea decimala, 1.625.

Numarul 1.625 se poate scrie in binar ca (-1)01.10120. In reprezentarea binara, bitii exponentului sunt reprezentati folosind reprezentarea deplasata pe 8 biti. Prin urmare bitul S va fi 0, exponentul va fi 01111111, iar mantisa 1010000000000000000000.

0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
     
S Exponent =0+127 Mantisa

similar numarul binar 10.101 care, in zecimal, este 2.625 se scrie mai intai ca (-1)01.010121. Reprezentarea numarului 2.625 va fi in consecinta:

0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
     
S Exponent =1+127 Mantisa

Evident reprezentarile numerelelor -1.625 si -2.625 vor diferi de corespondentele lor doar prin valoarea bitului de semn.

Nota. Reprezentarea numerelor real pe 32 biti corespunde tipului float in limbajul C.

Formularul urmator permite calculul reprezentarii binare folosind un script adecvat. Pentru efectuarea reprezentarii apasati butonul de mai jos.

in binar numarul zecimal !
S Exp.

Mantisa

 

Cornel Mironel Niculae, 2004-2005

25-Mar-2008