Sunteți pe pagina 1din 10

Prelegerea 1

In aceasta prelegere vom nv at a despre:


Reprezentarea numerelor n calculator;
Codul ASCII;
Coduri directe, inverse si complementare.
1.1 Coduri de reprezentare a datelor
Utilizarea codurilor a aparut pentru a asigura o comunicare ntre un utilizator
si un sistem de calcul (specic unui calculator); principalul obstacol care este
depasit printr-un cod de reprezentare a datelor constan corelarea dintre modul
n care sunt prelucrate datele de o persoana zica (care gandeste n sistemul
zecimal) si un computer (unde sistemul de baza este cel binar).
Denit ia 1.1 Fiind date doua mult imi nite si nevide A (alfabet sursa) si B
(alfabet cod), o codicare este o aplicat ie injectiva : A B

.
S-a notat cu B

mult imea secvent elor de caractere formate cu elemente din B.


Mult imea C = (A) se numeste cod, iar elementele sale sunt cuvinte - cod.
Daca B are numai doua simboluri, codicarea se numeste binara, iar
(A) este un cod binar.
Desi simple, codurile binare sunt de obicei lungi si deci greu de manipulat.
Adesea este mai convenabil sa grupam simbolurile binare formand alfabete mai
complexe.
Astfel, formand grupuri de cate patru simboluri binare, se obt ine codul
hexazecimal:
0 0000 4 0100 8 1000 C 1100
1 0001 5 0101 9 1001 D 1101
2 0010 6 0110 A 1010 E 1110
3 0011 7 0111 B 1011 F 1111
7
8 PRELEGEREA 1.
Reprezentarea n aceasta baza (care foloseste simbolurile auxiliare A, B, C, D,
E, F pentru numerele 10, 11, 12, 13, 14 si respectiv 15) se indica adesea prin
indicele 16 asezat la sfarsit. De exemplu, (61)
16
= (0110 0001)
2
. Daca nu
exista nici o confuzie, atunci indicii care semnaleaza baza se ignora.
Utilizarea acestui cod este aproape universal acceptata. Astfel, memo-
ria calculatorului lucreaza cu bit i grupat i n bytes (sau octet i). Un octet se
reprezint a de obicei nu ca o secvent a de 8 cifre binare, ci ca o pereche de cifre
hexazecimale. Astfel, de exemplu (00101101)
2
se scrie (2D)
16
, (01100000)
2
se
reprezint a prin (60)
16
etc.
Aceasta nu este ns a unica modalitate de codicare a numerelor n calcu-
lator. Practic, plecand de la reprezentarea binara, se poate construi o gama
larga de coduri. Ele sunt clasicate n
coduri ponderate;
coduri neponderate.
Codurile ponderate asociaza ecarei cifre zecimale un grup de patru cifre
binare, ecarei cifre binare indu-i asociata o pondere corespunzatoare pu-
terii lui 2 din cadrul codului.
Codul hexazecimal - binar prezentat mai sus este un exemplu de cod pon-
derat. El mai este numit adesea si codul 8421.
Codurile neponderate asociaza ecarei cifre zecimale patru cifre binare,
fara a avea semnicat ia unei ponderi. Cele mai cunoscute astfel de coduri sunt
codurile Exces 3 si Gray.
Codul Exces 3 se obt ine din codul hexazecimal prin adunarea numarului 3
(scris n binar) la ecare cifra.
Pentru codul Gray, caracteristic este faptul ca orice codicare a unui numar
difera de urmatoarea codicare prin exact o cifra binara.
Cele doua coduri sunt reprezentate n tabelul urmator:
Cifra 0 1 2 3 4 5 6 7 8 9
Exces 3 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100
Gray 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101
1.2 Codul ASCII
Un cod foarte important folosit n reprezentarea standard a simbolurilor alfa-
betice si numerice este codul ASCII (American Standard Code for Information
Interchange). El are 2
8
= 256 simboluri sursa, codicate n secvent e binare de
lungime 8; prezent amn tabelul urmator simbolurile printabile avand codurile
ASCII n intervalul [32, 127] (n domeniul [0, 31] nu sunt simboluri printabile,
iar n [128, 255] se denesc simboluri auxiliare, care nu sunt pe tastatura).
1.2. CODUL ASCII 9
Char Cod Char Cod Char Cod
(20)
16
@ (40)
16
(60)
16
! (21)
16
A (41)
16
a (61)
16
(22)
16
B (42)
16
b (62)
16
# (23)
16
C (43)
16
c (63)
16
$ (24)
16
D (44)
16
d (64)
16
% (25)
16
E (45)
16
e (65)
16
& (26)
16
F (46)
16
f (66)
16
(27)
16
G (47)
16
g (67)
16
( (28)
16
H (48)
16
h (68)
16
) (29)
16
I (49)
16
i (69)
16
(2A)
16
J (4A)
16
j (6A)
16
+ (2B)
16
K (4B)
16
k (6B)
16
(2C)
16
L (4C)
16
l (6C)
16
(2D)
16
M (4D)
16
m (6D)
16
. (2E)
16
N (4E)
16
n (6E)
16
/ (2F)
16
O (4F)
16
o (6F)
16
0 (30)
16
P (50)
16
p (70)
16
1 (31)
16
Q (51)
16
q (71)
16
2 (32)
16
R (52)
16
r (72)
16
3 (33)
16
S (53)
16
s (73)
16
4 (34)
16
T (54)
16
t (74)
16
5 (35)
16
U (55)
16
u (75)
16
6 (36)
16
V (56)
16
v (76)
16
7 (37)
16
W (57)
16
w (77)
16
8 (38)
16
X (58)
16
x (78)
16
9 (39)
16
Y (59)
16
y (79)
16
: (3A)
16
Z (5A)
16
z (7A)
16
; (3B)
16
[ (5B)
16
{ (7B)
16
< (3C)
16
\ (5C)
16
(7C)
16
= (3D)
16
] (5D)
16
} (7D)
16
> (3E)
16
(5E)
16
(7E)
16
? (3F)
16
(5F)
16
DEL (7F)
16
De exemplu, litera A, va avea codul hexazecimal - binar (41)
16
= (01000001)
2
,
caruia n zecimal i corespunde num arul 65.
De remarcat modalitatea diferita de codicare a cifrelor zecimale.

In codul
ASCII se codica caracterele, deci n aceasta codicare, cifrele 0, 1, . . . , 9 sunt
considerate caractere si prelucrate ca atare; de exemplu nu se pot face operat ii
aritmetice obisnuite cu ele, ci doar cu codurile ASCII asociate.
10 PRELEGEREA 1.
1.3 Reprezentarea numerelor n sistemele de
calcul

In calculatoare, sistemul de numerat ie utilizat este cel binar. Reprezentarea nu-


merelor n acest sistem se facen mai multe forme, n funct ie de tipul lor; pentru
ecare tip, operat iile aritmetice elementare sunt efectuate de catre dispozitive
speciale nglobate n arhitectura calculatorului (ceea ce asigura o viteza de
calcul sporita).
1.3.1 Reprezentarea numerelor ntregi
Reprezentarea n memoria calculatorului a numerelor ntregi (numita si repre-
zentare algebrica) se realizeaza pe un numar x de n pozit ii binare (de regula
n = 8, 16, 32, 64 sau 128). Aceasta reprezentare poate schematizat an modul
urmator:
n n1n2 2 1
S
. . . . . .
Prima pozit ie din stanga (a n-a pozit ie binara) este numit a bit de semn; ea
este ocupata de un bit care are valoarea 0 daca num arul este nenegativ, 1
daca numarul este negativ. A i-a cifra binara este coecientul lui 2
i1
n
reprezentarea num arului n baza 2.
Deci cel mai mare num ar ntreg care se poate reprezenta este 1 2
n2
+ 1
2
n3
+. . . + 1 2
1
+ 1 2
0
= 2
n1
1.
De exemplu, pentru n = 16, acesta este 2
15
1 = 32.767.

In schimb, cel mai mic numar care poate memorat este 2


n1
; el are
reprezentarea
n n1n2 2 1
1 0 0 0 0
. . . . . .

In cazul n = 16, acesta este 2


15
= 32.768.
Deci pe 16 pozit ii binare pot reprezentate toate numerele ntregi din
intervalul [32.768, 32.767].
Operat ii cu numere ntregi
Adunarea a doua numere ntregi se efectueaza n binar, pozit ie cu pozit ie,
de la dreapta spre stanga; dispozitivul aritmetic al sistemelor de calcul care
efectueaza adunarea se numeste sumator.
Exemplul 1.1 Sa se efectueze adunarea 23 + 15 n reprezentarea pe 8 cifre
binare (un octet). Efectuarea acestei operat ii este redata de gura urmatoare:
1.3. REPREZENTAREA NUMERELOR

IN SISTEMELE DE CALCUL 11
0 0 0 1 0 1 1 1
1 1 1 1 0 0 0 0
0 0 1 0 0 1 1 0
23
+
15
=
38
Pentru scadere se foloseste acelasi dispozitiv aritmetic care realizeaza adunarea.
Motivat ia constan faptul ca orice scadere se poate scrie sub forma unei adunari
x y = x + (y).
Pentru aceasta este necesara o reprezentare a numerelor negative astfel
nc at sa permita aplicarea relat iei de mai sus. Sunt cunoscute trei astfel de
reprezent ari:
1. Cod direct, care coincide cu reprezentarea algebrica (folosind bitul de
semn);
2. Cod invers (sau cod complementar la 1): se obt ine prinnlocuirea ecarei
cifre binare a cu 1 a;
3. Cod complementar (la 2): se obt ine din codul invers, la care n faza a
doua se aduna numarul 1.
Exemplul 1.2 Sa reprezentam n ecare din cele trei forme, pe 16 bit i (doi
octet i), numarul 320.
(1) Deoarece 320 = (101000000)
2
, reprezentarea lui 320 n cod direct este:
1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0
(2) Codul invers se obt ine din reprezentarea numarului 320, prin comple-
mentarea tuturor cifrelor binare:
1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1
(3) Pentru codul complementar, se aduna 1 la codul invers:
1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0
Scaderea se transforman adunare prin reprezentarea scaz atorului n cod invers
sau cod complementar. Deoarece marea majoritate a implement arilor folosesc
codul complementar, ne referim la aceasta maniera de operare.
Pentru scaderea x y se efectueaza urmatorii pasi:
1. Se trece y n cod complementar;
2. Se face adunarea dintre x si y scris n noua reprezentare;
3. Daca rezultatul este negativ, acesta este reprezentat tot n cod comple-
mentar;
4. Daca apare transport la pozit ia alocata semnului, acesta se ignora.
12 PRELEGEREA 1.
Exemplul 1.3 Sa se efectueze 32 41 cu reprezentare n cod complementar
a scazatorului, pe 8 cifre binare.
32 = (100000)
2
, 41 = (101001)
2
.
Efectuarea operat iei de scadere este redata prin schema urmatoare:
?
+41 n cod direct
+32 n cod direct
41 n cod complementar
+1
0 0 1 0 1 0 0 1
0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 0
1 1 0 1 0 1 1 1
1 1 1 0 1 1 1 1 32 + (41) = 9 n cod complementar
1.3.2 Reprezentarea numerelor reale n virgula mobila
Numerele reale se reprezinta n interiorul unui sistem de calcul sub forma
fract ionar a, ntr-o codicare numita virgula mobila (oating point).

In prima faza, orice num ar este adus la forma


N = 1, f 2
e
unde:
N este num arul care trebuie reprezentat n virgula mobila,
f - partea fract ionar a a lui N,
1, f se numeste mantisa si trebuie sa respecte relat ia de normalizare
1 |1, f| < 2;
2 este baza sistemului de numerat ie (sistemul binar),
e este exponentul bazei sistemului de numerat ie.
Exemplul 1.4 Numarul N = 25 se scrie n virgula mobila sub forma
25 = (11001)
2
= 1, 1001 2
4
.
Exemplul 1.5 Numarul
31
32
se va scrie sub forma unui numar n virgula mo-
bila astfel:
31
32
=
2
4
+ 2
3
+ 2
2
+ 2
1
+ 2
0
2
5
= 2
1
+2
2
+2
3
+2
4
+2
5
= (0, 11111)
2
=
1, 1111 2
1
.
Exemplul 1.6 Pentru N =
1
8
reprezntarea n virgula mobila este:
1
8
=
2
3
= (0, 001)
2
= 1, 0 2
3
.
De observat ca practic inegalitatea de normalizare coincide cu pozit ionarea
virgulei n cadrul num arului binar dupa prima cifra 1, concomitent cu modi-
carea corespunzatoare a exponentului bazei.
1.3. REPREZENTAREA NUMERELOR

IN SISTEMELE DE CALCUL 13
Reprezentarea numerelor n virgula mobila are doua forme standard:
1. reprezentarea n virgula mobila simpla precizie;
2. reprezentarea n virgula mobila dubla precizie.
Reprezentarea n simpla precizie se face pe un cuvant (32 pozit ii binare) sub
forma:
S
32 31 24 23 1
f C = e + 127
Prima pozit ie (S) reprezint a semnul num arului N; el este codicat cu 0 daca
N > 0 si 1 daca N < 0. Pentru cazul N = 0, S este nedeterminat.
Urmatoarele opt pozit ii binare sunt ocupate de o constant a numit a carac-
teristica (C), construita n asa fel ncat sa codice exponentul mpreuna cu
semnul sau. Caracteristica este calculata dupa formula C = e + 127; daca
C 127, atunci e 0, iar pentru C < 127, exponentul va negativ.
Valoarea maxima a caracteristicii este 2
8
1 = 255, ceea ce nseamna ca
cel mai mare exponent admis de reprezentarea n simpla precizie este e =
255 127 = 128.
Ultimele 23 pozit ii binare sunt alocate reprezentarii fract iei aliniata la
stanga si completata (eventual) cu zerouri (nesemnicative).
Exemplul 1.7 Pentru reprezentarea n virgula mobila mobila simpla precizie
a numarului din Exemplul 1.4, deoarece 25 = 1, 1001 2
4
, vom avea S =
0, f = 1001 si C = e + 127 = 4 + 127 = 131 = (10000011)
2
. Deci
0
32 31 24 23 1
1 0 0 1 0 0 0 0 . . . . . . . . . 0 0 1 0 0 0 0 0 1 1
Exemplul 1.8 Pentru
31
32
= 1, 1111 2
1
(Exemplul 1.5) avem S = 0, f =
1111, C = 1 + 127 = 126 = (01111110)
2
, deci
0
32 31 24 23 1
1 1 1 1 0 0 0 0 . . . . . . . . . 0 0 0 1 1 1 1 1 1 0
Exemplul 1.9 Numarul
1
8
= 1, 0 2
3
(Exemplul 1.6) are S = 1, f = 0
si C = 3 + 127 = 124 = (01111100)
2
, deci
1
32 31 24 23 1
0 0 0 0 0 0 0 0 . . . . . . . . . 0 0 0 1 1 1 1 1 0 0
14 PRELEGEREA 1.
Reprezentarean virgula mobila dubla precizie se realizeaza pe 64 pozit ii binare
(cuvant dublu), a carui structura este
S
64 63 53 52 1
f C = e + 1023

In acest caz, caracteristica este reprezentata pe 11 cifre binare, avand posibili-


tatea de a nmagazina o valoare maxima 2
11
1 = 2047, ceea ce corespunde
unui exponent e = 2047 1023 = 1024.
Fract ia ocupa 52 pozit ii binare.
Exemplul 1.10 Sa reprezentam n virgula mobila dubla precizie numarul
124, 0625. Vom avea 124, 0625 = (1111100, 0001)
2
= 1, 11110000012
6
, deci
S = 1, f = 1111000001, C = e + 1023 = 6 + 1023 = 1029 = (10000000101)
2
.
Reprezentarea este
1
64 63 53 52 1
1 1 1 1 0 0 0 0 0 1 0 0 . . . . . . . . . 0 1 0 0 0 0 0 0 0 1 0 1
La ambele forme de reprezentare n virgula mobila, cifra 1 dinaintea virgulei nu
se reprezinta; observat ia este utila atunci cand se doreste obt inerea num arului
real din una din formele de reprezentare n virgula mobila.
Exemplul 1.11 Un numar n virgula mobila are forma:
11000010 11001111 00001111 00100001
Urmarind forma de reprezentare, se constata ca:
- Prima cifra S = 1 indica un numar negativ;
- Urmatoarele 8 cifre binare specica valoarea caracteristicii
C = 10000101 = 133, deci e = 133 127 = 6;
- Partea fract ionara ocupa ultimele 23 cifre binare
f = 10011110000111100100001.
Deci numarul este N = 1, 10011110000111100100001 2
6
=
= 1100111, 10000111100100001 = 103, 5296.
Operat ii efectuate n virgula mobila
Adunarea si scaderea a doua numere n virgula mobila se efectueaza astfel:
1. Se compara cei doi exponent i pentru a-l determina pe cel mai mare;
2. Se aliniaza mantisa num arului cu exponent mai mic, prin deplasarea
virgulei corespunzatoare exponentului mai mare;
3. Se aduna (scad) mantisele aliniate, pastrand exponentul comun;
4. Eventual se normalizeaza mantisa, concomitent cu modicarea rezultat-
ului.
1.3. REPREZENTAREA NUMERELOR

IN SISTEMELE DE CALCUL 15
Exemplul 1.12 Sa se efectueze n virgula mobila
3
4
+ 7.
x =
3
4
=
2
1
+ 2
0
2
2
= 2
1
+ 2
2
= (0, 11)
2
= 1, 1 2
1
,
y = 7 = (111)
2
= 1, 11 2
2
.
Deoarece y are exponentul mai mare, x se va alinia corespunzator:
x = 1, 11 2
1
= 0, 0011 2
2
. Acum
x +y = (0, 0011 + 1, 11) 2
2
= 1, 1111 2
2
.
Nu este necesara normalizarea mantisei.
Exemplul 1.13 Sa calculam n virgula mobila 34 9:
x = 34 = (100010)
2
= 1, 001 2
5
,
y = 9 = (1001)
2
= 1, 001 2
3
= 0, 01001 2
5
.
Deci x y = (1, 00010 0, 01001) 2
5
= 0, 11001 2
5
.
Normalizand, se obt ine x y = 1, 1001 2
4
= (11001)
2
= 25.
Operat iile de nmult ire si mp art ire presupun:
1. Adunarea (scaderea) exponent ilor;
2.

Inmult irea (mp art irea) mantiselor;
3. Eventuala normalizare a mantisei.
Exemplul 1.14 Sa se efectueze n virgula mobila 5 9:
x = 5 = (101)
2
= 1, 01 2
2
, y = 9 = (1001)
2
= 1, 001 2
3
.
x y = (1, 01 1, 001) 2
2+3
= 1, 01101 2
5
= (101101)
2
= 45.
Exemplul 1.15 Sa se efectueze n virgula mobila 5 : 10.
x = 5 = (101)
2
= 1, 01 2
2
, 10 = (1010)
2
= 1, 01 2
3
.
x; y = (1, 01 : 1, 01) 2
23
= 1, 0 2
1
= (0, 1)
2
= 0, 5.
1.3.3 Reprezentarea zecimal codicat binar
Aproape toate calculatoarele folosesc pentru memorarea cifrelor zecimale repre-
zentarea n cod 8421.

Insa, deoarece sistemele de calcul lucreaza cu octet i
(grupuri de 8 pozit ii binare) si nu 4 cate sunt suciente unei cifre zecimale,
se folosesc doua modalitat i de codicare;
Forma condensata (mpachetat a), n care, pe cele 8 cifre ale unui octet
sunt reprezentate doua cifre zecimale exprimate n binar;
Forma dilatata (despachetat a), n care pe ecare octet se ret ine o singura
cifra zecimala pe ultimii patru pozit ii binare. Primele patru pozit ii ale
ecarui octet sunt ocupate de o marca M.
16 PRELEGEREA 1.
Exemplul 1.16 Numarul 342 este memorat pe doi octet i n forma mpache-
tata
0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0
2 4 3 0
si pe trei octet i n forma despachetata:
M 0 0 1 1 M 0 1 0 0 M 0 0 1 0
4 3 2
1.4 Exercit ii
Exercit iul 1.1 Sa se treaca din baza 10 n baza 2 numerele
18926; 7772; 7863, 15; 10309, 07.
Exercit iul 1.2 Sa se treaca din baza 2 n baza 10 numerele
1101100010100110; 100010101001, 0011011001.
Exercit iul 1.3 Sa se efectueze calculele
11 + 32600, 599 10692, 9862 + 20043 18552.
Exercit iul 1.4 Sa se deneasca scaderea a doua numere ntregi folosind ca
reprezentare codul invers.
Exercit iul 1.5 Sa se scrie n virgula mobila numerele
6489; 0, 000185;
85
256
; 23, 23.
Exercit iul 1.6 Sa se reprezinte numerele scrise n virgula mobila n exercit iul
anterior, pe
(1) 32 pozit ii binare (simpla precizie);
(2) 64 pozit ii binare (dubla precizie).
Exercit iul 1.7 Ce numar real are reprezentarea n simpla precizie
000010010011010110100011010101011.
Exercit iul 1.8 Aceeasi problema pentru numarul a carui reprezentare n dubla
precizie este:
10001001001001000011101101010100001001010110100100001010000110101.
Exercit iul 1.9 Sa se efectueze n virgula mobila calculele
8 +
7
32
;
25
36
799; 361 12, 495; 38398 : 73.
Exercit iul 1.10 Sa se detalieze operat iile de adunare si scadere cu numere
reprezentate n forma condensata.