Documente Academic
Documente Profesional
Documente Cultură
Curs AC 2
Curs AC 2
CURSUL 2
1.2.2 Organizarea memoriei principale (continuare)
Memoria este alcatuit dintr-un numar de celule (sau locaii), fiecare putnd stoca o parte din
informaie. Fiecare celul are un numar, numit adres, la care programele se pot referi. Dac
o memorie are n locaii, ele vor avea adrese de la 0 la n-1. Toate locaiile dintr-o memorie
contin acelai numr de bii. Dac o locaie conine k bii, atunci ea poate memora 2k
combinaii diferite. Figura urmtoare arat trei moduri diferite de organizare pentru o
memorie de 96 bii. Notai c locaiile alturate au adrese consecutive. Calculatoarele care
folosesc sisteme de numere binare exprim adresele memoriei ca numerele binare. Dac o
adres are m bii, numrul maxim de locaii adresabile este de 2m. De exemplu, o adres care
face referin la memoria din figura 18a are nevoie de cel putin 4 bii pentru a exprima toate
numerele de la 0 la11. O adres cu 3 bii este suficient pentru situaiile din figurile 18b
respectiv 18c. Numrul de bii din adres determin numrul maxim de locaii adresabile
dirtect n memorie i este independent de numrul de bii al fiecrei locaii.
O memorie cu 212 locaii a cte 8 bii fiecare i o memorie cu 1212 locaii a cte 64 bii fiecare
ambele necesit adrese de 12 bii. Numrul de bii pe locaii ale unor calculatoare care au
existat pe pia n timp sunt listate n figura 1.9.
Adresa
0
Adresa
0
Adresa
0
5
16 bii
(b)
11
12 bii
(c)
8 bii
(a)
Bii/Celul
1
8
12
16
18
24
27
32
36
48
60
1/11
Semnificatia celulei este aceea c este cea mai mic unitate adresabil. n ultimii ani, fabricile
de calculatoare au standardizat locaia la 8 bii i au denumit-o byte. Bytes sunt grupai n
words. Un calculator cu 32 bit/word are 4 bytes/ word, iar un calculator cu 64 bit/word are 8
bytes/word. Semnificaia unui cuvant (word) este aceea c majoritatea instruciunilor
opereaz pe un numar ntreg de cuvinte (words), de exemplu grupnd dou cuvinte mpreun.
Deci o main pe 32 bii va avea regitrii de 32 bii i instruciuni pentru manipularea
cuvintelor de 32 bii, iar una pe 64 bii va avea regitrii pe 64 bii i instruciuni pentru
mutarea, adunarea, scderea i alte manipulari pe cuvinte de 64 bii.
0
4
8
12
Big endian
1
2
3
5
6
7
9
10
11
13
14
15
Adres
0
4
8
12
Byte
Cuvnt pe 32 de bii
3
7
11
15
Little endian
2
1
0
6
5
4
10
9
8
14
13
12
Byte
Cuvnt pe 32 de bii
2/11
rimite nregistrarea little endian, octet dup octet, ncepnd cu bitul 0 i terminnd cu bitul 19
(vom fi optimiti i vom presupune c biii octeilor nu s-au inversat prin transmisie, deoarece
avem deja destule probleme). Astfel, octetul 0 al big endian-ului trece n memoria little
endian-ului la octetul 0, i tot asa, ca n figura 1.11c).
Big endian
0 J I M
4 S M I T
8 H 0 0 0
12 0 0 0 21
16 0 0 1 4
a)
Little endian
T
0
0
0
M I J
I M S
0 0 H
0 0 21
0 1 4
b)
Trecerea de la
Trecerea si
big la little endian schimbarea
M I J
J I M
0
T I M S
S M I T 4
0 0 0 H
H 0 0 0 8
21 0 0 0
0 0 0 21 12
4 1 0 0
0 0 1 41 16
c)
d)
CURS 2 AC 2011
0 1
3/11
CURS 2 AC 2011
4/11
acestea, Unicode, a fost dezvoltat n coooperare de ctre unii dintre cei mai importani
productori de echipamente i programe. El utilizeaz modele de 16 bii pentru reprezentarea
fiecrui simbol. Ca rezultat, codul Unicode conine 65.536 abloane diferite - suficiente
pentru a permite reprezentarea celor mai utilizate ideograme chinezeti i japoneze. Un cod
care va concura probabil cu Unicode este dezvoltat de Organizaia Internaional de
Standarde (International Standard Organiztion - ISO), din care face parte i ANSI.
Utiliznd modele de 32 de bii pentru reprezentarea simbolurilor, acest cod poate reprezenta
peste 17 milioane de simboluri. Rmne de vzut care dintre coduri va ctiga cea mai mare
popularitate.
CURS 2 AC 2011
5/11
(figura 1.14a). Fiecare poziie are asociat o pondere de zece ori mai mare dect poziia din
dreapta sa. Valoarea reprezentat de ntreaga expresie se obine nmulindu-se valoarea
fiecrei cifre cu ponderea asociat poziiei ocupat de cifra respectiv n cadrul numrului i
apoi adunndu-se rezultatul nmulirtilor. De exemplu, 375 = 3 X 102 + 7 X 101 + 5 X 1x100.
n notaia binar, poziia fiecrei cifre este de asemenea asociat cu o anumit pondere,
numai c ponderea asociat fiecare poziii este de dou ori mai mare dect ponderea poziiei
din dreapta. Mai exact, cifra cea mai din dreapta a unei reprezentri n binar are asociat
ponderea unu (20), urmtoarea poziie din stnga este asociat cu doi (21), urmtoarea are
ponderea patru (22), urmtoarea este asociat cu opt (23), i aa mai departe. De exemplu, n
cazul reprezentri 1011 n binar, cifra 1 cea mai din dreapta este asociat cu 1, urmtoarea
cifr 1 se afl n poziia asociat cu doi, cifra 0 este asociat cu patru, iar cifra 1 cea mai din
stnga este asociat lui opt (figura 1.14b).
Figura 1.15 Decodificarea reprezentrii binare 100101
Reprezentare binar
1 0 0
Valoarea bitului
1
1
Cantitatea asociat poziiei
1 x unu
=1
0 x doi
=0
1 x patru
=4
0 x opt
=0
0 x aisprezece = 0
1 x treizeci i doi = 32
Total = 37
Pentru a afla valoarea corespunztoare unei reprezentri n binar, vom proceda la fel ca i n
baza zece - vom nmuli valoarea fiecrei cifre cu ponderea asociat poziiei sale i vom
aduna rezultatele. De exemplu, valoarea reprezentat de 100101 este 37, dup cum este artat
n figura 1.15. Observai c de vreme ce notaia binar utilizeaz numai cifrele 0 i 1, acest
proces de nmulire i adunare se reduce doar la adunarea ponderilor asociate poziiilor
ocupate de valoarea 1. Astfel, modelul de bii 1011 reprezint valoarea unsprezece, fiindc
cifrele 1 se afl n poziiile asociate cu ponderile unu, doi i opt.
Observai c secvena reprezentrilor binare obinute prin numrarea de la zero la opt este
urmtoarea:
0
1
10
11
100
101
110
111
1000
CURS 2 AC 2011
6/11
Exist numeroase metode care pot fi utilizate pentru generarea acestei secvene i, dei nu
sunt elegante n ceea ce privete partea teoretic, ele furnizeaz o metod rapid pentru
obinerea reprezentrii n binar a valorilor mici. Una dintre metode este aceea de a ne imagina
contorul de kilometraj al unei maini ale crui roi de afiaj conin numai cifrele 0 i 1.
Contorul pornete din 0 i se rotete la 1 pe msur ce maina se deplaseaz. Apoi, n timp ce
roata contorului trece din 1 n 0, ea va provoca apariia unui 1 la stnga sa, producnd
afiarea lui 10. Valoarea 0 din dreapta se rotete apoi n 1, producnd 11. n acest moment,
trecerea valorii 1 din dreapta n 0 va face ca valoarea 1 din stnga s treac i ea n zero.
Acest fapt va avea ca efect apariia altei cifre 1 n cea de a treia coloan i deci afiarea
valorii 100.
Figura 1.16 Algoritm pentru aflarea reprezentrii n binar a unui numr ntreg pozitiv
Pasul 1: Se mparte valoarea la doi i se memoreaz restul mpririi.
Pasul 2: Ct timp ctul obinut este diferit de zero, se continu mprirea noului ct la doi
memorndu-se restul.
Pasul 3: Cnd s-a obinut un ct egal cu zero, reprezentarea n binar a valorii iniiale
const din resturile mpririlor, afiate de la stnga n care au fost memorate.
Pentru a afla reprezentarea n binar a valorilor mari, vei prefera probabil abordarea mai
sistematic descris de algoritmul din figura 1.16. S aplicm acest algoritm asupra valorii
treisprezece (figura 1.17). Vom mpri mai nti treisprezece la doi obinnd ctul ase i
restul unu. Deoarece ctul nu este egal cu zero, pasul 2 al algoritmului ne indic s l
mprim la doi, obinnd un nou ct cu valoarea trei i restul zero. Noul ct este de asemenea
diferit de zero, aa c l vom mpri din nou la doi, obinnd ctul 1 i restul 1. Vom mpri
din nou i acest ct la doi i obinem ctul zero i restul unu. Cum am obinut un ct cu
valoarea zero, vom trece la pasul 3 al algoritmului, unde vom afla c reprezentarea n binar a
valorii iniiale (13) este 1101.
Figura 1.17 Aplicarea algoritmului din figura 1.12 pentru a se determina reprezentarea n
binar a numrului treisprezece
0
2 1
Rest 1
1
2 3
Rest 1
3
2 6
Rest 0
6
2 13
Rest 1
1 1 0 1
CURS 2 AC 2011
7/11
Reprezentare n binar
S revenim la problema iniial, stocarea datelor numerice. Utiliznd notaia n binar, putem
memora ntr-un octet orice numr ntreg ntre 0 i 255 (ntre 00000000 i 11111111), iar dac
utilizm doi octei putem stoca numere ntregi aflate 0 i 65535. Acest fapt este o
mbuntire spectaculoas fa de posibilitattea de a memora doar numere ntregi de la 0 la
99, ca n cazul codificrii caracterelor ASCII.
Din aceast cauz, precum i din alte motive, se obinuiete ca informaiile numerice s fie
stocate utiliznd o form binar n locul codificrii simbolurilor. Spunem o form a notaiei
binare, deoarece sistemul binar simplu pe care l-am descris reprezint doar fundamentul mai
multor tehnici de stocare utilizate n domeniul calculatoarelor. Unele variante ale sistemului
binar sunt discutate mai trziu n acest capitol. Deocamdat vom reine c pentru stocarea
numerelor ntregi se utilizeaz de obicei un sistem denumit notaia notaia n complement fa
de doi, deoarece acesta pune la dispoziie o metod comod pentru reprezentarea att a
numerelor pozitive ct i a celor negative. Pentru reprezentarea numerelor care conin pri
fracionare ca de exemplu 4 1/2 sau 2 3/4, se utilizeaz alt tehnic, ce poart numele de
reprezentare n virgul mobill. n concluzie, o anumit valoare (cum ar fi 25) poate fi
reprezentat prin diferite modele de bii (sub forma unor coduri de caractere, n notaia n
complement fa de doi sau n notaia n virgul mobil ca 25 0/2); reciproc, un anumit ir de
bii poate fi interpretat n diferite moduri.
S menionm acum alt problem important care apare la sistemele de stocare a valorilor
numerice. Indiferent de lungimea irului de bii pe care-l poate aloca un calculator pentru
stocarea valorii numerice, vor exista totui valori prea mari sau pri fracionare prea mici
pentru a putea fi memorate n spaiul alocat. Ca rezultat va exista ntotdeauna riscul s apar
erori cum ar fi depirea superioar (valori prea mari) sau eroarea de rotunjire (fracii prea
mici), erori care trebuie tratate, pentru a nu se ajunge la situaia ca un utilizator al
calculatorului s fie pus, fr a bnui nimic, n faa unor date eronate.
CURS 2 AC 2011
8/11
utiliznd un pixel de imprimant pentru a reprezenta un pixel original sau eventual blocuri de
2x2 pixeli de imprimant pentru a reprezenta un pixel din imagine. Ultima metod va
produce o imagine mai mare dect prima, dar o scalare intermediar ar fi dificil de realizat.
Pentru a rezolva problema scalrii, imaginea poate fi memorat ca un set de directive care
precizeaz modul de desenare al imaginii, n loc s se utilizeze o reprezentare pixel cu pixel.
De exemplu, o linie existent n imagine ar putea fi reprezentat prin instruciunea de
desenare a unei linii ntre dou puncte anumite. O asemenea metod las detaliile referitoare
la modul de desenare a liniei n seama dispozitivului care produce imaginea n loc s-i
impun acestuia s reproduc un model particular de pixeli. Ea furnizeaz de asemenea o
descriere compatibil cu orice mrime a unitilor sistemului de coordonate care ar putea fi
specificat atunci cnd se dorete afiarea imaginii.
Diferitele fonturi disponibile pentru imprimantele i monitoarele de astzi sunt reprezentate
de obicei n acest mod, ceea ce ofer flexibilitate la redimensionarea caracterelor; ele se
numesc fonturi scalabile (scalable font). De exemplu, True Type (dezvoltat de Microsoft
i Aplle Computer) este un sistem care indic modul n care s fie desenate simbolurile din
text. De asemenea, PostScript (dezvoltat de Adobe Systems) pune la dispoziie o metod
de descriere a caracterelor i n general a datelor grafice.
De asemenea, tot metode de reprezentare a datelor sunt i MPEG (Motion Picture Experts
Group), o tehnic folosit pentru datele video i audio, i DXF (Drawing Interchange
Format), utilizat la sisteme de proiectare asistat de calculator (Computer Aided Design
CAD) n care imaginile trebuie rotite i redimensionate pe ecranul calculatorului.
1
+0
1
0
+1
1
1
+1
0
CURS 2 AC 2011
9/11
vom ncepe prin a aduna cifrele 0 i 1 cele mai din dreapta; obinem rezultatul 1, care-l vom
scrie sub coloana respectiv. Vom aduna apoi cifrele 1 i 1 din coloana urmtoare, obinnd
rezultatul 10. Vom scrie 0 sub coloan i vom transfera cifra 1 deasupra coloanei urmtoare.
n acest moment, situaia arat astfel:
1
00111010
+00011011
01
Vom aduna cifrele 1, 0 i 0 din coloana urmtoare, obinnd rezultatul 1 i deci vom scrie 1
sub coloan. Cifrele 1 i 1 din urmtoarea coloan dau ca rezultat al adunrii 10; vom scrie 0
sub coloana respectiv i vom transfera cifra 1 deasupra coloanei urmtoare. n acest
moment, situaia arat astfel :
1
00111010
+00011011
0101
Adunarea cifrelor 1,1 i 1 din coloana urmtoare d ca rezultat 11; vom scrie cifra 1 sub
coloana respectiv i vom transfera cifra 1 deasupra coloanei urmtoare. Vom aduna acest 1
cu cifrele1 i 0 existente deja n aceast coloan i vom obine 10. Din nou vom scrie cifra 0
sub coloan i vom transfera 1 n coloana urmtoare. Avem acum:
1
00111010
+00011011
010101
Vom aduna acum cifrele 1, 0 i 0 din penultima coloan, obinnd rezultatul 1, pe care-l
vom scrie sub coloan, fr a avea ce transfera ctre coloana urmtoare. n sfrit vom aduna
cifrele din ultima coloan, obinnd rezultatul 0 i-l vom scrie sub aceast coloan. Rezultatul
final al adunri este urmtorul:
00111010
+00011011
01010101
CURS 2 AC 2011
10/11
CURS 2 AC 2011
11/11