Anda di halaman 1dari 4

REPREZENTAREA INTERNĂ A DATELOR

Reprezentarea internă a datelor se face în funcţie de tipul datelor respective. Tipul


datei reprezintă un atribut al datelor respective şi defineşte apartenenţa la o anumită clasă
de date căreia îi corespunde un anumit model de reprezentare internă.

Reprezentarea numerelor

Reprezentarea internă a datelor numerice se face în funcţie de tipul lor: numere


întregi cu sau fără semn şi numere reale. Asupra datelor de tip numeric acţionează
operatorii:
- aritmetici : “ + ” , “ – “, “ / “ , “ * ”
- de comparaţie : “ > “ , “ >= ” , “ < ” , “ <= ” , “ = ”, “ <>”

Reprezentarea numerelor întregi

Fiecare număr întreg negativ sau pozitiv este codificat printr-un număr binar de
lungime fixă. Lungimea trebuie să fie multiplu de 8 biţi: 16 biţi, 32 biţi….pentru orice
număr indiferent de mărimea numărului sunt folosite secvenţe de biţi de aceeaşi lungime.
Pentru a obţine acelaşi număr de biţi se adaugă zerouri nesemnificative. Când se
reprezintă numere întregi primul bit din stânga reprezentării numărului va fi folosit pentru
reprezentarea semnului astfel: 1 – număr negativ , 0 – număr pozitiv. De exemplu
reprezentarea numărului 7 pe 16 biţi este: 7(10) = 0111(2) şi obtinem :
0000000000000111
reprezentarea în binar a numărului 7
biţi nesemnificativi folosiţi pentru completarea reprezentării
Cu cei 16 biţi se poate obţine numărul cel mai mare : 1111111111111111 . Convertind
numărul din binar în zecimal obţinem numărul 65535.
Dacă reprezentarea se face pe 8 biţi atunci numărul maxim care se poate
reprezenta este 255. Numărul maxim care se poate reprezenta pe n poziţii binare este
2 n - 1. Domeniul de definiţie al unei date de tip numeric fără semn reprezentată pe 8 biţi
= 1 octet = 1 byte este 0..255, iar pentru cea reprezentată pe 16 biţi = 2 octeţi = 1 cuvânt
= 1 word este 0 ..65535.
De exemplu reprezentarea numărului 7 pe 32 biţi este: 7(10) = 0111(2) este :
0 000 0000 0000 0000 0000 0000 0000 0111
reprezentarea în binar a numărului 7
biţi nesemnificativi folosiţi pentru completarea reprezentării
bitul de semn “+”
Dacă se reprezintă numărul –7 avem
1 000 0000 0000 0000 0000 0000 0000 0111
reprezentarea în binar a numărului 7
biţi nesemnificativi folosiţi pentru completarea reprezentării
bitul de semn “–”
Deci pentru reprezentarea numărului se folosesc 31 de biţi. Numărul întreg maxim
ce se poate reprezenta pe 31 de biţi este: 231 – 1 = 2147483647. În mod analog se poate
calcula numărul întreg maxim cu semn pe 8 biţi ca fiind 127, iar pe 16 biţi 32767.
Pentru a calcula 9 + (-4) în binar pe 32 de cifre avem:
0 000 0000 0000 0000 0000 0000 0000 1001 –
0 000 0000 0000 0000 0000 0000 0000 0100
0 000 0000 0000 0000 0000 0000 0000 0101
Acest mod de reprezentare internă a datelor se numeşte reprezentare prin semn şi
mărime. Ea este avantajoasă deoarece se aseamană cu scrierea obişnuită, dar
dezavantajoasă din punctul de vedere al modelării operaţiilor matematice cu ajutorul
circuitelor electronice:
 biţii de semn trebuie trataţi separat
 există două reprezentări pentru cifra zero:
 0 000 0000 0000 0000 0000 0000 0000 0000
 1 000 0000 0000 0000 0000 0000 0000 0000
 trebuie definită operaţia de scadere a numerelor absolute
Din aceste cauze se preferă un alt mod de reprezentare internă: reprezentarea
numerelor prin complementul faţă de 2. Complementul unui număr intreg negativ Nn,
reprezentat pe n poziţii binare, faţă de 2 este N = 2n – Nn.
De exemplu complementul numărului -7 faţă de 2 într-o reprezentare pe 16 biţi
din care doar 15 se folosesc este următoarea:
216 – 0000000000000111 = 1 000000000000000 –
0 000000000000111
0 111111111111001
complementul numărului faţă de 2
bitul de semn
Tot în această reprezentare se poate executa operaţia : 9 + ( - 4 ) astfel : întâi se
face complementul lui – 4 faţă de 2 şi apoi rezultatul se adună cu 9.

1 000000000000000 –
0 000000000000100
0 111111111111100 +
0 000000000001001
0 000000000000101
5
În această reprezentare nu există două repretentări pentru cifra 0.
10000000000000000 este complementul faţă de 2 al numărului - 215. În concluzie cu
ajutorul a n cifre binare, folosind complementul faţă de 2 se pot reprezenta numere
întregi din domeniul : - 2n-1 ≤ N ≤ 2n-1 1.
Folosind această regulă se poate calcula domeniul de definiţie pentru
reprezentarea unui întreg cu semn pe 16 biţi ca fiind: -32768 ≤ N ≤ 32767, iar pentru 8
biţi avem : -128 ≤ N ≤ 127.
Numerele reale sunt numerele formate din semn, parte întreagă şi parte zecimală.
Ele pot fi reprezentate în două moduri : în virgulă fixă (binary fixed point) şi în virgulă
mobilă ( binary floating point). În reprezentarea în virgulă fixă se presupune că partea
întreagă este despărţită de partea fracţionară printr-o virgulă imaginară care se găseşte
într-o poziţie fixă. În acest caz atât partea întreagă cât şi partea fracţionară sunt fixe.
Poziţia virgulei fixe este este o caracteristică a modului de construcţie a calculatorului.
De exemplu dacă pe 8 biţi se reprezintă un număr pe cinci poziţii întregi, numărul
de poziţii zecimale va fi trei, iar domeniul de valori va fi:
00000,000 ≤ N ≤ 11111,111 adică 0,0 ≤ N ≤ 31,875.
Dacă numărul este negativ, se va reprezenta prin complementul său faţă de 2,
primul bit fiind cel de semn.
11111,111 ≤ N ≤ 01111,111 adică -15,875 ≤ N ≤ 15,875.
Această reprezentare este dezavantajoasă deoarece nu permite reprezentarea unei
game largi de date.
În reprezentarea în virgulă mobilă numerele sunt reprezentate prin exponent şi
mantisă. Această reprezentare se mai numeşte şi notaţie ştiinţifică. Orice număr poate fi
scris cu ajutorul puterilor lui 10. În acest mod poate fi controlată poziţia virgulei
zecimale, iar reprezentarea obţinută se numeşte în virgulă mobilă deoarece virgula
zecimală îşi poate schimba poziţia în funcţie de valoarea exponentului. De exemplu
reprezentarea în virgulă mobilă a numărului 13,6.
13,6 = 13.6 * 100 = 0.136 * 102 = 1.36 * 101 = 1.36 E+1
unde: 1.36 este mantisa, 1 este exponentul.
În mod analog se va reprezenta şi intern numărul, singura deosebire fiind
codificarea exponentului şi a semnului mantisei în binar.
Dacă considerăm reprezentarea în virgulă mobilă pe 32 de biţi, biţii vor fi folosiţi
astfel: un bit pentru semnul numărului, un bit pentru semnul exponentului, şapte biţi
pentru exponent şi 23 de biţi pentru mantisă.
De exemplu:
 12.5(10) = 1100,1(2) = 0,11001 * 24 = 0,11001(2) * 10(2)100(2)
unde: mantisa – 11001
exponentul – 4(10) = 100(2)
bitul de semn al numărului – 0 – pozitiv
bitul de semn al mantisei – 0 – pozitiv
reprezentarea numărului este:
0 0 0000100 11001 00 0000 0000 0000 0000
biţi nesemnificativi
valoarea mantisei
mantisa
exponent
bit semn exponent
bit semn număr
 7(10) = -111(2) = -0,111*2(3) = -0,111 * 10(2)11(2)
unde: mantisa - 111
exponentul – 3(10) = 11(2)
bitul de semn al exponent – 0 – pozitiv
bitul de semn al număr – 1 – negativ
reprezentarea numărului este:
0 1 0000011 111 0000 0000 0000 0000 0000
biţi nesemnificativi
valoarea mantisei
mantisa
exponent
bit semn exponent
bit semn număr

Cu cele 23 de cifre binare cel mai mare număr care se poate scrie este :
223 =(210)23/10 = (1000)23/10 = (103)23/10 ≈ 1069/10 ≈ 107, deci numărul maxim de cifre
semnificative este 7.
Cu 7 cifre binare cel mai mare exponent este: 27 – 1 =127.
Factorul de multiplicitate cel mai mare este : 2127=(210)127/10=(1000)127/10= 0381/10 ≈
38
10 .
Deci domeniul de valori al datei reprezentate cu 7 cifre binare pentru exponent şi
23 de cifre binare pentru mantisă va fi: 10-38 ≤ N ≤ 1038. În funcţie de numărul de biţi
folosiţi pentru reprezentarea numărului există reprezentare în simplă precizie pe 32 de
poziţii binare, reprezentare în dublă precizie pe 64 de poziţii binare.

Reprezentarea datelor alfanumerice

Fiecare caracter (literă, cifră, spaţiu sau caracter special) va fi codificat într-o
secvenţă de lungime fixă de 8 poziţii binare, folosind codul standard ASCII. El permite
definirea a maxim 28 =256 de cuvinte de cod diferite.
Asupra datelor de tip alfanumeric pot acţiona operatorii:
- de concatenare – din două ţiruri de caractere se obţine unul singur
Exemplu: “Bună” + “ziua” = “Bună ziua”
- de comparare – compararea se execută prin compararea secvenţelor de cod
ASCII, deci prin compararea a două numere.
Exemplu: “ a ” > “ A ”, “ a ” > “ 9 ”