Sunteți pe pagina 1din 11

Memorarea datelor

autor: Tudor Sorin

1. Bit, octet
Orice calculator memoreaz informaiile n baza 2 (succesiune de 0 i 1).
Motivul? Componentele electronice au dou stri. Se face o convenie: dac o
component electronic se gsete ntr-una din stri, se consider c memoreaz
0, altfel memoreaz 1. Astfel am obinut unitatea elementar de memorare: bitul.
Un bit reine una din dou valori 0 sau 1.
Un octet este alctuit din 8 bii.
0 1 1 0 0 1 0 0
7

n figura de mai sus este reprezentat un octet. Acesta reine valoarea


01100100. Mai simplu, putem nota n hexa valoarea reinut: 64. Observm i
faptul c biii care alctuiesc un octet sunt numerotai (de la 0 la 7).
Astfel:

bitul 0 reine 0;
bitul 1 reine 0;
bitul 2 reine 1;
...

Memoria intern poate fi privit ca o succesiune de octei. Pentru a-i distinge,


acetia sunt numerotai. Numrul de ordine al unui octet constituie adresa sa.
Adresele sunt date n binar, dar pentru a le putea scrie cu uurin folosim baza 16.

10

11

Octetul este cea mai mic unitate de memorie direct adresabil.


Adresarea unui octet se face prin numrul su de ordine, numit adres.

1
www.ls-infomat.ro | www.manuale-de-informatica.ro

S nu se fac confuzie ntre adresa unui octet i coninutul su. De exemplu,


octetul cu adresa FFFF reine valoarea hexa 3B.
3B
FFFF
Desigur, prin ci indirecte se poate accesa i bitul (chiar i n Turbo Pascal,
dup cum vom vedea). Aceasta nu nseamn c bitul este direct adresabil.
Numrul de octei ai memoriei interne d capacitatea de memorare a acesteia.
Pentru uurina exprimrii capacitii de memorare au fost introduse urmtoarele
uniti de msur:

10

Kb (Kilobyte) - 1 Kb=2 octei (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 ct mai mult
memorie intern.

2. Memorarea numerelor naturale


Numerele naturale se memoreaz n binar. Pentru memorare, se utilizeaz
unul sau mai muli octei consecutivi. Problema este urmtoarea: care este cel mai
mare numr care se poate memora n n poziii binare consecutive? Evident, fiecare
poziie binar trebuie s fie 1. Avem:

11111
......
1111

de n ori

Acesta este un numr 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
Aplicnd formula de mai sus numrului 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 numr natural care poate fi memorat n n poziii
binare este 2n-1.

2
www.ls-infomat.ro | www.manuale-de-informatica.ro

Exemple
1. Un octet are 8 bii. Prin urmare, cel mai mare numr care poate fi
memorat este 28-1=256-1=255. Se pot memora 256 de numere (de la 0 la 255).
Fie numrul 62(10). l convertim n baza 16.
Avem: 62(10)=3E(16). Apoi n baza 2 (este mai uor aa, dect direct n baza
2): 00111110. Vom avea memorat:
00111110
Putem lsa rezultatul n hexa (pentru uurina citirii, nu pentru c numerele
se memoreaz n hexa).
3E
2. Doi octei consecutivi au 16 poziii binare. Cel mai mare numr care poate
fi reinut este 216-1=2828-1=256256-1=65536-1=65535. n concluzie, doi
octei consecutivi pot memora numere ntre 0 i 65535 (adic 65536 numere).
Relum exemplul (numrul 62). Vom avea:
00000000 00111110
00

3E

3. Memorarea numerelor ntregi


Acestea pot fi i negative. Exemple: 123, -123, 0, 25 etc. Pentru
memorarea lor se utilizeaz codul complementar. S vedem cum. Pentru
memorare se utilizeaz unul sau mai muli octei. Prin urmare, numrul n, al
poziiilor binare care rein numrul, este multiplu de 8 (numrul de bii pe care I are
un octet).
Din cele n poziii binare una este rezervat pentru semn. Aceasta reine:

0, dac numrul este pozitiv;


1, dac numrul este negativ.

n acest fel, rmn n-1 poziii binare n care putem reprezenta numrul.
Dac numrul este pozitiv, l reprezentm n baza 2 (utiliznd cele n-1
poziii). Exemplu. Considerm c se utilizeaz un octet i dorim s memorm
numrul 70. Avem: 70(10)=46(16)=01000110(2). Numrul este memorat astfel:
01000110

3
www.ls-infomat.ro | www.manuale-de-informatica.ro

Pe scurt, vom nota (n baza 16):


46
Acelai numr, reprezentat pe doi octei arat ca mai jos:
00000000 01000110
00

46

Observm c primul bit (indiferent de numrul de octei folosit pentru


reprezentare) are valoarea 0. innd cont de faptul c pentru rezervare se folosesc
n-1 poziii binare, cel mai mare numr care poate fi reprezentat este 2n-1-1.
Exemple:

Dac folosim un octet, avem n=8, n-1=7, i cel mai mare numr care
poate fi reprezentat este 27-1=128-1=127.
Dac pentru reprezentare se folosesc 2 octei avem: n=16, n-1=15, cel
mai mare numr este 215-1=32768-1=32767.
Dac numrul este negativ procedm astfel:

reprezentm n baza 2 numrul cu semn schimbat, adic numrul pozitiv.


valoarea memorat se obine schimbnd toate cifrele 1 n 0 i toate cifrele
0 n 1 i adunnd 1 (se numete complement fa de 2 - vedem imediat de
ce).
Exemplu: reprezentm pe un octet numrul -70

70(10)=01000110(2);
Inversm cifrele: 10111001;
La valoarea obinut, se adun 1:

10111001
. 00000001
10111010
Aceasta este valoarea pe care o reprezentm:
10111010
Observm c primul bit reine 1, deci numrul este negativ. n concluzie,
bitul de semn ia valoarea care trebuie, respectnd algoritmul prezentat.
S notm cu z+ valoarea obinut pentru un numr pozitiv i cu z- valoarea
obinut pentru acelai numr, ns negativ. Avem: z++z-=2n

4
www.ls-infomat.ro | www.manuale-de-informatica.ro

70(10) se reprezint prin 01000110;


-70(10) se reprezint prin 10111010.

Exemplu:
Avem:

01000110 +
10111010
100000000
100000000(2)=28 (reprezentarea s-a fcut pe 8 poziii binare).
Justificare. Cum a fost calculat z-? Mai nti 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+, numrul inversat i 1. Dar suma primelor dou numere este
11...111 (de n ori). Dac adunm acesteia numrul 1 obinem 100...0 (de n
ori cifra 0), adic 2n.
Acum prezentm formula de conversie n cod complementar. Fie z un
numr ntreg - scris n binar. Vom nota cu z* valoarea sa n cod complementar,
scris pe n poziii binare.

z
z* n
2 z

pentru
pentru

z 0;
z 0.

Exemplu. S se reprezinte pe 16 poziii binare numerele 1000. Convertim


1000 n baza 16 (este mai uor aa). 1000(10)=3E8(16). Se convertete valoarea
obinut n baza 2. 3E8(16)=1111101000. Reprezentm pe 16 poziii binare
rezultatul obinut:
0000001111101000

03E8

Acum reprezentm -1000. Considerm reprezentarea numrului


0000001111101000. Inversm cifrele: 1111110000010111. Adunm 1:

1111110000010111
0000000000000001
1111110000011000
Reprezentm valoarea obinut n bazele 2 i 16.
1111110000011000

FC18

5
www.ls-infomat.ro | www.manuale-de-informatica.ro

1000:

Este mai uor s aplicm formula de trecere n cod complementar, dar


lucrnd n baza 16. Astfel 216=10000(16).

10000
003E 8
0 FC18
Am artat faptul c prin utilizarea codului pe n poziii binare, cel mai mare
numr pozitiv care se poate reine este 2n-1-1. Dar care este cel mai mic numr
care poate fi reinut?
De la nceput observm c, pentru un numr negativ, prima poziie binar
este 1. Fie z+ valoarea obinut pentru un numr pozitiv i z- valoarea obinut
pentru acelai numr, ns negativ (z++z-=2n). Avem z-=2n-z+. Dac z ia cea mai
mare valoare posibil, z- o ia pe cea mai mic (desczutul este constant iar
scztorul este maxim, deci valoarea obinut este minim). Cea mai mare valoare
pentru z- este 2n-1-1. Atunci cea mai mic valoare pe care o ia z- este: 2n-(2n1
-1)=22n-1-2n-1+1=2n-1+1.
Pe de alt parte, n cod complementar exist posibilitatea s se rein
valoarea 10...0 (de n-1 ori 0). ntruct bitul de semn este 1, se memoreaz o
valoare negativ, pe care o complementm:

inversm cifrele: 0111...1 (de n-1 ori 0)


adunm 1 i obinem 10...0 (de n-1 ori 0), adic de unde am plecat
10...0(2)=2n-1 i dac inem cont c numrul este negativ obinem -2n-1

Valoarea memorat (10...0) este special (trecut n cod complementar


sau invers rmne nemodificat). S-a fcut convenia ca ea s reprezinte valoarea
negativ -2n-1. n concluzie, cel mai mic numr care poate fi reinut este -2n-1.
Utiliznd reprezentarea n cod complementar pe n poziii 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 octei 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


Exemple: 2,625, 10,34.
Pentru memorarea numerelor reale se
utilizeaz virgula mobil. Pentru nceput, prezentm schemele sub care se
memoreaz numerele n virgul mobil simpl precizie i dubl precizie.
1) Virgul mobil simpl precizie. Reprezentarea se face 4 octei (32 poziii
binare) sub forma:
Exponent
modificat

Parte
semnificativ
a

1poziie

8 poziii

23 poziii

binar

binare

binare

2) Virgul mobil dubl precizie. Reprezentarea se face 8 octei (64 poziii


binare) sub forma:
S

Parte
semnificativa

Exponent
modificat

1poziie

8 poziii

55 poziii

binar

binare

binare

Avem:
a) S - semn. Bitul de semn este:
0, dac numrul este mai mare sau egal cu 0;
1, dac numrul este strict mai mic dect 0.
b). Exponent modificat. Este ntlnit n literatura de specialitate i sub
numele de caracteristic.
c). Parte semnificativ. Dup cum observai, numrul de bii 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
urmtoarele:

se scrie numrul n binar;

se

normalizeaz

0
,1
..........
.. (10)

exp

adic

se

scrie

baza

sub

forma

(10 reprezint numrul 2(10)). Cu alte cuvinte, numrul se

paete semnicativa

scrie de aa natur nct partea ntreag s fie 0, iar prima cifr a prii
zecimale s fie diferit de 0.
7
www.ls-infomat.ro | www.manuale-de-informatica.ro

se reprezint conform standardului cerut. Exponentul modificat se obine dup


formula: Exponentul modificat = 27+exp(10)=10000000(2)+exp(2).

ntruct primul bit al prii semnificative este ntotdeauna 1, acesta nu va fi reinut,


dar se va ine cont de el.

se completeaz bitul de semn dup regula dat.

Exemple
1. S se reprezinte n virgul mobil numrul 100,75.
a. Scriem numrul 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 numrul normalizat:
1101000,11(2)=0,110100011(10)111 -111 este numrul 7(10), adic
puterea lui 2.
3. Calculm exponentul modificat:

10000000
00000111
10000111
4. Bitul de semn reine 0.
Numrul memorat n virgul mobil simpl precizie este:

010000111
0000000000

1010001100

0000

sau n hexa: 43D18000.


b) S se reprezinte n virgul mobil numrul -100,75. Am reprezentat 100,75.
Singura deosebire este c bitul de semn este 1.
110000111
0000000000

1010001100

0000

sau n hexa: C3D18000.


Pentru a reprezenta aceleai numere n virgul mobil dubl precizie se
adaug n dreapta reprezentrilor obinute un numr de 32 de cifre binare 0 (sau 8
cifre hexa 0 - pentru reprezentarea respectiv).
c) S se reprezinte n virgul mobil simpl precizie numrul 0,05.

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 reine 0):

0 01111100
0110011001

1001100110

100

n hexa, reprezentarea este: 3E4CCCCC.


d) S se reprezinte n virgul mobil simpl precizie numrul -0,05.
Pornim de la reprezentarea anterioar, cu bitul de semn 1.

1 01111100
0110011001

1001100110

100

n hexa, reprezentarea este: BE4CCCCC.


Utiliznd virgula mobil simpl precizie exponentul modificat (exp+128)
trebuie s verifice dubla inegalitate:
0 exp+128 255
Motivele?
255 este cel mai mare numr natural reprezentabil pe 8 poziii;
0 este cel mai mic numr natural reprezentabil pe 8 poziii.
Din dubla inegalitate de mai sus, rezult c exponentul trebuie s verifice
relaia:
-128 exp 127
Prin urmare, cel mai mare numr care poate fi reinut n virgul mobil
simpl precizie este:
1 1
1
( 2 ... 23 ) 2127 (10) 1 2 127
2 2
2
(2 10 ) 12 2 7 1024 12 128 100012 1,3 10 2

0,11....1 (10) ( 2 )
2 1012 7

1111111

1,3 (10 3 ) 12 10 2 1,3 10 36 10 2 1,3 10 38 .

9
www.ls-infomat.ro | www.manuale-de-informatica.ro

Cel mai mic numr pozitiv care poate fi reinut este:


0,100..0 (10) ( 2 )

10000000

1 128 1 1
1
1
1
2
128 129 130 10 13
2
2 2
2
2
(2 )

1
1
1

39 0, 00000
........
01 0.

13
13
1024
(1000)
10
de 39 ori

Observaii !

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 numr real se reprezint aproximativ. Cu toate acestea n hexa


reprezentarea sa este: 00000000 (n virgul mobil simpl precizie).
Observaia provine de la faptul c primul bit al prii semnificative este 1 i nu
se reprezint.

ntruct pentru reprezentarea unui numr negativ nu se modific dect bitul de


semn, este suficient aproximarea fcut pentru numerele reale pozitive.

Faptul c numerele reale se reprezint aproximativ, creeaz o mare problem


n informatic (pentru c exist aplicaii practice care cer o mare precizie a
calculului). Cu toate acestea se ocup Analiza numeric, disciplin aflat la
grania dintre informatic i matematic.

Exist mai multe standarde de reprezentare n virgul mobil. Ele difer prin
numrul de octei alocai pentru reprezentare, i / sau prin numrul de bii
folosii pentru reinerea exponentului modificat i numrul de bii folosii pentru
reinerea mantisei.

Cu ct numrul de bii folosii pentru reprezentarea exponentului modificat este


mai mare, cu att putem reprezenta numere mai mari.

Cu ct numrul de bii folosii pentru reprezentarea prii semnificative este mai


mare, cu att numrul poate fi reprezentat mai precis.

Cu ct numrul este mai mare crete probabilitatea ca acesta s fie


reprezentat cu aproximaie mai mare (exponentul mrit duce ca aproximaia
fcut la reprezentarea prii semnificative s fie mai mare).

5. Memorarea caracterelor
Pentru memorarea caracterelor se folosete un cod special numit ASCII.
Fiecare caracter se memoreaz la nivelul unui octet, printr-un numr (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;

Observaii!

Logica de codificare a caracterelor care reprezint litere mici sau mari este de
a acorda caracterelor coduri n ordine alfabetic (aceasta are implicaii uriae
n programare - este permis sortarea alfabetic);

A nu se confunda caracterul 1 cu numrul 1, caracterul 2 cu numrul 2 etc.

Exerciii propuse
1. Cum se memoreaz pe 2 octei 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 coninuturile a patru octei consecutivi n hexa: 1AB9C135.
Ce numere sunt reprezentate?

dac sunt privite ca 4 numere naturale;


dac sunt privite ca 4 numere ntregi;
dac sunt privite ca dou numere ntregi reprezentate n cod
complementar, fiecare pe doi octei;
dac reprezint un numr n virgul mobil simpl precizie.

11
www.ls-infomat.ro | www.manuale-de-informatica.ro

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