Documente Academic
Documente Profesional
Documente Cultură
1. Bit, octet
0 1 1 0 0 1 0 0
7 6 5 4 3 2 1 0
0 1 2 3 F 10 11
Octetul este cea mai mică unitate de memorie direct adresabilă.
Adresarea unui octet se face prin numărul său de ordine, numit adresă.
1
www.ls-infomat.ro | www.manuale-de-informatica.ro
Să nu se facă confuzie între adresa unui octet şi conţinutul său. De exemplu,
octetul cu adresa FFFF reţine valoarea hexa 3B.
3B
FFFF
Desigur, prin căi indirecte se poate accesa şi bitul (chiar şi în Turbo Pascal,
după cum vom vedea). Aceasta nu înseamnă că bitul este direct adresabil.
Numărul de octeţi ai memoriei interne dă capacitatea de memorare a acesteia.
Pentru uşurinţa exprimării capacităţii de memorare au fost introduse următoarele
unităţi de măsură:
10
Kb (Kilobyte) - 1 Kb=2 octeţi (bytes);
Mb (Megabyte) - 1Mb=210 Kb;
Gb (Gigabyte) - 1Gb=210 Mb.
Astfel există calculatoare cu o memorie internă de 4Mb, 8Mb, 16Mb, 32Mb,
etc. Evident, este de preferat ca un calculator să dispună de cât mai multă
memorie internă.
11111
......
1111
de n ori
Acesta este un număr binar care convertit în baza 10 este:
2n-1+2n-2+2n-3+...+22+2+1.
Acum vom aplica o formulă şi anume:
xn-1=(x-1)(xn-1+xn-2+xn-3+...+x2+x+1)
Probă:(x-1)(xn-1+xn-2+xn-3+...+x2+x+1)=xn+xn-1+xn-2+...+x2+x-
-xn-1-xn-2-xn-3+...-.x2-x-1=xn-1
Aplicând formula de mai sus numărului convertit în baza 10 avem:
2n-1+2n-2+2n-3+...+22+2+1=
(2-1)(2n-1+2n-2+2n-3+...+22+2+1)=2n-1
Prin urmare, cel mai mare număr natural care poate fi memorat în n poziţii
binare este 2n-1.
2
www.ls-infomat.ro | www.manuale-de-informatica.ro
Exemple
1. Un octet are 8 biţi. Prin urmare, cel mai mare număr care poate fi
memorat este 28-1=256-1=255. Se pot memora 256 de numere (de la 0 la 255).
Fie numărul 62(10). Îl convertim în baza 16.
Avem: 62(10)=3E(16). Apoi în baza 2 (este mai uşor aşa, decât direct în baza
2): 00111110. Vom avea memorat:
00111110
2. Doi octeţi consecutivi au 16 poziţii binare. Cel mai mare număr care poate
fi reţinut este 216-1=2828-1=256256-1=65536-1=65535. În concluzie, doi
octeţi consecutivi pot memora numere între 0 şi 65535 (adică 65536 numere).
Reluăm exemplul (numărul 62). Vom avea:
00000000 00111110
00 3E
01000110
3
www.ls-infomat.ro | www.manuale-de-informatica.ro
Pe scurt, vom nota (în baza 16):
46
Acelaşi număr, reprezentat pe doi octeţi arată ca mai jos:
00000000 01000110
00 46
4
www.ls-infomat.ro | www.manuale-de-informatica.ro
Exemplu: 70(10) se reprezintă prin 01000110;
-70(10) se reprezintă prin 10111010.
Avem:
01000110 +
10111010
100000000
100000000(2)=28 (reprezentarea s-a făcut pe 8 poziţii binare).
Justificare. Cum a fost calculat z-? Mai întâi au fost inversate cifrele 0 în 1 şi
1 în 0, apoi s-a adunat 1. A aduna z+ cu z- este echivalent cu a face suma a 3
numere: z+, numărul inversat şi 1. Dar suma primelor două numere este
11...111 (de n ori). Dacă adunăm acesteia numărul 1 obţinem 100...0 (de n
ori cifra 0), adică 2n.
Acum prezentăm formula de conversie în cod complementar. Fie z un
număr întreg - scris în binar. Vom nota cu z* valoarea sa în cod complementar,
scrisă pe n poziţii binare.
z pentru z 0;
z* n
2 z pentru z 0.
Exemplu. Să se reprezinte pe 16 poziţii binare numerele 1000. Convertim
1000 în baza 16 (este mai uşor aşa). 1000(10)=3E8(16). Se converteşte valoarea
obţinută în baza 2. 3E8(16)=1111101000. Reprezentăm pe 16 poziţii binare
rezultatul obţinut:
0000001111101000 03E8
1111110000011000 FC18
5
www.ls-infomat.ro | www.manuale-de-informatica.ro
Este mai uşor să aplicăm formula de trecere în cod complementar, dar
lucrând în baza 16. Astfel 216=10000(16).
10000
003E 8
0 FC18
Am arătat faptul că prin utilizarea codului pe n poziţii binare, cel mai mare
număr pozitiv care se poate reţine este 2n-1-1. Dar care este cel mai mic număr
care poate fi reţinut?
De la început observăm că, pentru un număr negativ, prima poziţie binară
este 1. Fie z+ valoarea obţinută pentru un număr pozitiv şi z- valoarea obţinută
pentru acelaşi număr, însă negativ (z++z-=2n). Avem z-=2n-z+. Dacă z ia cea mai
mare valoare posibilă, z- o ia pe cea mai mică (descăzutul este constant iar
scăzătorul este maxim, deci valoarea obţinută este minimă). Cea mai mare valoare
pentru z- este 2n-1-1. Atunci cea mai mică valoare pe care o ia z- este: 2n-(2n-
1
-1)=22n-1-2n-1+1=2n-1+1.
Pe de altă parte, în cod complementar există posibilitatea să se reţină
valoarea 10...0 (de n-1 ori 0). Întrucât bitul de semn este 1, se memorează o
valoare negativă, pe care o complementăm:
inversăm cifrele: 0111...1 (de n-1 ori 0)
adunăm 1 şi obţinem 10...0 (de n-1 ori 0), adică de unde am plecat
10...0(2)=2n-1 şi dacă ţinem cont că numărul este negativ obţinem -2n-1
Valoarea memorată (10...0) este specială (trecută în cod complementar
sau invers rămâne nemodificată). S-a făcut convenţia ca ea să reprezinte valoarea
negativă -2n-1. În concluzie, cel mai mic număr care poate fi reţinut este -2n-1.
Utilizând reprezentarea în cod complementar pe n poziţii binare se pot memora
valori întregi din intervalul: -2n-1, 2n-1-1.
Exemple:
Pentru un octet se memorează numere întregi cuprinse în intervalul -27,
7
2 -1=-128, 127.
Prin utilizarea a doi octeţi se memorează numere întregi din intervalul -215,
215-1=-32768, 32767.
6
www.ls-infomat.ro | www.manuale-de-informatica.ro
4. Memorarea numerelor reale
Exponent Parte
S semnificativ
modificat
a
Exponent Parte
S semnificativa
modificat
Avem:
a) S - semn. Bitul de semn este:
0, dacă numărul este mai mare sau egal cu 0;
1, dacă numărul este strict mai mic decât 0.
b). Exponent modificat. Este întâlnit în literatura de specialitate şi sub
numele de caracteristică.
c). Parte semnificativă. După cum observaţi, numărul de biţi în care se
memorează diferă de la reprezentarea în virgulă mobilă simplă precizie la cea în
virgulă mobilă dublă precizie.
Etapele de reprezentare în virgulă mobilă a numerelor reale sunt
următoarele:
se scrie numărul în binar;
se normalizează - adică se scrie în baza 2 sub forma
exp
0
,1 .. (10)
.......... (10 reprezintă numărul 2(10)). Cu alte cuvinte, numărul se
paete semnicativa
scrie de aşa natură încât partea întreagă să fie 0, iar prima cifră a părţii
zecimale să fie diferită de 0.
7
www.ls-infomat.ro | www.manuale-de-informatica.ro
se reprezintă conform standardului cerut. Exponentul modificat se obţine după
formula: Exponentul modificat = 27+exp(10)=10000000(2)+exp(2).
Întrucât primul bit al părţii semnificative este întotdeauna 1, acesta nu va fi reţinut,
dar se va ţine cont de el.
se completează bitul de semn după regula dată.
Exemple
1. Să se reprezinte în virgulă mobilă numărul 100,75.
a. Scriem numărul în baza 2:
100(10)=64(16)
0,75(10)=0,C(16)
100,75(10)=64,C(16)=1101000,11(2)
2. Se scrie numărul normalizat:
1101000,11(2)=0,110100011(10)111 -111 este numărul 7(10), adică
puterea lui 2.
3. Calculăm exponentul modificat:
10000000
00000111
10000111
4. Bitul de semn reţine 0.
Numărul memorat în virgulă mobilă simplă precizie este:
010000111
1010001100
0000000000
0000
8
www.ls-infomat.ro | www.manuale-de-informatica.ro
Avem 0(10)=0(2)
0,05(10)=0,00(0011)(2)
0,05(2) = 0,00(0011)(2)=0,0000110011001100111...
= 0,11001100...(10)-100.
Exponentul modificat este:
128(10)+(-4(10))=124(10)=7C(16)=01111100(2).
Partea semnificativă este: 10011001100.. (prima cifră 1 nu se reprezintă).
Reprezentarea în virgulă mobilă simplă precizie este (bitul semn reţine 0):
0 01111100
1001100110
0110011001
100
1 01111100
1001100110
0110011001
100
9
www.ls-infomat.ro | www.manuale-de-informatica.ro
Cel mai mic număr pozitiv care poate fi reţinut este:
10000000 1 128 1 1 1 1 1
0,100..0 (10) ( 2 ) 2 128 129 130 10 13
2 2 2 2 2 (2 )
1 1 1
13
13
39 0, 00000
........
01 0.
1024 (1000) 10 de 39 ori
Observaţii !
S-a ţinut cont de faptul că bitul care reprezintă prima cifră de după virgulă este,
implicit, 1 şi nu se reprezintă.
Chiar 0, ca număr real se reprezintă aproximativ. Cu toate acestea în hexa
reprezentarea sa este: 00000000 (în virgulă mobilă simplă precizie).
Observaţia provine de la faptul că primul bit al părţii semnificative este 1 şi nu
se reprezintă.
Întrucât pentru reprezentarea unui număr negativ nu se modifică decât bitul de
semn, este suficientă aproximarea făcută pentru numerele reale pozitive.
Faptul că numerele reale se reprezintă aproximativ, creează o mare problemă
în informatică (pentru că există aplicaţii practice care cer o mare precizie a
calculului). Cu toate acestea se ocupă Analiza numerică, disciplină aflată la
graniţa dintre informatică şi matematică.
Există mai multe standarde de reprezentare în virgulă mobilă. Ele diferă prin
numărul de octeţi alocaţi pentru reprezentare, şi / sau prin numărul de biţi
folosiţi pentru reţinerea exponentului modificat şi numărul de biţi folosiţi pentru
reţinerea mantisei.
Cu cât numărul de biţi folosiţi pentru reprezentarea exponentului modificat este
mai mare, cu atât putem reprezenta numere mai mari.
Cu cât numărul de biţi folosiţi pentru reprezentarea părţii semnificative este mai
mare, cu atât numărul poate fi reprezentat mai precis.
Cu cât numărul este mai mare creşte probabilitatea ca acesta să fie
reprezentat cu aproximaţie mai mare (exponentul mărit duce ca aproximaţia
făcută la reprezentarea părţii semnificative să fie mai mare).
5. Memorarea caracterelor
Pentru memorarea caracterelor se foloseşte un cod special numit ASCII.
Fiecare caracter se memorează la nivelul unui octet, printr-un număr (evident între
0 şi 255) dat de codul ASCII.
10
www.ls-infomat.ro | www.manuale-de-informatica.ro
Exemple:
'a' se memorează prin 97;
'b' se memorează prin 98;
'c' se memorează prin 99;
'A' se memorează prin 65;
'B' se memorează prin 66;
'C' se memorează prin 67;
'0' se memorează prin 80;
'1' se memorează prin 81;
Observaţii!
Logica de codificare a caracterelor care reprezintă litere mici sau mari este de
a acorda caracterelor coduri în ordine alfabetică (aceasta are implicaţii uriaşe
în programare - este permisă sortarea alfabetică);
A nu se confunda caracterul 1 cu numărul 1, caracterul 2 cu numărul 2 etc.
Exerciţii propuse
1. Cum se memorează pe 2 octeţi numerele naturale: 65, 76, 10000?
Dar 100000?
2. Cum se memorează pe un octet numerele întregi -9, 9, 99, -99?
Dar 200?
3. Cum se memorează în virgulă mobilă simplă precizie numerele reale:
123,56, -123,56 +17890,89, -9875, 65464, -442278?
4. Se consideră conţinuturile a patru octeţi consecutivi în hexa: 1AB9C135.
Ce numere sunt reprezentate?
11
www.ls-infomat.ro | www.manuale-de-informatica.ro