Sunteți pe pagina 1din 139

4

BAZELE NUMERICE
ALE CALCULATOARELOR

4.1 Sisteme de numeraţie

Un număr reprezintă informaţia a cărei semnificaţie este universal


stabilită şi ale cărei prelucrări au la bază aritmetica. Numerele sunt incluse
într-o clasă de codificare particulară, în care proprietăţile abstracte ale
aritmeticii sunt translatate în mecanismele concrete de calcul asupra
codurilor.
Sistemul de numeraţie este format din totalitatea regulilor de
reprezentare a numerelor cu ajutorul unor simboluri numite cifre. Numărul
de simboluri permise pentru reprezentarea cifrei este numit baza sau
rădăcina sistemului de numeraţie.
Sistemele de numeraţie pot fi:
ƒ poziţionale (sistemele: zecimal, binar, octal);
ƒ nepoziţional (sistemul roman). În continuare sunt prezentate
simbolurile folosite în cadrul sistemului de numeraţie roman şi
valorile zecimale corespunzătoare acestor simboluri:
I X C M V L D
1 10 100 1000 5 50 500
În studiul arhitecturii calculatoarelor ne interesează în mod deosebit
(tabelul 4.1):
¾ reprezentarea binară (baza=2);
¾ reprezentarea octală (baza=8);
¾ reprezentarea zecimală (baza=10);
¾ reprezentarea hexazecimală (b=16).
Sisteme de calcul şi operare

Exemple de sisteme de numeraţie


Tabelul 4.1
Sistem de numeraţie Baza (b) Cifrele
Binar 2 (0,1)
Octal 8 (0,1,2,3,4,5,6,7)
Zecimal 10 (0,1,2,3,4,5,6,7,8,9)
Hexazecimal 16 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

Fiind dat un număr întreg N, se numeşte reprezentare în baza b,


orice succesiune de cifre a n , a n-1, ..., a 0 care satisface următoarele
proprietăţi:
ª cifrele lui sunt numere naturale cu proprietatea :
0 ≤ ai ≤ b-1 (i = 0÷n)
ª există egalitatea:
N = anbn + an-1bn-1 + ….a0b0
Când succesiunea de cifre are proprietăţile enumerate, prin definiţie,
se poate scrie:
N = anan-1 ….a0 sau (N)b = anan-1 ….a0
Un număr întreg admite o reprezentare unică în baza b. Fiind dat un
număr real R, se numeşte reprezentare în baza b, orice succesiune de cifre
an,an-1,...,a0,a-1, a-2,...,a-m ce îndeplineşte proprietăţile:
ª cifrele ai sunt numere naturale cu proprietatea :
0 ≤ ai ≤ b-1 (i = − m, n ) ;
ª nu există un rang k astfel încât să avem:
ak = ak-1 = ak-2 = … = b-1
ª există egalitatea:
R = anbn + an-1bn-1 + ….a0b0 + a-1b-1 +….+ a-mb-m
În situaţia în care succesiunea de cifre are proprietăţile enumerate
prin definiţie se scrie:
R = anan-1….a0, a-1a-2 …. a-m
an este cifra cea mai semnificativă (CCMS) a numărului R, iar a-m este cifra
cea mai puţin semnificativă (CCMPS).
Bazele numerice ale calculatoarelor

4.2 Conversia bazei de numeraţie

Fiind dat un număr reprezentat în sistemul de numeraţie cu baza b,


calculul cifrelor reprezentării în baza q, q>1 se numeşte conversia din baza
b în baza q.
Conversia numerelor dintr-un sistem de numeraţie b în alt sistem de
numeraţie cu baza q se efectuează examinând separat partea întreagă şi
partea fracţionară.
Fie (N)b=(NI)b + (NF)b, unde (NI)b – reprezintă partea întreagă a
numărului (N)b iar (NF)b reprezintă partea fracţionară.

4.2.1 Conversia numerelor întregi

În noua bază de numeraţie q, partea întreagă [(NI)b] se va scrie:


( N I )b = a n q n + a n-1 q n-1 + ⋅ ⋅ ⋅ ⋅ + a0 q 0 ,
unde a i (i = 0, n) sunt cifre ce aparţin sistemului de numeraţie în baza q.
Conversia părţii întregi (NI)b în baza q se va reduce la determinarea
coeficienţilor a i (i = 0, n) , ce se obţin prin împărţirea succesivă a lui (NI)b
cu q, astfel:
(NI)b/q=(anqn-1+an-1qn-1+,...,+a1) + a0/q → a0

(NI1)b - partea întreagă Rest


a câtului
(NI1)b/q= (anqn-2+⋅⋅⋅⋅+a2) + a1/q → a1
(NI2)b


(NIk)b/q= anqn-k-1+an-1qn-k-2+⋅⋅⋅+ak+1 + ak/q → ak
(NI(k+1))b


(NI(n-1)b/q= an + an-1/q → an-1
(NIn)b
(NIn)b/q= 0 + an/q → an
Sisteme de calcul şi operare

Algoritmul se încheie când partea întreagă a câtului devine nulă.


Cifra an reprezintă cifra cea mai semnificativă iar a0 este cifra cea mai puţin
semnificativă.

Exemplul 1

Fiind dat numărul (248)10 să se facă conversia sa în sistemele: binar,


octal şi hexazecimal. (Numerele reprezentate în sistemul zecimal, în mod
obişnuit, se scriu fără specificarea bazei de numeraţie.)

Rezolvare.

a. Conversia în binar

248/2=124 + 0/2 → 0 (a0)


124/2= 62 + 0/2 → 0 (a1)
62/2= 31 + 0/2 → 0 (a2)
31/2= 15 + 1/2 → 1 (a3)
15/2= 7 + 1/2 → 1 (a4)
7/2= 3 + 1/2 → 1 (a5)
3/2= 1 + 1/2 → 1 (a6)
1/2= 0 + 1/2 → 1 (a7)

(248)10=(11111000)2

b. Conversia în octal

248/8=31 + 0/8 → 0 (a0)


31/8= 3 + 7/8 → 7 (a1)
3/8= 0 + 3/8 → 3 (a2)

(248)10=(370)8

c. Conversia în hexazecimal

248/16=15 + 8/16 → 8 (a0)


15/16= 0 + 15/16→ F (a1)

(248)10=(F8)H
Bazele numerice ale calculatoarelor

Calculul simplificat pentru conversia în:

binar octal hexazecimal


248 0 248 0 248 8
124 0 31 7 15 15
62 0 3 3 0
31 1 0
15 1
7 1
3 1
1 1
0

Aşadar, (248)10=(11111000)2=(370)8=(F8)H

4.2.2 Conversia rapidă

În cazurile în care între cele două baze de numeraţie (implicate în


conversie) există o relaţie de genul:
p
b1=b2
(b1 şi b2 sunt cele două baze, p este număr natural mai mare sau egal cu 2)
atunci conversia se poate realiza mai rapid.
Pentru a face conversia din baza b2 (baza mai mică) în baza b1, se
împarte numărul reprezentat în b1 în grupe de câte p cifre, de la dreapta la
stânga pentru partea întreagă şi de la stânga la dreapta pentru partea
fracţionară. Dacă ultimul grup de cifre nu are exact p cifre, se completează
cu zerouri pentru a se obţine un grup de p cifre.
Pentru a face conversia din baza b1 (baza mai mare) în baza b2,
pentru fiecare cifră a numărului din baza b1 se asociază un grup de p cifre în
baza b2, obţinându-se astfel numărul în noua bază b2.
Sisteme de calcul şi operare

Exemplul 2.
Pentru a face conversia din baza 2 în baza 8 sau 16 se poate porni de
la reprezentarea în baza 2 a numărului şi deoarece 8=23 iar 16=24, se pot
face grupări de 3 respectiv 4 cifre binare pentru a obţine reprezentarea în
aceste baze. În cazul numerelor întregi gruparea se face începând de la
CCMPS (de la dreapta la stânga numărului).
(248)10=( 11 111 000 )2=(370)8

(248)10=( 1111 1000 )2=(F8)H

Exemplul 3.
Pentru a face conversia din baza 8 în baza 2 vom înlocui fiecare
cifră a numărului scris în baza 8 cu un grup de 3 cifre binare, conform
tabelului 4.2.

Conversia rapidă din baza 8 în baza 2

Tabelul 4.2
Cifra din baza 8 Grupul de cifre în baza 2
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

Folosind datele din tabelul anterior, numărul (734)8 = (111 011 100)2
prin conversie directă.

Exemplul 4.
Pentru a face conversia din baza 16 în baza 2 vom înlocui fiecare
cifră a numărului scris în hexazecimal cu un grup de 4 cifre binare, conform
tabelului 4.3.

Conversia rapidă din baza 16 în baza 2


Bazele numerice ale calculatoarelor
Conversia rapida din baza 16 in baza 2
Tabelul 4.3
Cifra din hexazecimal Grupul de cifre în baza 2
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

Folosind datele din tabelul anterior, numărul (5A2)16 = (0101 1010


0010)2 prin conversie directă.

4.2.3 Conversia numerelor fracţionare

Partea fracţionară se poate scrie:


(NF)b=a-1q-1 + a-2q-2 + a-3q-3 + ⋅⋅⋅
unde: a-j reprezintă cifre aparţinând sistemului de numeraţie q. Conversia
părţii fracţionare se va reduce la determinarea coeficienţilor
a-k (k=1,2,⋅⋅⋅) prin înmulţiri succesive:
(NF)b⋅q=a-1 + a-2q-1 + a-3q-2 + ⋅⋅⋅ → a-1
(NF1)b
(NF1)b⋅q=a-2 + a-3q-1 + a-4q-2 + ⋅⋅⋅ → a-2
(NF2)b
Sisteme de calcul şi operare

unde: a-1 reprezintă cifra cea mai semnificativă a părţii fracţionare. Teoretic,
algoritmul ar trebui să se încheie când partea fracţionară devine egală
cu zero, ceea ce se întâmplă într-un număr limitat de cazuri.
În practică, procedeul are un număr finit de paşi, în funcţie de
precizia aleasă. De exemplu, pentru a obţine o precizie bună, pentru fiecare
cifră zecimală trebuie calculate 4 cifre binare (în cazul conversiei din
zecimal în binar).

Exemplul 5
Fiind dat numărul (0,251)10 să se realizeze conversia în sistemele:
binar, octal şi hexazecimal.

Rezolvare.

a. Conversia în octal

0,251⋅8=2 + 0,008 → 2 (a -1)


0,008⋅8=0 + 0,064 → 0 (a -2)
0,064⋅8=0 + 0,512 → 0 (a -3)
0,512⋅8=4 + 0,096 → 4 (a -4)
0,096⋅8=0 + 0,768 → 0 (a -5)

(0,251)10=(0,20040)8

b. Conversia în hexazecimal

0,251⋅16=4 + 0,016 → 4 (a -1)


0,016⋅16=0 + 0,256 → 0 (a -2)
0,256⋅16=4 + 0,096 → 4 (a -3)

(0,251)10=(0,404)H
Bazele numerice ale calculatoarelor

c. Conversia în binar
0,251⋅2=0 + 0,502 → 0 (a -1)
0,502⋅2=1 + 0,004 → 1 (a -2)
0,004⋅2=0 + 0,008 → 0 (a -3)
0,008⋅2=0 + 0,016 → 0 (a -4)
0,016⋅2=0 + 0,032 → 0 (a -5)
0,032⋅2=0 + 0,064 → 0 (a -6)
0,064⋅2=0 + 0,128 → 0 (a -7)
0,128⋅2=0 + 0,256 → 0 (a -8)
0,256⋅2=0 + 0,512 → 0 (a -9)
0,512⋅2=1 + 0,024 → 1 (a-10)
0,024⋅2=0 + 0,048 → 0 (a-11)
0,048⋅2=0 + 0,096 → 0 (a-12)
0,096⋅2=0 + 0,192 → 0 (a-13)
0,192⋅2=0 + 0,382 → 0 (a-14)
0,382⋅2=0 + 0,762 → 0 (a-15)
0,762⋅2=1 + 0,524 → 1 (a-16)
0,524⋅2=1 + 0,048 → 1 (a-17)
(0,251)10=(0,01000000010000011)2

Calculul simplificat pentru conversia în:


binar octal hexazecimal
0 251 0 251 0 251
0 502 2 008 4 016
1 004 0 064 0 256
0 008 0 512 4 096
0 016 4 096
0 032 0 768
0 064
0 128
0 256
0 512
1 024
Sisteme de calcul şi operare

Conversia în octal sau hexazecimal se realizează şi din reprezentarea


binară a numărului, prin gruparea a câte trei, respectiv patru cifre binare.
Gruparea se va face de la stânga spre dreapta (invers decât în cazul părţii
întregi).
Astfel, (0,251)10 = (0, 010 000 000 100 000 110)2 = (0, 200405)8

(0,251)10 = (0, 0100 0000 0100 0001 1000)2 = (0, 40418)H

Exemplul 6

Fie numărul (23,65)10. Să se realizeze conversia în sistemele: binar,


octal şi hexazecimal.

Rezolvare.

Conversia părţii Conversia părţii


întregi fracţionare
23 1 0 65
11 1 1 30
5 1 0 60
2 0 1 20
1 1 0 40
0 0 80
1 60
1 20
0 40

Deci: (23,65)10=(23)10 + (0,65)10=(10111)2 + (0,10100110)2

(23,65)10 = (1 0 111,1010 0110 )2 = (27,514)8 = (17,A6)H


Bazele numerice ale calculatoarelor

Exemplul 7.
Să se facă conversia din binar în zecimal a numărului (1100011)2.

(1100011)2=1⋅26 + 1⋅25 + 0⋅24 + 0⋅23 + 0⋅22 + 1⋅21 + +1⋅20 = (99)10

Exemplul 8.
Conversia din binar în zecimal a numărului (110,101)2

(110,101)2=1⋅22 + 1⋅21 + 0⋅20 + 1⋅2-1 + 0⋅2-2 + 1⋅2-3 = 6 + 0,5 + 0,125 =


= (6,625)10

Exemplul 9.
Conversia din octal în zecimal a numărului (235)8.

(235)8=2 ⋅ 82 + 3⋅81 + 5⋅80=128 + 24 + 5=(157)10

Exemplul 10.
Conversia din hexazecimal în zecimal a numărului (23F)H.

(23F)H=2⋅162 + 3⋅161 + 15⋅160=512 + 48 + 15=(575)10

4.3 Reprezentarea binară a informaţiei numerice

Informaţia numerică se reprezintă în calculatoare într-unul dintre


formatele:
¾ în virgulă fixă (VF);
¾ în virgulă mobilă (VM);
¾ prin coduri numerice (cel mai utilizat este codul 8421).
Sisteme de calcul şi operare

4.3.1 Reprezentarea în virgulă fixă (VF)

a) Reprezentarea prin mărime şi semn (Cod direct - CD).

Un număr reprezentat prin mărime şi semn se poate scrie conform


relaţiei:
CD n-1
N = a n ⋅ 2n + ∑ a i ⋅ 2i
i= − m

⎧0 dacã N ≥ 0
an = ⎨
⎩ 1 dacã N p 0

an este bit de semn, iar ai ∈ {0,1} pentru i = − m, (n − 1) şi au fost obţinute


în urma conversiei numărului (N) în sistemul de numeraţie binar. Macheta
de reprezentare a numărului N este:

Observaţie. S-a considerat că partea întreagă se reprezintă prin n cifre


binare, iar partea fracţionară prin m cifre binare:
ƒ dacă n = 0 → se obţine reprezentarea numerelor subunitare;
ƒ dacă m = 0 → se obţine reprezentarea numerelor întregi.
Bazele numerice ale calculatoarelor

Exemplu.
Să se reprezinte în cod direct (pe 16 biţi) numărul (27)10, respectiv
numărul -(27)10.

Rezolvare.
CD
(27 )10 = (11011 )2 - -- f (27 )10 = (0000000000011011) 2

b semn
CD
- (27 )10 = (1000000000011011) 2

b) Reprezentarea prin complement faţă de 1 ( cod invers - CI)


Un număr reprezentat în cod invers se poate scrie:

⎧ n-1
⎪ 0 ⋅ 2 + ∑ ai ⋅ 2i
n dacã N ≥ 0
CI ⎪
i=- m
N=⎨
n-1

⎪1 ⋅ 2 + ∑ ai ⋅ 2
n i
dacã N p 0
⎩ i=- m

a i = 1 − a i pentru i = − m, (n − 1) iar ai reprezintă cifrele binare ale


numărului ⏐N⏐.

Observaţie.
Reprezentarea prin complement faţă de 1 se obţine astfel:

1. Fie calculând:
CI
N = 2 n+ 1 -| N |CD - 2- m

⏐N⏐CD este reprezentarea în cod direct a valorii absolute a numărului N.


Sisteme de calcul şi operare

2. Fie prin inversarea cifrelor binare (inclusiv cifra de semn) din


reprezentarea în cod direct a numărului în valoare absolută.

Exemplu.
Să se reprezinte în cod invers numerele (14)10 şi -(14)10
(reprezentarea pe un octet).

Rezolvare.
* Numerele pozitive se reprezintă în CI la fel ca şi în CD.

CD, CI
(14 )10 = (1110 ) 2 (14 )10 = ( 0000 1110 )


semn

CI pentru -(14)10 se poate calcula în două variante:


1.

CI 7
N = 28 - ∑ ai ⋅ 2i - 20
i=0

ai ( i = 1,6 ) reprezintă cifrele binare ale numărului (14)10, iar a7="0" este
cifra de semn. Calculând:

1 0000 0000 -
0000 1110
CI

Aşadar:
- (14) = (1111 0001 )2
1111 0010 -
1 ↑ semn

1111 0001
Bazele numerice ale calculatoarelor

2. Acelaşi rezultat se obţinea dacă se pornea de la reprezentarea în


CD a numărului în valoare absolută, adică (14)10, şi se inversau toate cifrele
binare.

CD
(14 )10 = (0000 1110 ) 2

CI
- (14 )10 = (1111 0001 ) 2

c. Reprezentarea prin complement faţă de 2 (cod complementar - CC)


Forma de scriere în cod complementar este:

⎧ n-1
⎪0 ⋅ 2n + ∑ ai 2i pentru N ≥ 0
CC ⎪
i= − m
N =⎨
n-1

⎪ 1⋅2 + ∑ a i 2 pentru N p 0
n ~ i
⎩ i= − m
unde:
n-1 n-1
∑ ~a 2i =
i ∑ ai ⋅ 2i + 2-m
i= − m i= − m

şi a i = 1 − a i iar ai (pentru i=n-1, n-2,...,0,...,-m) reprezintă cifrele binare


ale numărului | N|.

Codul complementar al unui număr se poate obţine astfel:

1. Fie calculând:
CC
N = 2n +1 - | N|CD

| N| are aceeaşi semnificaţie


Sisteme de calcul şi operare

ca la reprezentarea în CI;
2. Fie adunând un 1 la CCMPS a reprezentării numărului în CI;
3. Dacă se consideră reprezentarea în CD a numărului în valoare
absolută, pentru obţinerea codului complementar, începând de la CCMPS -
se lasă neschimbate toate cifrele de zero, inclusiv prima cifră binară a cărei
valoare este 1; apoi toate celelalte cifre binare se vor inversa, inclusiv cifra
de semn.

Exemplu.
Să se reprezinte în CC numerele 14 şi -14 (pe un octet).

Rezolvare.
CD,CI,CC
14 = (0000 1110 )2

semn

Pentru a calcula CC al numărului -14 vom folosi cele trei metode.

1.
CC 7
- (14 )10 = 28 - ∑ a i ⋅ 2i ai (i=1÷6) fiind cifrele binare ale
i=0 numărului zecimal 14, iar a7 = 0 cifra de
semn.

1 0000 0000 - CC
0000 1110 - (14 )10 = (1111 0010 )2

1111 0010
Bazele numerice ale calculatoarelor

2.
CI
- (14) = (1111 0001 )2
1
CC
- (14) = (1111 0010 )2

3.
Cifre binare nemodificate

CD
14 = ( 000011 10)2

Cifrele binare se vor modifica 0 → 1 şi 1 → 0.

CC
− 14 = (11110010) 2

În sistemul octal sau hexazecimal vom avea:


CC
- (14) = (362 )8 = (F 2 ) H

Gruparea a trei cifre binare (respectiv patru cifre binare) se face


începând de la CCMPS (pentru numerele întregi).

Observaţie.
În calculatoarele IBM-PC reprezentarea în virgulă fixă se face pentru
numerele întregi. Se utilizează formatele:

• format întreg pe cuvânt (word), având macheta:


Sisteme de calcul şi operare

• formatul scurt:

• formatul lung:

⎧ 0 dacă N ≥ 0

unde S este bitul de semn şi S = ⎨
⎪ 1 dacă N < 0

iar Ii (i=0÷14|30|62) sunt cifrele reprezentării binare a numărului. Dacă N<0


(număr negativ) se utilizează reprezentarea prin complement faţă de 2 (cod
complementar).
În tabelul 4.4 sunt prezentate formatul, precizia şi domeniul de valori
ale datelor reprezentate în virgulă fixă pentru Intel.

Lungimea, precizia şi domeniul de valori


ale datelor reprezentate în virgulă fixă la Intel

Tabelul 4.4

Domeniul de Domeniul de valori


Tipul Lungime Precizie
valori (binar) (zecimal)
Format 16 15 -215 – 215-1 -32768 ÷ 32767
word

Format 32 31 -231 – 231-1 -2.14*109 ÷ 2.14*109


scurt

Format 64 63 -263 – 263-1 -9.22*1018 ÷ 9.22*1018


lung
Bazele numerice ale calculatoarelor

Există o serie largă de aplicaţii ce necesită numere care nu sunt


întregi. Există, de asemenea, mai multe modalităţi de reprezentare a
numerelor reale fracţionare.
Una dintre modalităţi este virgula fixă, în care folosim aritmetica
numerelor întregi şi ne imaginăm virgula undeva în altă parte decât la
dreapta bitului CMPS.
Adunarea a două numere astfel reprezentate poate fi făcută în acelaşi
mod ca şi o adunare întreagă, în timp ce înmulţirea necesită o deplasare
de biţi.

De-a lungul anilor au fost propuse şi alte reprezentări ce utilizau fie


stocarea logaritmului numerelor şi executarea unei înmulţiri prin adunarea
logaritmilor, fie foloseau o pereche de întregi (a,b) pentru reprezentarea
fracţiei a/b.
Dintre toate aceste propuneri, una singură a avut succes pe scară
largă: reprezentarea în virgulă mobilă, prezentată în continuare.

4.3.2 Reprezentarea în virgulă mobilă

În cazul reprezentării numerelor în virgulă mobilă, se pleacă de la


faptul că un număr N se poate scrie sub forma: N=±(f)b*bE, unde:

ƒ b – reprezintă baza sistemului de numeraţie utilizat (mai frecvent


se utilizează baza 2 sau 16);
ƒ E – exponentul real;
ƒ f – partea fracţionară a numărului.

Reprezentarea în calculator, implică existenţa a trei câmpuri, acestea


fiind:
ƒ bitul de semn:

⎧ 0 dacă N ≥ 0
⎪⎪
S= ⎨

⎪⎩ 1 dacă N < 0

La unele calculatoare reprezentarea numerelor reale pozitive diferă


de reprezentarea numerelor negative numai prin bitul de semn.
Sisteme de calcul şi operare

ƒ Exponentul (cunoscut şi sub denumirea de caracteristică), are o


valoare determinată prin relaţia:

EXP = exponent real + constantă în exces

Constanta în exces se stabileşte în funcţie de format şi de calculator


şi are ca scop eliminarea unei zone în care să fie specificat semnul
corespunzător exponentului real. Se pot reprezenta în acest mod şi numere
negative folosind acelaşi tip de reprezentare.
ƒ Fracţia (sau mantisa). Numărul de cifre binare corespunzătoare
acestei zone variază, de asemenea, în funcţie de calculator şi
formatul utilizat. De regulă, fracţia trebuie să fie normalizată,
respectând relaţia:

1
≤ (f ) b < 1
b

Pentru reprezentarea în virgulă mobilă a unui număr real N, într-un


calculator din familia IBM-PC se consideră:

N=±2E (f)2

1≤(f)2<2 iar (f)2=I0f1f2...fn (I0 = 1 iar valoarea lui n depinde de


formatul ales).

De regulă se utilizează următoarele formate:

1) Formatul real binar

simplă precizie, având macheta:


Bazele numerice ale calculatoarelor

dublă precizie:

S este bit de semn (S=0 dacă N≥0 şi S=1 dacă N<0);


fn - cifrele binare ale fracţiei normalizate;
Ei - cifrele binare ale zonei de exponent;
EXP=E + (81)H.

Dacă zona exponent este egală cu zero, numărul zecimal este egal cu
zero. Dacă zona exponent este diferită de zero, atunci numărul zecimal va fi
determinat astfel:
< N >=< S >∗ ( 0.1 < fractie > )2 * 2< EXP> − (80)h

2) Formatul real sau formatul IEEE (Institute of Electrical and


Electronics Engineers) 754, apărut în anul 1985:
simplă precizie (format scurt), având macheta:

dublă precizie (format lung), cu macheta:

unde:
S - bit de semn (S=0 dacă N≥0 şi S=1 dacă N<0);
fi - cifrele binare ale zonei exponent (EXCES=127 sau 1023);

EXP = E + 127 [(7F)H] - pentru format scurt;


EXP = E + 1023 [(3FF)H] - pentru format lung.
Sisteme de calcul şi operare

format temporar (sau real extins), cu macheta:

unde:
S - bit de semn;
I0 - bitul părţii întregii, ce se memorează în formatul temporar,
implicit în formatul scurt şi lung;
fi - cifrele binare ale fracţiei;
Ei - cifrele binare ale zonei exponent,
EXP = E + 16383 [(3FFF)H]
Dacă exponentul este egal cu zero, atunci numărul este egal cu zero.
Dacă exponentul nu este egal cu zero, numărul zecimal se va calcula după
relaţia:

<N>=<S>*(1.<fracţie>)2*2<EXP>-EXCES

Exemplu.
Să se reprezinte în virgulă mobilă (în format binar cât şi în format
real) simplă precizie numerele: N1 = 1 şi N2 = -1.

Rezolvare.
N1 = 1⋅20 ; N2 = -1⋅20

a) Format binar

VM
N1 = (8100 0000 ) H
Bazele numerice ale calculatoarelor

VM
N2 = (8180 0000 ) H

b) Format real

N1=(3F800000)H
N2=(BF800000)H

Exemplu
Fie N1 = (8561 0000)H - reprezentarea în virgulă mobilă simplă
precizie format binar. Să se determine numărul din zecimal.

Rezolvare.
N1=25⋅(0,1110000100...0)2=25x(2-1+2-2+2-3+2-8) = 24+23+22+2-3=28,125

4.3.3 Numere şi valori speciale

În cadrul reprezentării valorilor numerice pentru microprocesorul


Intel, există o serie de numere şi valori ce au o reprezentare specială,
prezentate în continuare. Există astfel:
9 Zerouri cu semn. În acest sens, valoarea 0 poate fi reprezentată
drept +0 sau -0 în funcţie de bitul de semn. Ambele reprezentări
sunt egale ca valoare. Semnul unui rezultat cu valoare 0 depinde
de operaţia efectuată şi de modalitatea de rotunjire.
9 Numere finite normalizate si denormalizate.
9 +∞, -∞ reprezintă valoarea maximă pozitivă, respectiv valoarea
minimă negativă pentru numere reale ce poate fi reprezentată în
virgulă mobilă. Valoarea infinit este totdeauna reprezentată de o
fracţie 0 şi de exponentul maxim permis de formatul respectiv
(de exemplu 255 în format simplă precizie). Sunt generate
excepţii atunci când utilizarea unei valori infinite ca operand
sursă conduce la o operaţie invalidă.
Sisteme de calcul şi operare

9 Valori NaN (Not a Number). Aceste valori nu fac parte din


mulţimea numerelor reale. Reprezentarea lor se face prin
intermediul unui exponent maxim acceptat de reprezentarea
respectivă şi a unei fracţii diferită de zero. În acest caz bitul de
semn este ignorat.

Numere finite normalizate şi denormalizate

În această categorie intră numerele diferite de zero finite. Numerele


normalizate reprezintă numerele ce pot fi codificate într-o formă
normalizată între 0 şi ∞. În reprezentarea de mai jos, acest grup include
toate numerele cu exponenţi modificaţi între 1 şi 254 (între –126 şi 127).
Atunci când exponentul modificat este 0, numerele mai mici pot fi
reprezentate făcând bitul părţii întregi zero. Numerele din acest domeniu se
numesc numere denormalizate. Acest lucru duce la scăderea preciziei
(numărul de biţi semnificativi ai fracţiei este redus datorită apariţiei
zerourilor de la început).
În momentul normalizării calculelor în virgulă mobilă, unitatea în
virgulă mobilă operează cu numere normalizate şi produce rezultate
normalizate. Numerele denormalizate reprezintă o condiţie de excepţie
denumită underflow. Un număr denormalizat este calculat prin intermediul
unei tehnici denumită gradual underflow. În figura 4.1 este prezentat un
exemplu al procesului de denormalizare, iar în figura 4.2 sunt înfăţişate
reprezentările valorilor +0, -0 şi a numerelor normalizate şi denormalizate
finite.

Figura 4.1 Exemplu de denormalizare


Bazele numerice ale calculatoarelor

Figura 4.2 Reprezentări pentru +0, -0, numere normalizate


şi denormalizate finite

Valori NaN (Not A Number)

Standardul IEEE defineşte două clase de valori NaN:


” QNaN (quiet NaN) –au bitul CMS setat (valoarea 1)
” SNaN (signaling NaN) – au bitul CMS zero.
Valorile QNaN se propagă prin operaţiile aritmetice fără a indica o
excepţie, pe când valorile SNaN semnalizează în general o excepţie
(operaţie invalidă) atunci când apar ca operanzi în operaţii aritmetice. În
figura 4.3 sunt înfăţişate modalităţile de reprezentare pentru valorile speciale
+∞, -∞ şi NaN. În figura 4.4 sunt prezentate operaţiile ce generează valorile
speciale despre care am discutat.

Figura 4.3 Reprezentări pentru +∞, -∞, valori NaN


Sisteme de calcul şi operare

Figura 4.4 Operaţii ce generează valori speciale

4.3.4 Reprezentarea numerelor întregi zecimale


codificate binar (BCD)

Pentru reprezentarea numerele folosind codificarea BCD (Binary


Coded Decimal) se utilizează două formate: formatul împachetat (packed
BCD) şi formatul despachetat (unpacked BCD).
Reprezentarea în BCD format împachetat conţine două cifre
zecimale pe un octet (cifra zecimală mai puţin semnificativă pe biţii 0 ÷ 3 şi
cifra zecimală mai semnificativă pe biţii 4 ÷ 7).
Datele reprezentate în BCD format despachetat conţin o cifră
zecimală pe octet - memorată în biţii 0 ÷ 3, iar biţii 4 ÷ 7 conţin informaţia
(F)H [(1111)2].
Microprocesorul acceptă datele în format BCD împachetat sau
despachetat, având următoarea machetă de reprezentare pe un octet:
Bazele numerice ale calculatoarelor

Exemplu.
Să se reprezinte în zecimal codificat binar (în BCD) numerele
zecimale N1=9450 şi N2=78431.
Rezolvare.
N1=(1001 0100 0101 0000)2 - format împachetat
N2=(0111 1000 0100 0011 0001)2 - format împachetat
N1=(F9F4F5F0)H - format despachetat
N2=(F7F8F4F3F1)H - format despachetat
Pentru reprezentarea numerelor nu s-a impus o anumită lungime a
secvenţelor şi nu s-a ţinut cont de semnul numărului.
Pentru calculatoarele compatibile IBM-PC coprocesorul matematic
memorează numerele întregi zecimale pe zece octeţi - în format împachetat.
În acest caz macheta de reprezentare este:

unde:
S - bit de semn ( 0 pentru numere pozitive, 1 pentru numere negative);
Di - cifră zecimală (două cifre per octet);
X - biţi nefolosiţi.
Numerele negative se deosebesc de cele pozitive prin bitul de semn.

4.4 Operaţii aritmetice în sistemul binar

4.4.1 Adunarea în binar

Tabela operaţiei de adunare în binar este:

+ 0 1
0 0 1
*
1 1 10
*
1 se transportă la rangul următor
Sisteme de calcul şi operare

Exemplu.
Să se însumeze în binar (00010101)2 cu (10010111)2. Vom avea:

(00010101)2 + (21)10 +
(10010111)2 ⇔ (151)10

(10101100)2 (172)10

4.4.2 Scăderea în binar

Tabela operaţiei de scădere în binar este:

Descăzut
- 0 1
Scăzător 0 0 1
*
1 1 0

*
Rezultat datorită împrumutului din rangul superior

Exemplu.
Să se scadă în binar:

(11011)2 - (27)10
(01111)2 ⇔ (15)10

(01100)2 (12)10

Observaţie. În calculator operaţia de scădere se reduce la o operaţie de


adunare prin utilizarea codului invers sau a codului complementar.
Bazele numerice ale calculatoarelor

4.4.3 Înmulţirea în binar

Tabela înmulţirii în binar este:

• 0 1
0 0 0
1 0 1

Exemplu.
Să se efectueze înmulţirea: (1101)2 x (1001)2.

11012•
10012

11012
00002
00002
11012
11101012

Deci (1101)2 x (1001)2 = (1110101)2

(13)10 x (9)10=(117)10
Sisteme de calcul şi operare

4.4.4 Împărţirea în binar

Cea mai simplă metodă este scăderea repetată a împărţitorului din


deîmpărţit.

Exemplu.
Să se efectueze împărţirea: (1010001)2:(1001)2=(1001)2.

În acest caz împărţirea s-a efectuat fără rest: (81)10 :(9)10=(9)10.

Exemplu.
Să se efectueze împărţirea: (100011)2 : (110)2= (101,110)2.

În această situaţie operaţia de împărţire poate continua, astfel încât


aproximarea rezultatului să fie cât mai bună.

Operaţiile în sistemul octal sau hexazecimal se vor efectua conform


regulilor de adunare şi înmulţire ce sunt prezentate în tabelele 4.5 ÷ 4.8.
Bazele numerice ale calculatoarelor

Adunarea în sistemul hexazecimal

Tabelul 4.5

+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 1 2 3 4 5 6 7 8 9 a B C D E F
1 1 2 3 4 5 6 7 8 9 A B C D E F 1
2 2 3 4 5 6 7 8 9 A B C D E F 10 1
3 3 4 5 6 7 8 9 A B C D E F 10 11 1
4 4 5 6 7 8 9 A B C D E F 10 11 12 1
5 5 6 7 8 9 A B C D E F 10 11 12 13 1
6 6 7 8 9 A B C D E F 10 11 12 13 14 1
7 7 8 9 A B C D E F 10 11 12 13 14 15 1
8 8 9 A B C D E F 10 11 12 13 14 15 16 1
9 9 A B C D E F 10 11 12 13 14 15 16 17 1
A A B C D E F 10 11 12 13 14 15 16 17 18 1
B B C D E F 10 11 12 13 14 15 16 17 18 19 1
C C D E F 10 11 12 13 14 15 16 17 18 19 1 1
D D E F 10 11 12 13 14 15 16 17 18 19 1 1 1
E E F 10 11 12 13 14 15 16 17 18 19 1 1 1 1
F F 10 11 12 13 14 15 16 17 18 19 1 1 1 1 1
Sisteme de calcul şi operare

Înmulţirea în sistemul hexazecimal

Tabelul 4.6

* 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 A B C D E F
2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E
3 0 1 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D
4 0 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C
5 0 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B
6 0 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A
7 0 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69
8 0 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78
9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87
A 0 A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96
B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5
C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4
D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3
E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2
F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1
Bazele numerice ale calculatoarelor

Adunarea în sistemul octal

Tabelul 4.7

+ 0 1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 10
2 2 3 4 5 6 7 10 11
3 3 4 5 6 7 10 11 12
4 4 5 6 7 10 11 12 13
5 5 6 7 10 11 12 13 14
6 6 7 10 11 12 13 14 15
7 7 10 11 12 13 14 15 16

Înmulţirea în sistemul octal

Tabelul 4.8

* 0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7
2 0 2 4 6 10 12 14 16
3 0 3 6 11 14 17 22 25
4 0 4 10 14 20 24 30 34
5 0 5 12 17 24 31 36 43
6 0 6 14 22 30 36 44 52
7 0 7 16 23 34 45 52 61
Sisteme de calcul şi operare

4.5 Operaţiile aritmetice în virgulă fixă (VF)

4.5.1 Adunarea în cod direct (CD)

Se adună mărimile numerelor, fără cifra de semn şi se dă rezultatului


semnul comun celor două numere. Fie:
CD n-1
N1 = an ⋅ 2n + ∑ ai ⋅ 2i ai ∈ {0,1}
i= − m

CD n-1
N2 = bn⋅ 2n + ∑ bi⋅2i bi ∈ {0,1}
i= − m

CD n -1
N1 + N 2 = a n ⋅ 2 +
n
∑ (a + b + t ) 2
i = −m
i i i
i

Însumarea se face începând de la bitul cel mai puţin semnificativ al


reprezentării numerelor, ţinându-se cont de transportul de la rangul anterior (ti).
Se consideră t-m=0, iar dacă va apare tn (transport de la bitul CMS al
mărimii) avem de-a face cu depăşire binară. Rezultatul operaţiei poate fi
corect când nu apare transport de la cifra cea mai semnificativă a mărimii
rezultatului şi poate fi incorect când apare transport.
Pentru simplitate, vom lucra cu numere întregi reprezentate pe un
octet, primul bit fiind bitul de semn iar următorii şapte biţi pentru mărime
(-128 < N < 127).
Bazele numerice ale calculatoarelor

Exemplu
Să se însumeze N1 cu N2, având N1=(40)10 şi N2=(60)10.

Rezolvare.

CD
N1 = (00101000 )2
CD
N2 = (00111100 )2
CD
N1 + N 2 = (01100100 )2

Verificând rezultatul o să obţinem:

N 1 +N 2 =+(1 ⋅ 2 6 +1 ⋅ 2 5 +0 ⋅ 2 4 +0 ⋅ 2 3 +1 ⋅ 2 2 +0 ⋅ 2 1 +0 ⋅ 2 0 )=(100) 10

Exemplu
Să se calculeze N1 + N2, având N1=40 şi N2=90.

Rezolvare.

CD
N1 = (00101000 )2

CD
N2 = (01011010 )2

CD
N1 + N 2 = (10000010 )2

Bitul CMS al mărimii rezultatului

Deoarece în acest caz rezultă transport de la bitul CMS, rezultatul este


incorect. (Rezultatul însumării celor două numere nu poate fi reprezentat
utilizând doar şapte cifre binare).
Sisteme de calcul şi operare

Exemplu
Să se calculeze N1+N2, având N1= -25 şi N2= -30.

Rezolvare.

CD
N1 = (1 0011001 )2

CD
N2 = (1 0011110 )2

CD
N1 + N 2 = (1 0110111 )2

Verificând:
N 1 +N 2 = -(0 ⋅ 2 6 +1 ⋅ 2 5 +1 ⋅ 2 4 +0 ⋅ 2 3 +1 ⋅ 2 2 +1 ⋅ 2 1 +1 ⋅ 2 0 )
N 1 +N 2 = -55, rezultat corect

Exemplu
Să se calculeze N1+N2, având N1= -75 şi N2= -80

Rezolvare.
CD
N1 = (11001011 )2
CD
N2 = (11010000 )2
CD
N1 + N 2 = (10011011 )2

Apare transport de la bitul CMS, rezultat incorect.


Bazele numerice ale calculatoarelor

Dacă cele două numere au semne diferite procedura de lucru este


asemănătoare celei ce urmează, când numerele sunt reprezentate în cod
invers.

4.5.2 Adunarea/scăderea în cod invers (CI)

Adunarea/scăderea numerelor cu acelaşi semn


a) Dacă ambele numere sunt pozitive, reprezentarea lor în cod invers
este identică reprezentării în cod direct.
b) Numerele sunt negative, fie N1 < 0 şi N2 < 0
(În continuare se va lucra cu numere întregi reprezentate pe un octet).

Vom nota prin ⏐N1⏐CD ,⏐N2⏐CD reprezentarea în cod direct a valorilor


absolute ale numerelor N1 şi N2.
CI
N1 = 28 - | N1 |CD - 20

CI
N2 = 2 -| N
8
|
2 CD -2 0

CI
N1 + N 2 = 28 + 28 -| N 2 |CD -| N 2 |CD - 2 0 - 2 0

Având în vedere că rezultatul trebuie să fie de forma:

CI
N1 + N 2 = 28 -(| N1|CD +| N 2 |CD ) - 2 0

apare necesar ca transportul de la cifra de semn să fie adunat la cifra cea mai
puţin semnificativă,
Sisteme de calcul şi operare

CI
Bitul CMPS
N1 + N 2 = 28 - (| N1|CD +| N 2 |CD ) - 20 + 28 - 20

Rezultat Transport de la cifra de semn

Exemplu.
Să se calculeze N1+N2, având: N1= -30 şi N2= -14.

Rezolvare

CI
N1 = ( 1110 0001 )2

CI
N 2 = ( 1111 0001 )2

CI
N1 + N 2 = (1 1101 0010 )2 +

1
CI
N1 + N 2 = (1101 0011 )2

CD
N1 + N 2 = (1010 1100 )2

Verificând: N 1 +N 2 = - (1 ⋅ 2 5 +1 ⋅ 2 3 +1 ⋅ 2 2 )=-44, rezultat corect.


Bazele numerice ale calculatoarelor

Exemplu.
Să se calculeze N1+N2, având N1= -81 şi N2= -72

Rezolvare.
CI
N1 = ( 1010 1110 )2

CI
N 2 = ( 1011 0110 )2

CI
N1 + N 2 = (1 0110 0100 )2 +
1
CI
N1 + N 2 = (0110 0101 )2 N1 + N 2 > 0

Rezultatul este eronat, deoarece cel mai mic număr întreg ce se poate
reprezenta în cod invers pe un octet este -127.

Adunarea/scăderea numerelor cu semne diferite

Fie N1>0 şi N2<0.

Reprezentarea lui N1 este aceeaşi în cod direct şi cod invers.

CI
N 2 = 28 -| N 2 |CD - 2 0

În urma operaţiei de adunare obţinem:

CI
N1 + N 2 = 28 -(| N 2 |CD -| N1|CD ) - 2 0

Rezultatul este pozitiv sau negativ, după valorile absolute ale


numerelor N1 şi N2.
Sisteme de calcul şi operare

Exemplu.
Să se calculeze N1 + N2, având N1=91 şi N2=-20.

Rezolvare.

CI
N1 = ( 0101 1011 )2

CI
N 2 = ( 1110 1011 )2

CI
N1 + N 2 = (1 0100 0110 )2 +

1
CI
N1 + N 2 = (0100 0111 )2 → rezultat corect

Exemplu.
Să se calculeze N1+N2, având N1= -91 şi N2= 20.

Rezolvare.
CI CI
N1= ( 1010 0100 ) 2 N 2 = ( 0001 0100 ) 2

CI CD
N1 + N 2 = (1011 1000 ) 2 N1 + N 2 = (1100 0111 ) 2

Şi în acest caz rezultatul este corect. Pentru verificarea rezultatului se


va ţine seama de bitul de semn:
Ö dacă acesta este "0" → reprezentarea rezultatului este acelaşi în
cod invers şi cod direct.
Ö dacă acesta este "1" → rezultatul este în cod invers şi diferă de
reprezentarea lui în cod direct.

Scăderea a două numere binare se rezumă la adunarea celor două


numere, utilizând reprezentarea în cod invers.
Fie N1>0 şi N2>0. Relaţia N1 - N2 este echivalentă cu N1 + (-N2).
Bazele numerice ale calculatoarelor

Observaţie. Adunarea în cod invers, ca şi în cod complementar, operează


asupra tuturor cifrelor binare, inclusiv asupra cifrei de semn.

4.5.3 Adunarea/scăderea în cod complementar (CC)

Adunarea /scăderea numerelor cu acelaşi semn

a) Dacă ambele numere sunt pozitive, reprezentarea lor în cod


complementar este identică reprezentării în CD.

b) Numerele sunt negative.

Fie N 1 <0 şi N 2 <0:

CC CC
N1 = 28 -| N1|CD N 2 = 28 -| N 2 |CD

Prin ⏐N1⏐CD, ⏐N2⏐CD am notat reprezentările în cod direct ale


valorilor absolute pentru numărul N1, respectiv N2. Deci:

CC
N1 + N 2 = 28 -(| N1|CD +| N 2 |CD ) + 28

Forma de reprezentare a rezultatului Transportul de la bitul


de semn

Ţinând seama de forma de reprezentare a rezultatului, apare necesar


ca transportul de la cifra de semn să se neglijeze.
Sisteme de calcul şi operare

Exemplu.

Să se calculeze: N1+N2, având N1=-14 şi N2=-72

Rezolvare.

CC CC
N1 = ( 1111 0010 )2 N 2 = ( 1011 1000 )2

CC
N1 + N 2 = (1 1010 1010 )2

Se ignoră

Pentru verificarea rezultatului se va calcula:

CD
N1 + N 2 = (11010110 )2 = - (1 ⋅ 26 + 1 ⋅ 24 + 1 ⋅ 22 + 1 ⋅ 21) = - 86

Observaţie. Dacă în urma însumării a două numere cu acelaşi semn, rezultatul


are semn contrar → acesta este eronat (valoarea rezultatului nu se poate
încadra pe numărul de biţi utilizat).

Adunarea/scăderea numerelor cu semn diferite

Fie N1>0 şi N2<0.

CC
N2 = 28 -| N 2 |CD
Prin adunare avem:
CC
N1 + N 2 = 28 -(| N 2 |CD - | N1|CD )

Dacă ⏐N1⏐ > ⏐N2⏐ rezultatul va fi pozitiv, iar pentru ⏐N1⏐ < ⏐N2⏐
rezultatul va fi negativ.
Bazele numerice ale calculatoarelor

Exemplul.
Să se calculeze N1 + N2, având N1= 33 şi N2= -23.

Rezolvare.

CC CC
N1 = ( 0010 0001 )2 N 2 = ( 1110 1001 )2
CC
N1 + N 2 = (1 0000 1010 )2

Transport care se neglijează

Verificarea: N 1 +N 2 = 1 ⋅ 2 3 +1 ⋅ 2 1 =(10) 1 0

Exemplu.
Să se calculeze N1+N2, având N1 = -33 şi N2 = 3

CC CC
N1 = ( 1101 1111 )2 N 2 = ( 0001 0111 )2

CC
N1 + N 2 = ( 1111 0110 )2

Pentru verificarea rezultatului se va ţine seama de valoarea bitului de


semn:
9 dacă acesta este "0" - rezultatul este pozitiv şi reprezentarea este
aceeaşi în CD şi CC;
9 dacă acesta este "1" - rezultatul negativ şi avem reprezentări
diferite în CD şi CC.

Verificarea rezultatului anterior:


CD
N1 + N 2 = (1000 1010 )2 _ N1 + N 2 = - (10 )10
Sisteme de calcul şi operare

4.6 Operaţii aritmetice în virgulă mobilă (VM)

a) Adunarea/scăderea

Fie numerele N1>0 şi N2>0, ce se pot scrie:

N1 = 2n1 x (0, b11 b12 b13 ... b1k )2 = 2n1 x( f 1 )2

N 2 = 2n 2 x (0, b21 b22 b23 ... b2 k )2 = 2n 2 x( f 2 )2

unde bij∈ {0,1} pentru i=1,2 şi j = 1, k , valoarea lui k depinde de numărul


de cifre binare utilizate pentru reprezentarea părţii fracţionare.

a1) n1=n2
N 1 +N 2 =2 n 1 × (f 1 +f 2 )
Dacă f1+f2 ≥ 1 sau f1-f2 < 1/2 , rezultatul se va normaliza, prin
deplasarea cu o poziţie spre stânga sau dreapta virgulei, concomitent cu
adunarea sau scăderea unei unităţi din zona exponent.

a2) n1≠n2, n1 > n2 .


Pentru a aduna/scădea cele două numere, trebuie să aibă acelaşi
exponent. Deoarece n1 > n2, putem scrie:

N 2 = 2n1x(0, 0....0 b21 b22 .... b2[k-(n1-n 2 )])2

Un număr de (n1-n2) zerouri

În continuare se va proceda ca în cazul precedent; dacă în urma


efectuării adunării/scăderii fracţia rezultat nu este normalizată se va
normaliza modificând corespunzător şi exponentul.
Bazele numerice ale calculatoarelor

b) Înmulţirea şi împărţirea
N1 = 2n1 ⋅ ( f 1 )2 N 2 = 2n 2 ⋅ ( f 2 )2

N1 * N 2 = 2n1+n 2 x ( f 1 x f 2 )2 iar

N1 / N 2 = 2n1-n 2 x ( f 1 / f 2 )2

Operaţiile de înmulţire/împărţire asupra zonelor de fracţie se


realizează prin însumări (scăderi) repetate. Dacă nu este normalizată, fracţia
rezultat se va normaliza.

4.7 Operaţii aritmetice în codul numeric 8421

4.7.1 Adunarea în 8421

Adunarea numerelor în zecimal codificat binar (8421) se face binar,


rang cu rang pe fiecare grup de patru cifre binare, cu adăugarea, eventual, a
unor corecţii.
Fie a şi b două cifre zecimale codificate binar (în 8421) care se
adună; rezultatul c = a + b poate fi:
ƒ corect, şi nu este necesar să se aplice nici o corecţie dacă:
0000< c< 1001;
ƒ incorect şi se impune corecţia, adunând 0110 în situaţiile:
1010< c< 1111 - această reprezentare nu corespunde unei cifre
în zecimal. Adunând 0110 va determina în transport la rangul
următor.
0000< c< 1001, dar a rezultat a cincea cifră binară, aceasta
fiind 1 şi reprezintă transportul pentru tetrada binară
superioară.
ccorectat = c + 0110
Sisteme de calcul şi operare

Exemplu.
Să se adune în codul numeric 8421 numerele N=883 şi M= 592.

4.7.2 Scăderea în 8421

Fie a şi b două cifre zecimale codificate binar, în codul 8421 ce se


scad astfel:
ª dacă c = a-b este un număr pozitiv, acest rezultat este corect;
ª dacă rezultatul este negativ, se realizează un împrumut de la
tetrada binară superioară (-0001)2, care va reprezenta pentru
tetrada unde este necesar împrumutul valoarea
(10000)2=16.Această configuraţie de cifre [(10000)2] se adună la
tetrada a şi din aceasta se scade tetrada b, obţinându-se un număr
pozitiv. Noului rezultat i se aplică o corecţie prin scăderea cifrei
610, adică (0110)2. Scăderea este necesară deoarece în zecimal
valoarea împrumutului este 10, iar prin reprezentarea într-un cod
cu 4 cifre binare împrumutul este 16.
Bazele numerice ale calculatoarelor

Exemplu
Să se scadă, în codul 8421, din numărul N= 1032, numărul M = 974.
5
BAZELE LOGICE
ALE CALCULATOARELOR

5.1 Definirea algebrei logice

Algebra booleană (algebra logicii) este o mulţime B ≠ {∅} (B = B2 =


= {0,1}) înzestrată cu două legi de compoziţie:
⎧ ∩ (*) produs logic (ŞI)

⎩ ∪ (+) sumă logică (SAU)
şi o aplicaţie a mulţimii B în ea însăşi notată cu ¯ numită complement (NU).

Sunt respectate proprietăţile:

a) idempotenţă: x ∩ x = x; x ∪ x = x

b) comutativitate: x ∩ y = y ∩ x; x ∪ y = y ∪ x

c) asociativitate: (x ∩ y) ∩ z = x ∩ (y ∩ z)
(x ∪ y) ∪ z = x ∪ (y ∪ z)

d) absorbţie: x ∩ (x ∪ y) =x ; x ∪ (x ∩ y) = x

e) distributivitate: x ∩ (y ∪ z) = (x ∩ y) ∪ (x ∩ z)
x ∪ (y ∩ z) = (x ∪ y) ∩ (x ∪ z)
Sisteme de calcul şi operare

f) ∃ un element 0, numit prim element, astfel încât:


x ∩ 0 = 0; x ∪ 0 = x
g) ∃ un element 1, numit ultim element, astfel ca:
x ∩ 1 = x; x ∪ 1 = 1

h) legea dublei negaţii: x =x


i) principiul contradicţiei: x∩ x =0
j) principiul terţului exclus: x ∪ x = 1
k) legile lui de Morgan: x ∩ y = x ∪ y ;x ∪ y = x ∩ y

Prin aplicarea de un număr finit de ori a operaţiilor ∩, ∪,⎯ unor


elemente determinate sau nedeterminate ale unei algebre booleene se obţine o
expresie booleană (logică).

Considerând expresia booleană E (x1, x2,..., xn), se numeşte valoare a


expresiei booleene pentru setul de valori i1, i2,..., in, valoarea obţinută prin
înlocuirea în expresia E a variabilelor x1, x2,..., xn cu valorile i1, i2,...,in şi
efectuarea operaţiilor indicate.

Exemplul 1.
E (x1, x2, x3) = x1 ∪ x2 ∪ (x2 ∩ x3 )

E (0 , 0 , 1 ) = 0 ∪ 0 ∪ (0 ∩ 1) = 0
Spunem că expresia booleană E1 (x1, x2,..., xn) este echivalentă cu
E2 (x1, x2,..., xn) dacă E1 (i1j, i2j,..., inj) ≡ E2 (i1j, i2j,...,inj) pentru ∀ j = 1, 2 n .

Exemplul 2.
E1 (x1, x2 ,x3) = x2 ∪ ( x1 ∩ x2 ∩ x3)

E2 (x1, x2, x3) = ( x1 ∩ x2 ) ∪ ( x1 ∩ x3) ∪ ( x1 ∩ x2)


E1 (0,0,0) = E2 (0,0,0)
E1 (0,0,1) = E2 (0,0,1)

E1 (1,1,1) = E2 (1,1,1)
Bazele logice ale calculatoarelor

Funcţia logică (booleană) de n variabile, f(x 1 ,x 2 ,..,x n ) , este o funcţie


definită pe produsul cartezian B 2 X B 2 X...X B 2 cu valori în mulţimea B2:

f : B 2 X B 2 X...X B 2 → B 2

astfel încât f (i1j, i2j,..., inj) ∈ {0,1} ∀ j = 1 , 2 n (Unele funcţii logice pot fi
incomplet definite).

Exemplul 3.
Fie f: B2 x B2 x B2 → B2 , astfel:
f(0,0,0) = 0, f(0,0,1) = 0, f(0,1,0) =1,
f(0,1,1) = 1, f(1,0,0) = 0, f(1,0,1) = 1, f(1,1,1) = 0.
În figura 5.1 avem reprezentarea grafică a acestei funcţii.

Figura 5.1 Reprezentarea grafică a unei funcţii


Sisteme de calcul şi operare

5.2 Modalităţi de reprezentare a funcţiilor logice

Funcţiile booleene se pot reprezenta fie sub forma unor tabele de


adevăr, fie sub forma expresiilor booleene. Cele două forme de reprezentare
sunt echivalente. Oricărei funcţii logice i se poate asocia un tabel de adevăr
sau expresia logică corespunzătoare. Considerăm în continuare câteva
exemple:
Exemplul 4.
Reprezentarea sub formă de tabel de adevăr a funcţiilor : NU, SAU,
ŞI, SAU-NU, ŞI-NU.

x y NU SAU ŞI SAU-NU ŞI-NU

f1(x)= x f2(x,y)= x ∪ y f3(x,y)= x ∩ y f4(x,y)= x ∪ y f5(x,y)= x ∩ y

0 0 1 0 0 1 1

0 1 1 1 0 0 1

1 0 0 1 0 0 1

1 1 0 1 1 0 0

Exemplul 5.

Fie funcţia logică următoare:


f ( x, y ) = x y ∪ xy
Tabelul de adevăr asociat este:
Bazele logice ale calculatoarelor

Exemplul 6.
Reciproc, dacă avem tabelul de adevăr al funcţiei, putem determina
expresia funcţiei. Din tabelul de adevăr, funcţia f are valoarea 1 pentru
următoarele valori ale lui x şi y:
Considerăm acum valorile lui x şi y pentru care funcţia f este zero:

⎧x = 0, y = 1

⎩x = 1, y = 0
sau
⎧⎪x = 0, y = 0

⎪⎩x = 0, y = 0
f 2 ( x, y) = ( x ∪ y)(x ∪ y)

Verificăm faptul că cele două funcţii sunt egale:

f 2 (x, y) = (x ∪ y)(x ∪ y) = x • x ∪ x • y ∪ y • x ∪ y • y =

= x • y ∪ x • y = f1(x, y)

⎧x = y = 0

⎩x = y = 1
sau
⎧ x = 1, y = 1

⎩x = y = 1
f1 ( x, y ) = x • y ∪ x • y
Sisteme de calcul şi operare

5.3 Formele canonice ale funcţiilor logice

5.3.1 Produse elementare şi mintermeni

Se numeşte produs elementar un produs de variabile booleene sau


complemente ale acestora, în care aceeaşi variabilă apare o singură dată.
Un mintermen în raport cu variabilele logice x1, x2,..., xn este produsul
elementar în care apar, fie simple, fie complementare, toate variabilele
x1, x2,..., xn. Un mintermen se va scrie în aşa fel încât pentru un set de valori
ale variabilelor booleene să ia valoarea logică 1.

Forma canonică disjunctivă (FCD) pentru o funcţie de n variabile


booleene se poate scrie astfel:

2n
f( x1 , x 2 , ... x n ) = ∪ f(i1 k , i 2 k ,..., i nk ) ⋅ x1i1k ⋅ x 2i2 k ⋅ ... x n ink
k =1

⎧⎪ x j dacă i jk = 1
având x ji jk = ⎨
⎪⎩ x j dacă i jk = 0
iar f(i1 k , i 2 k , ..., i nk ) = 1 pentru ∀ k = 1, 2n

În concluzie, forma canonică disjunctivă a unei funcţii logice este o


sumă a mintermenilor pentru care funcţia are valoarea logică 1.

5.3.2 Sume elementare şi maxtermeni

Se numeşte sumă elementară o sumă de variabile booleene sau


complemente ale acestora, fără ca aceeaşi variabilă să apară de mai multe ori.
Un maxtermen în raport cu variabilele logice x 1 ,x 2 ,.., x n este o sumă
elementară, în care apar, fie simple, fie complementare, toate variabilele
x1, x2, ..., xn. Un maxtermen se va scrie în aşa fel încât pentru un set de valori
ale variabilelor logice să ia valoarea logică 0.
Bazele logice ale calculatoarelor

Forma canonică conjunctivă (FCC) pentru o funcţie de n variabile se


poate scrie:
n
2
f( x1 , x 2 , ... , x n ) = ∩ [f( i1 k , i 2 k , ... , i nk ) + x1i1 k + x 2 i 2 k + ... + x n i nk ]
k =1

⎧x j dacă i jk = 0

având x ijjk = ⎨

⎩ x j dacă i jk = 1
f(i1 k , i 2 k , ...i nk ) = 0 pentru ∀ k = 1, 2n

Aşadar, forma canonică conjunctivă reprezintă produsul


maxtermenilor pentru care funcţia booleană are valoarea logică 0.

Exemplul 7.

Fie funcţia f (x,y,z) o funcţie booleană care are valoarea logică "1",
dacă cel puţin două dintre argumentele sale sunt egale cu "0". Să se scrie FCD
şi FCC pentru funcţia f(x,y,z).

Rezolvare.
Alcătuim tabelul de valori (tabelul 5.1), în care vom trece mintermenii
(mi) şi maxtermenii (Mi). Fiind o funcţie de trei variabile vom avea un număr
de 8 seturi de valori (23).
Sisteme de calcul şi operare

Tabel de adevăr pentru funcţia f(x,y,z)

Tabelul 5.1

x y z f(x,y,z) mi Mi
0 0 0 1 M0= x + y + z
m0= x y z
0 0 1 1
m1= x yz M1= x + y+ z
0 1 0 1
m2= x yz M2= x + y+ z
0 1 1 0
m3= x yz M3= x + y+ z
1 0 0 1
m4= x y z M4= x + y+z
1 0 1 0
m5= x yz M5= x + y+z
1 1 0 0
m6= x y z M6= x + y+ z
1 1 1 0 m7= x y z M7= x + y+ z

Forma canonică disjunctivă a funcţiei se va determina aplicând


relaţia:

f 1 (x,y,z) = f(0,0,0)⋅m 0 + f(0,0,1)⋅m 1 + f(0,1,0)⋅m 2 +


+ f(0,1,1)⋅m 3 + f(1,0,0)⋅m 4 + f(1,0,1)⋅m 5 +
+ f(1,1,0)⋅m 6 + f (1,1,1) m 7

Folosind proprietăţile algebrei logice obţinem:

f1 (x,y,z) = m0 + m1 + m2 + m4 =
x y z + x y z+ x y z + x y z
Bazele logice ale calculatoarelor

Forma canonică conjunctivă a funcţiei se determină aplicând relaţia:

f2 (x,y,z) = [f (0,0,0) + M0] [f (0,0,1) + M1] [f (0,1,0) +


+ M2] [ f(0,1,1) + M3] [f (1,0,0) + M4] [f (1,0,1) + M5]
[f (1,1,0) + M6] [f (1,1,1) + M7]

Ţinând cont de valorile funcţiei pentru diferitele seturi de valori şi


utilizând proprietăţile algebrei booleene, se va obţine:

f 2 (x,y,z) = M 3 ⋅ M 5 ⋅ M 6 ⋅ M 7 =
(x + y + z)(x + y + z)(x + y + z)(x + y + z)

Forma canonică disjunctivă a funcţiei este echivalentă cu forma


canonică conjunctivă, deci: f 1 (x,y,z) ≡ f 2 (x,y,z).

5.3.3 Proprietăţile mintermenilor şi maxtermenilor

Avem o serie de proprietăţi pentru mintermeni şi maxtermeni:

P1. Produsul logic între doi mintermeni mi şi mj (i # j) ai unei funcţii


booleene de n variabile este egal cu 0:

mi ⋅ m j = 0, ∀i ≠ j

P2. Suma logică dintre doi termeni Mi şi Mj (i # j) ai unei funcţii


booleene de n variabile este egal cu 1:

M i ∪ M j = 1, ∀i ≠ j

P3. O funcţie booleană de n variabile poate fi reprezentată printr-o


sumă logică de mintermeni mi (respectiv un produs logic de maxtermeni Mi)
sub forma:

2 n −1
f ( x1 ,K , xn ) = U (α
i =0
i ⋅ mi )
2 n −1
f ( x1 ,K, xn ) = I (α i ∪ M i ), α i ∈ {0,1} - numere caracteristice
i =0
Sisteme de calcul şi operare

P4. Complementul unei funcţii booleene de n variabile scrise în FCC


poate fi exprimat în mod unic prin relaţia:

2 n −1
f ( x1 ,K, xn ) = U (α i ⋅ mi )
i =0

iar complementul unei funcţii booleene de n variabile scrise în FCD poate fi


exprimat unic astfel:

2 n −1
f ( x1 ,K , xn ) = I (α i ∪ M i ),α i ∈ {0,1}
i =0

P5. Dacă o funcţie booleană de n variabile este scrisă în FCD şi


conţine 2n termeni distincţi de n variabile atunci ea este egală cu 1.
În aceleaşi condiţii, dacă funcţia este scrisă în FCC, atunci ea este
egală cu 0.

2 n −1
f ( x1 , K, xn ) = Um i = 1 (FCD)
i =0
2 n −1
f ( x1 ,K, xn ) = IM i = 0 (FCC)
i =0

P6. Orice mintermen mi al unei funcţii booleene de n variabile scrise


în FCD este egal cu produsul logic a 2n-1 termeni Mj, respectiv orice
maxtermen Mi al unei funcţii booleene de n variabile scrisă în FCC este egal
cu suma logică a 2 n -1 termeni mj:

mi = I M j , j = 0 K 2 n − 1
j ≠i

M i = U m j , j = 0K 2n − 1
j ≠i
Bazele logice ale calculatoarelor

5.4 Existenţa şi unicitatea funcţiilor logice

Forma canonică disjunctivă, respectiv conjunctivă a unei funcţii logice


este unică. Forma canonică disjunctivă (respectiv conjunctivă) a unei funcţii
logice se numeşte şi forma normală disjunctivă (respectiv conjunctivă)
perfectă.
Forma normală disjunctivă a unei expresii logice este o sumă de
produse elementare egală cu expresia dată. Forma normală conjunctivă a unei
expresii logice este un produs de sume elementare egal cu expresia dată.
Forma normală disjunctivă (respectiv conjunctivă) a unei funcţii nu este
unică.
Vom considera în continuare cele două forme canonice atât pentru
funcţia de o singură variabilă cât şi pentru funcţia de două variabile.

Funcţia booleană de o singură variabilă

Fie f : B 2 →B 2 o funcţie booleană de o singură variabilă iar a şi b


două constante booleene. Forma canonică disjunctivă este:

f ( x) = ax ∪ b x

Am obţinut a = f(1) şi b = f(0), valori unic determinate.


Înlocuim x = 1, x = 0 în relatia lui f(x) :
⎧⎪ f (1) = a • 1 ∪ b • 1 = a • 1 ∪ b • 0 = a ∪ 0 = a

⎪⎩ f (0) = a • 0 ∪ b • 0 = a • 0 ∪ b • 1 = 0 ∪ b = b
FCD : f ( x) = f (1) • x ∪ f (0) • x

Pentru demonstrarea existenţei (în forma canonică disjunctivă), vom


înlocui x pe rând cu valorile 0 şi 1 în relaţia anterioară:
⎧⎪ f (1) = f (1) • 1 ∪ f (0) • 1 = f (1) • 1 ∪ f (0) • 0 = f (1)

⎪⎩ f (0) = f (1) • 0 ∪ f (0) • 0 = f (1) • 0 ∪ f (0) • 1 = f (0)
Sisteme de calcul şi operare

Pentru forma canonică conjunctivă avem:

f ( x ) = (a ∪ x )(b ∪ x ) - forma canonică conjunctivă

Înlocuim x = 1, x = 0 în relatia lui f(x) :

⎧f (1) = (a ∪1) • (b ∪1) = (a ∪1) • (b ∪ 0) = 1 • b = b




⎪⎩f (0) = (a ∪ 0) • (b ∪ 0) = (a ∪ 0) • (b ∪1) = a •1 = a

FCC : f ( x ) = (f (0) ∪ x ) • (f (1) ∪ x )

Am obţinut în acest caz: a = f(0) şi b = f(1), valori unic determinate.

Pentru demonstrarea existenţei (în forma canonică conjunctivă), vom


înlocui x pe rând cu valorile 0 şi 1 în relaţia anterioară:

⎧⎪ f (1) = ( f (0) ∪ 1) • ( f (1) ∪ 1) = ( f (0) ∪ 1)( f (1) ∪ 0) = 1 • f (1) = f (1)



⎪⎩ f (0) = ( f (0) ∪ 0) • ( f (1) ∪ 0) = ( f (0) ∪ 0)( f (1) ∪ 1) = f (0) • 1 = f (0)

f (x, y) = axy∪ bxy ∪ cxy ∪ dxy - forma canonică disjunctivă

Considerăm forma FCD şi înlocuim x = 1, x = 0, y = 1, y = 0 în relaţia


lui f(x,y). Vom avea:

⎧a = f (1,1)

⎪⎪b = f (1,0)

⎪c = f (0,1)

⎪⎩d = f (0,0)

FCD : f ( x, y) = f (1,1) xy ∪ f (1,0) x y ∪ f (0,1) xy ∪ f (0,0) x y


Bazele logice ale calculatoarelor

Funcţia booleană de două variabile

Fie f : B 2 × B 2 →B 2 o funcţie booleană de două variabile iar a, b, c şi


d patru constante booleene. Forma canonică disjunctivă este:

În cazul formei canonice conjunctive avem:

f (x, y) = (a ∪ x ∪ y)(b ∪ x ∪ y)(c ∪ x ∪ y)(d ∪ x ∪ y)

Înlocuim în această relaţie x=0, x=1, y=0, y=1 şi obţinem:

⎧a = f (0,0)
⎪b = f (0,1)


⎪c = f (1,0)
⎪⎩d = f (1,1)

FCC : f ( x, y ) = ( f (0,0) ∪ x ∪ y )( f (0,1) ∪ x ∪ y )( f (1,0) ∪ x ∪ y )( f (1,1) ∪ x ∪ y )

Demonstrarea existenţei în cazul formei canonice disjunctive

f (x, y) = f (1,1)xy ∪ f (1,0)x y ∪ f (0,1)xy ∪ f (0,0)x y - forma canonică


disjunctivă.

Considerăm expresia de mai sus şi înlocuim x = 1, x = 0, y = 1, y = 0 şi


obţinem:
⎧x = y = 1 ⇒ f (1,1) = f (1,1) • 1 • 1 ∪ f (1,0) • 1 • 1 ∪ f (0,1) • 1 • 1 ∪ f (0,0) • 1 • 1 = f (1,1)

⎪x = 1, y = 0 ⇒ f (1,0) = f (1,1) • 1 • 0 ∪ f (1,0) • 1 • 0 ∪ f (0,1) • 1 • 0 ∪ f (0,0) • 1 • 0 = f (1,0)


⎪x = 0, y = 1 ⇒ f (0,1) = f (1,1) • 0 • 1 ∪ f (1,0) • 0 • 1 ∪ f (0,1) • 0 • 1 ∪ f (0,0) • 0 • 1 = f (0,1)

⎪x = y = 0 ⇒ f (0,0) = f (1,1) • 0 • 0 ∪ f (1,0) • 0 • 0 ∪ f (0,1) • 0 • 0 ∪ f (0,0) • 0 • 0 = f (0,0)

Sisteme de calcul şi operare

Demonstrarea existenţei în cazul formei canonice conjunctive

FCC: f (x, y) = (f (0,0) ∪ x ∪ y)(f (0,1) ∪ x ∪ y)(f (1,0) ∪ x ∪ y)(f (1,1) ∪ x ∪ y)

Considerăm expresia de mai sus şi înlocuim x = 1, x = 0, y = 1, y = 0 şi


obţinem:
⎧x = y = 1 ⇒ f (1,1) = (f (0,0) ∪ 1 ∪ 1)(f (0,1) ∪ 1 ∪ 1)(f (1,0) ∪ 1 ∪ 1)

⎪ (f (1,1) ∪ 1 ∪ 1) = f (1,1)


⎪x = 1, y = 0 ⇒ f (1,0) = (f (0,0) ∪ 1 ∪ 0)(f (0,1) ∪ 1 ∪ 0)(f (1,0) ∪ 1 ∪ 0)

⎪⎪ (f (1,1) ∪ 1 ∪ 0) = f (1,0)

⎪x = 0, y = 1 ⇒ f (0,1) = (f (0,0) ∪ 0 ∪ 1)(f (0,1) ∪ 0 ∪ 1)(f (1,0) ∪ 0 ∪ 1)

⎪ (f (1,1) ∪ 0 ∪ 1) = f (0,1)


⎪x = y = 0 ⇒ f (0,0) = (f (0,0) ∪ 0 ∪ 0)(f (0,1) ∪ 0 ∪ 0)(f (1,0) ∪ 0 ∪ 0)

⎪⎩ (f (1,1) ∪ 0 ∪ 0) = f (0,0)

5.5 Funcţiile logice de bază

Considerăm f : B2 X B2 X...X B2 → B2. Atunci vor exista un număr de


n
22 funcţii distincte. Funcţia fiind de n variabile va putea avea 2n mintermeni
sau maxtermeni. Considerând forma canonică disjunctivă (conjunctivă), o
funcţie logică este reprezentată prin suma (produsul) a k minitermeni
(maxtermeni) distincţi.
Valoarea maximă a lui k=2n, rezultă că mulţimea funcţiilor logice
k
distincte este: N = ∑ C k j = 2k = 22 .
n

j=0
Au fost incluse: funcţia zero şi funcţia unitate.
Bazele logice ale calculatoarelor

Exemplul 8.
Mulţimea funcţiilor de două variabile este prezentată în tabelul 5.2.
Dacă f : B2 X B2 X ... X B2 → B2 este o funcţie de n variabile,
analizând tabelul 5.2, putem spune că principalele funcţii elementare sunt:

1) Funcţia NU: f10 (x1, x2,..., xn) = xi ∀ i=1, n

2) Funcţia IDENTITATE : f3 (x1, x2,..., xn) = xi ∀ i =1, n

3) Funcţia ŞI: f1 (x1, x2,..., xn) = x1 . x2 . ... . xn, această funcţie are
valoarea logică 1 dacă toate variabilele au valoarea logică 1.

4) Funcţia SAU: f7 (x1, x2, ..., xn) = x1 + x2 +...+ xn , ce are valoarea


logică 1 dacă cel puţin o variabilă are valoarea logică 1.

5) Funcţia ŞI-NU, are valoarea logică 1 dacă cel puţin o variabilă are
valoarea logică 0:

f14 ( x1 , x2 , .. , x n ) = x1 ⋅ x2 ⋅ .. ⋅ x n = x1 + x2 + .. + x n

6) Funcţia SAU-NU, are valoarea logică 0 dacă cel puţin o variabilă


are valoarea logică 1:

f 8 ( x1 , x2 , .., x n ) = x1 + x2 + .. + x n = x1 ⋅ x2 ⋅ .. ⋅ x n

7) Funcţia INHIBARE:

f 4 ( x1 , x2 , ..., x n ) = x1 ⋅ x2 ⋅ ⋅ x k-1 ⋅ x k ⋅ x k+1 ⋅ ..⋅ x n


k ∈ {1,2,...,n}.

8) Funcţia IMPLICARE:

f 11 ( x1, x2 , .. , x n ) = x1 + x2 + x k-1 + x k + x k+1 + .. + x n


k ∈ {1,2,...,n}.
Sisteme de calcul şi operare

Funcţiile logice de două variabile

Tabelul 5.2

Denumirea
x 0 0 1 1 Funcţia FCD
funcţiei
y 0 1 0 1
f0 0 0 0 0 f0=0 f0=0 ZERO
f1 0 0 0 1 f1=xy f1=m3 ŞI
f2 0 0 1 0 f2=m2 INHIBARE
f2= x y
f3 0 0 1 1 f3=x f3=m2+m3 IDENTITATE
f4 0 1 0 0 f4=m1 INHIBARE
f4= x y
f5 0 1 0 1 f5= y f5=m1+m3 IDENTITATE
f6 0 1 1 0 f6= x ⊕ y f6=m1+m2 SAU EXCLUSIV
f7 0 1 1 1 f7= x + y f7=m1+m2+m3 SAU [INCLUSIV]
f8 1 0 0 0 f8=m0 SAU-NU [NICI,NOR]
f8= x + y
f9 1 0 0 1
f9= x y + xy f9=m0+m3 COINCIDENŢĂ

f10 1 0 1 0 f10=m0+m2 NU
f10= y
f11 1 0 1 1 f11=m0+m2+m3 IMPLICARE
f11= x + y
f12 1 1 0 0 f12= x f12=m0+m1 NU
f13 1 1 0 1 f13=m0+m1+m3 IMPLICARE
f13= x + y
f14 1 1 1 0 f14=m0+m1+m2 ŞI-NU [NAND]
f14= x ⋅ y
f15 1 1 1 1 f15=1 f15=m0+m1+m2+m3 UNU

5.6 Simplificarea funcţiilor logice

5.6.1 Introducere
Simplificarea (minimizarea) funcţiilor logice are ca efect obţinerea
unor funcţii în formă elementară cu un număr minim de variabile şi
elemente constitutive. Minimizarea se poate face fie prin calcul direct
utilizând procedee algebrice elementare, fie utilizând diagrame ce conduc la
proceduri rapide de simplificare.
Bazele logice ale calculatoarelor

Exemplul 9.

Să se minimizeze funcţia:

f(x, y, z) = x y z + x y z + x y z = x y z

Rezolvare.
Se ştie că:
x y z+ x y z = x y z (proprietatea de idempotenţă).

Folosind această proprietate putem scrie:

f(x,y,z)= x y z + x y z + x y z + x y z + x y z + x y z

Folosind proprietăţile de distributivitate şi comutativitate avem:

f(x,y,z)= x y ( z + z ) + x z ( y + y ) + y z ( x + x )

Din principiul terţiului exclus: x + x = 1, în final se obţine:

f(x,y,z)= x y + x z + y z .

Diagramele de minimizare Veitch şi Karnaugh se obţin reprezentând


fiecare mintermen (maxtermen) printr-o suprafaţă dreptunghiulară
elementară.

5.6.2 Diagrame Veitch

a) Pentru o funcţie de două variabile - f(x,y):


Sisteme de calcul şi operare

b) Pentru o funcţie de trei variabile - f(x,y,z):

FCD FCC
Bazele logice ale calculatoarelor

5.6.3 Diagramele Karnaugh

a) Pentru o funcţie de două variabile - f(x,y):

b) Pentru o funcţie de trei variabile f(x,y,z):


Sisteme de calcul şi operare

Se utilizează mintermenii mi - pentru FCD şi maxtermenii


Mi - pentru FCC.
c) Pentru o funcţie de patru variabile - f(x,y,z,t):

d) Pentru o funcţie de cinci variabile - f(x,y,z,t,v) :


Bazele logice ale calculatoarelor

Algoritmul de minimizare, utilizând diagramele Veitch sau


Karnaugh este următorul:
9 Scrierea valorilor funcţiei în diagramă, scrierea după 1 (sau
după 0) dacă se foloseşte FCD (sau FCC) a funcţiei.
k
9 Gruparea a 2 (k = 0,1,2,...) suprafeţe elementare adiacente, care
au valoarea logică 1 (sau 0 dacă s-a folosit FCC), astfel încât să
formeze o suprafaţă dreptunghiulară. În suprafeţele extinse se
încearcă includerea tuturor suprafeţelor elementare care au
valoarea logică 1 (sau 0 în FCC).
9 Corespunzător unei suprafeţe extinse se obţine un produs
elementar al variabilelor ce nu-şi schimbă valoarea pe această
suprafaţă, dacă s-a folosit FCD, sau o sumă elementară a
variabilelor ce nu-şi schimbă valoarea în FCC. Dacă nu este
posibil ca o suprafaţă elementară să se alipească altei suprafeţe
elementare, pentru aceasta se va scrie expresia ce corespunde
mintermenului / maxtermenului.

În unele cazuri, în practică, anumite combinaţii ale valorilor


variabilelor de intrare nu apar niciodată în timp, funcţia numindu-se
incomplet definită. Se poate considera că aceste combinaţii sunt
nesemnificative pentru determinarea funcţiei logice de la ieşire. Se pot
folosi aceste situaţii atribuind suprafeţelor elementare respective valoarea
logică 1 sau 0 (R), în funcţie de modul în care se poate obţine o formă mai
simplă pentru funcţia logică.
Sisteme de calcul şi operare

Exemplul 10.

Să se simplifice funcţia logică f(x,y,z), dată prin tabelul de adevăr


prezentat mai jos.

FCD a funcţiei este:


f1 (x,y,z) = m2 + m3 + m6 + m7 = x y z + x y z + x y z + x y z

Diagrama Veitch este:


Bazele logice ale calculatoarelor

Diagrama Karnaugh este:

Forma simplificată a FCD este : f 1 (x,y,z) = y

FCC a funcţiei este f 2 (x,y,z)=M 0 ⋅ M 1 ⋅ M 4 ⋅ M 5

Exemplul 11.

Un ascensor transportă greutăţi cuprinse între 500 şi 10000 kg.


Sesizarea greutăţii încărcăturii ascensorului se face prin închiderea a trei
contacte a, b, c, fixate sub podeaua cabinei.
Ordinea de închidere a contactelor în funcţie de greutate este: a
pentru greutate > 0 kg; b pentru greutate ≥ 500 kg; c pentru greutate ≥
10000 kg.
Se cere să se determine funcţia de comandă a urcării ascensorului,
ştiind că acesta poate urca şi dacă este gol.

Rezolvare.
Vom atribui valoarea logică 1 pentru contact închis şi valoarea
logică 0 pentru contact deschis. Tabelul de adevăr pentru funcţia cerută este
prezentat în tabelul 5.3.
Sisteme de calcul şi operare

Tabelul de adevăr al funcţiei de comandă a urcării ascensorului

Tabelul 5.3

a b c f(a,b,c)
0 0 0 1
0 0 1 - La o funcţionare normală,
aceste combinaţii
nu pot să apară

0 1 0 -
0 1 1 -
1 0 0 0
1 0 1 -

1 1 0 1
1 1 1 0

FCD a funcţiei va fi: f(a, b, c) = a b c ∪ a b c

Pentru simplificarea acestei funcţii vom folosi diagrama Karnaugh.

În urma minimizării, funcţia este: f(a, b, c) = a ∪ b c


Bazele logice ale calculatoarelor

5.7 Circuite logice

5.7.1 Definire şi clasificare

Circuitele logice sunt componente electronice interconectate


capabile să realizeze operaţii logice. Schema logică reprezintă
implementarea unei expresii logice, folosind în acest scop o serie de
simboluri specifice fiecărei funcţii logice elementare din cadrul expresiei
respective. Se poate face o clasificare a circuitelor logice, astfel:
ƒ după nivelul de tensiune asociat cifrelor binare (figurile 5.2
şi 5.3):
ª circuite logice în logică pozitivă;
ª circuite logice în logică negativă.
ƒ după modul de funcţionare în timp:
® circuite logice combinaţionale;
® circuite logice secvenţiale.

Reprezentarea stărilor binare ale semnalelor în circuitele logice se


pot realiza prin două niveluri de tensiune sau curent. La reprezentarea prin
niveluri de tensiune, cele două valori de tensiune utilizate se numesc nivelul
pozitiv respectiv nivelul negativ.
Logica pozitivă este logica prin care valoarea logică "1" corespunde
nivelului de tensiune cel mai pozitiv, iar valoarea logică "0" corespunde
nivelului de tensiune cel mai negativ.
Logica negativă este logica pentru care valoarea logică "1" este
reprezentată prin nivelul de tensiune cel mai negativ, iar valoarea logică "0"
corespunde nivelului de tensiune cel mai pozitiv.

Logica pozitivă Logica negativă

Valoarea logică "0" "1" "0" "1"

0 +5 V +5 V 0V
Nivelul de tensiune -5 V 0V 0V -5 V
-5 V +5 V +5 V -5 V

Figura 5.2 Corelaţia dintre valoarea logică şi nivelul de tensiune


Sisteme de calcul şi operare

Figura 5.3 Reprezentarea cifrelor binare în logica pozitivă(a)/negativă (b)

5.7.2 Circuite logice combinaţionale

Circuitele logice combinaţionale (CLC) sunt acele circuite la care


starea internă nu influenţează ieşirea, deci setul mărimilor de ieşire este
complet determinat la orice moment de timp numai de setul mărimilor de
intrare curente.

Figura 5.4 Schemă logică combinaţională

Se poate scrie că: yj(t) = fj (i1(t), i2(t),… im(t)) j = 1, n


Bazele logice ale calculatoarelor

Analiza schemelor logice combinaţionale (SLC - figura 5.4) se face


cu ajutorul tabelelor de adevăr, pe baza cărora se poate urmări
corespondenţa intrare - ieşire.
Sinteza schemelor logice combinaţionale este inversa analizei - se
urmăreşte obţinerea unei scheme logice după anumite date iniţiale care
descriu funcţionarea şi care permit stabilirea tabelei de adevăr, pe baza
căreia se scriu funcţiile logice ce pot fi implementate.
Circuitele logice elementare (de bază) se încadrează în grupa
circuitelor combinaţionale şi sunt circuitele realizate pentru efectuarea de
operaţii logice elementare. Se mai numesc şi porţi logice. Circuitele logice
de bază poartă numele funcţiei logice pe care o realizează.

Dispozitivele electronice care stau la baza construcţiei circuitelor


logice sunt: diodele semiconductoare, tranzistoarele bipolare/MOS,
rezistoare, condensatoare, bobine.

Circuitul logic NU (INVERSOR)

Funcţia logică de inversare sau complementare necesită un dispozitiv


activ. Cel mai frecvent se realizează cu ajutorul unui tranzistor în montaj
emitor comun. Reprezentarea circuitului logic NU se face prin simbolul din
figura 5.5.

Figura 5.5 Simbolul unui inversor

Tabelul de adevăr al funcţionării circuitului logic NU este:

x f(x)= x
0 1

1 0
Sisteme de calcul şi operare

Circuitul logic ŞI

Tabelul de adevăr asociat circuitului logic ŞI în varianta cea mai


simplă, existând doar două intrări, este:

x1 x2 f(x1,x2)= x1 x2
0 0 0
0 1 0
1 0 0
1 1 1

Reprezentarea grafică a acestui circuit este:

Figura 5.6 Simbolul circuitului logic ŞI

Se poate realiza o poartă logică ŞI cu ajutorul diodelor, deoarece au


dimensiuni reduse, caracteristici de comutaţie bune şi lucrează cu tensiuni
mici.

Circuitul logic SAU

Tabelul de adevăr asociat circuitului logic SAU în varianta cea mai


simplă, existând doar două intrări, este:

x1 x2 f(x1,x2) = x1 + x2
0 0 0
0 1 1
1 0 1
1 1 1
Bazele logice ale calculatoarelor

Reprezentarea grafică a acestui circuit este:

Figura 5.7 Simbolul circuitului logic SAU

Circuitul logic ŞI-NU (NAND, NUMAI)

Circuitul logic ŞI-NU se poate realiza combinând un circuit ŞI cu o


poartă NU sau folosind numai tranzistoare. Tabelul de adevăr asociat
circuitului NAND este:

x1 x2 f(x1,x2)= x1 x2

0 0 1
0 1 1
1 0 1
1 1 0

Reprezentarea grafică a circuitului NAND este:

Figura 5.8 Simbolul circuitului logic ŞI-NU


Sisteme de calcul şi operare

Circuitul logic SAU-NU (NOR,NICI)

Tabelul de adevăr asociat circuitului NOR este:

x1 x2 f(x1,x2)= x1 + x2
0 0 1
0 1 0
1 0 0
1 1 0

Reprezentarea grafică a circuitului SAU-NU este:

Figura 5.9 Simbolul circuitului logic SAU-NU

Circuitul SAU-EXCLUSIV (MODULO 2)

Tabelul de adevăr al circuitului SAU-EXCLUSIV este:

x1 x2 f(x1, x2)= x1 x2
0 0 0
0 1 1
1 0 1
1 1 0
Bazele logice ale calculatoarelor

iar reprezentarea grafică a circuitului SAU-EXCLUSIV este:

Figura 5.10 Simbolul circuitului logic SAU-EXCLUSIV

Acest circuit se poate realiza şi cu porţi NU, ŞI, SAU:

Figura 5.11 Circuitul SAU EXCLUSIV realizat cu porţi de bază

Circuitul logic de INHIBARE

Dacă se va nega una din intrările unei porţi ŞI se obţine circuitul logic
de INHIBARE.

Figura 5.12 Simbolul circuitului logic INHIBARE


Sisteme de calcul şi operare

Circuitul logic de IMPLICARE

Prin negarea uneia din intrările unui circuit logic SAU se va obţine
un circuit logic de IMPLICARE.

Figura 5.13 Simbolul circuitului logic IMPLICARE

Observaţie.
Utilizând circuitul logic NAND sau NOR se pot obţine implementări
pentru funcţiile NU, ŞI (figura 5.14), SAU.

Figura 5.14 Implementarea funcţiilor logice: NU, ŞI

5.7.3 Circuite logice secvenţiale

Circuitele logice secvenţiale se caracterizează prin aceea că valoarea


funcţiei de la ieşire (y), la un moment dat t, depinde atât de valorile
variabilelor de intrare (ui unde i = 1 , n ), la momentul t cât şi de valoarea pe
care a avut-o anterior funcţia.
Putem scrie că:
y(t)=f((u1(t),u(t),...,un(t),y(t-τ))
Bazele logice ale calculatoarelor

Circuitul logic secvenţial conţine (figura 5.15):


¾ structură logică combinaţională;
¾ structură de memorare.

Figura 5.15 Circuit logic secvenţial

Aşa cum poarta (ŞI, SAU etc.) este element combinaţional de bază,
circuitul basculant bistabil este folosit ca element de bază pentru memorare
(memorie RAM de un bit).
Circuitul basculant bistabil (CBB) se caracterizează prin două stări
stabile. Trecerea dintr-o stare în alta se face prin aplicarea unei comenzi
exterioare.
Din categoria circuitelor basculante mai avem:
ƒ Circuite basculante monostabile, ce se caracterizează printr-o
singură stare stabilă. Cu ajutorul unei comenzi exterioare se
poate trece într-o altă stare, în care va rămâne un interval de timp
determinat de elementele circuitului, după care revine în starea
iniţială. Acestea sunt utilizate ca elemente de temporizare.
ƒ Circuite basculante astabile, nu prezintă nici o stare stabilă.
Trecerea dintr-o stare în alta se realizează fără o comandă
exterioară. Perioada semnalelor generate depinde de valorile
parametrilor circuitului. Acestea sunt folosite drept circuite
oscilante.
Sisteme de calcul şi operare

Circuitele basculante bistabile pot fi:


Î asincrone, în cazul în care variaţiile obţinute la ieşirea lor
urmăresc semnalele de comandă, comutarea este arbitrară;
Î sincrone, în cazul în care modificările la ieşire au loc în
raport cu semnalele de comandă, numai ca urmare a
tranzacţiei intrării de sincronizare (intrare de tact sau intrare
de ceas).

Circuite basculante bistabile asincrone

Circuitul bistabil RS a fost primul bistabil folosit pentru memorarea


datelor. Cu ajutorul a două porţi NAND conectate ca în figura 5.16 se poate
obţine un circuit bistabil având intrările S (set) şi R (reset) iar ieşirile Q şi Q .

Figura 5.16 Circuitul basculant bistabil RS (schema şi simbol)

Dacă notăm cu Q(t-τ) starea bistabilului la momentul t-τ şi cu Q(t)


starea sa ca urmare a unei tranzacţii, funcţionarea circuitului se poate urmări
în tabelul:

S(t) 0 0 0 0 1 1 1 1
R(t) 0 0 1 1 0 0 1 1
Q(t-τ) 0 1 0 1 0 1 0 1
Q(t) 0 1 0 0 1 1 ? ?
Bazele logice ale calculatoarelor

În forma canonică disjunctivă, expresia logică a funcţionării


circuitului bistabil RS este:

Q(t) = S(t) R(t) Q(t-τ) +S(t) R(t) Q(t-τ) +S(t) R(t) Q(t-τ)

Utilizând diagrama Karnaugh (figura 5.17) pentru simplificarea


funcţiei logice, se va obţine expresia:

Q(t) = S(t) + R(t) Q(t-τ)

Figura 5.17 Diagrama de minimizare

Diagrama stării semnalelor de ieşire funcţie de starea semnalelor de


intrare este reprezentată în figura 5.18.

Circuitul bistabil JK

Starea de nedeterminare din funcţionarea circuitului bistabil RS este


înlăturată prin utilizarea circuitului din figura 5.19, ce corespunde
bistabilului de tip JK.
Sisteme de calcul şi operare

Figura 5.18 Diagrama semnalelor unui circuit bistabil RS

Figura 5.19 Schema logică a circuitului bistabil JK (a) şi simbolul (b)


Bazele logice ale calculatoarelor

Tabelul de adevăr corespunzător funcţionării circuitului este:

J(t) K(t) Q(t-τ) Q(t)


0 0 0/1 0/1
0 1 0/1 0
1 0 0/1 1
1 1 0/1 1/0

Circuite basculante bistabile sincrone

Bistabilul RST

Dacă circuitul basculant bistabil asincron RS este alimentat prin


două porţi NAND conectate ca în figura 5.20, având fiecare câte două
intrări, se obţine un circuit ce are proprietatea de a-şi modifica starea în
raport cu cea a semnalelor de intrare numai dacă se aplică un semnal logic 1
pe intrarea comună T, numită intrare de sincronizare. Acest tip de bistabil
funcţionează în regim RS.

Figura 5.20 Bistabilul RST realizat cu porţi NAND


Sisteme de calcul şi operare

Bistabilul JKT

În cazul acestui tip de bistabil, circuitul logic este asemănător


bistabilului JK asincron, având în plus o intrare comună, intrarea de
sincronizare, pe NAND-urile cu intrările J şi K ca în figura 5.21.

Figura 5.21 Bistabilul JKT

5.8 Blocuri funcţionale

5.8.1 Registrul

Registrele sunt dispozitivele digitale realizate cu elemente de


memorare (CBB) şi sunt folosite în construcţia sistemelor de calcul pentru
memorarea temporară (în vederea prelucrării) a datelor reprezentate în
formă binară. Un registru conţine un număr de celule de memorare egal cu
numărul de cifre binare asociat informaţiei ce trebuie memorată. Funcţie de
modul de păstrare a informaţiei registrele pot fi:
Ö statice – când oprirea impulsurilor de comandă nu afectează
conţinutul memorat;
Ö dinamice –- când oprirea impulsurilor de comandă duce la
pierderea conţinutului memorat.
Bazele logice ale calculatoarelor

Registrele pot avea o funcţionare sincronă sau asincronă. Operaţia de


înregistrare a datelor binare într-un registru se numeşte scriere, iar operaţia
de transfer a conţinutului citire. Trecerea tuturor celulelor de memorare din
structura unui registru în starea 0 se numeşte ştergere.
Atât operaţia de citire cât şi cea de scriere se pot efectua în:
Î serie – cifrele binare fiind preluate secvenţial;
Î paralel – cifrele binare se înscriu/citesc simultan.

După modul de realizare a operaţiilor de scriere/citire avem:


& registre cu intrare/ieşire serie;
& registre cu intrare/ieşire paralelă;
& registre cu intrare serie/ieşire paralelă;
& registre cu intrare paralelă/ieşire serie.

Registrul serie (intrare/ieşire) sau registrul de deplasare

Un astfel de registru pe 4 biţi este ilustrat în figura 5.22, s-au folosit


circuite basculante care au intrările sincrone J, K şi intrările asincrone R, S.
Tranziţia semnalului de la ieşire, Qi, are loc pe frontul descrescător al
semnalului de ceas (figura 5.23).

Figura 5.22 Registru serie


Sisteme de calcul şi operare

Figura 5.23 Diagrama de semnale

Memorarea se face pe timpul a n impulsuri de ceas (n este egal cu


numărul de ranguri ale registrului). Citirea se va face tot în n impulsuri de
ceas. Ansamblul tacturilor necesare înscrierii - citirii unui număr constituie un
ciclu.
Bazele logice ale calculatoarelor

Registrul paralel (intrare/ieşire)

Pentru un astfel de registru (figura 5.24) înscrierea informaţiei se face


pe timpul unui singur impuls de ceas, la fel şi citirea.

Figura 5.24 Registru paralel

a) Exemplu de circuit integrat pentru registru 4x4 (74170)

Figura 5.25 Registru 4x4


Sisteme de calcul şi operare

Tabelul de adevăr pentru Tabelul de adevăr pentru


operaţia de scriere operaţia de citire

Intrări Intrarea Starea Ieşiri


Starea internă internă
WE Di RE Qi
L L L L L L
L H H L H H
H * Nu se schimbă H * H

b) Registru de deplasare – intrare serie/paralel, ieşire serie (74165)

Figura 5.26 Registru de deplasare

Tabelul de adevăr
Tabelul 5.4

Intrări Qi Ieşirea
Modul de
operare
PL CE CP DS D0-D7 Q0 Q1-Q6 Q7
Încărcarea L * * * L L L L
paralelă L * * * H H H H
Deplasarea H L L-H L * L Q0-Q5 Q6
serială H L L-H H * H Q0-Q5 Q6
Starea
H H * * * Q0 Q1-Q6 Q7
nemodificată
Bazele logice ale calculatoarelor

5.8.2 Numărătorul

Numărătoarele sunt utilizate pentru controlul secvenţializării


operaţiilor. Circuitul de bază al numărătorului este circuitul basculant
bistabil. Ieşirile bistabililor ce formează numărătorul sunt interpretate
împreună, ca stare a numărătorului. Conectarea a n circuite basculante
bistabile realizează un numărător binar cu N = 2n stări distincte. Pentru
realizarea unui numărător cu un factor de divizare M ≠ 2n (M fiind număr
întreg), se aplică bucle de reacţie circuitelor bistabile, prin scheme logice
combinaţionale.

Clasificarea numărătoarelor se poate face:


ƒ funcţie de modul de aplicare a impulsurilor de comandă:
numărătoare asincrone – impulsul de sincronizare acţionează
numai asupra primului CBB.
numărătoare sincrone – impulsul de tact se aplică simultan la
intrările tuturor circuitelor bistabile.

ƒ funcţie de sensul numărării:


numărătoare directe – creşte conţinutul pentru fiecare impuls
de ceas;
numărătoare inverse – scade conţinutul pentru fiecare impuls
de ceas;
numărătoare bidirecţionale (reversibile) – au o intrare pentru
numărare înainte iar alta pentru numărare înapoi.

Numărătoare asincrone directe

Aceste tipuri de numărătoare se caracterizează prin faptul că


impulsurile de tact pe intrarea de numărare comandă bascularea primei
celule, bascularea celorlalte făcându-se cu ajutorul semnalelor de pe ieşirile
etajelor precedente. În figura 5.27 a) este reprezentat un numărător asincron
direct ce conţine trei CBB. Deoarece pe intrările J, K nu apar semnale, se
consideră ca fiind pe 1 logic.
Sisteme de calcul şi operare

Stările
Impuls Valoarea
Q3 Q2 Q1
ceas zecimală
T1 0 0 0 0
T2 0 0 1 1
T3 0 1 0 2
T4 0 1 1 3
T5 1 0 0 4
T6 1 0 1 5
T7 1 1 0 6
T8 1 1 1 7
c)
Figura 5.27 Numărător asincron direct
a) schema b) diagrama de semnale c) stările
Dezavantaj: limitarea vitezei de lucru, din cauza timpului mare de
propagare.
Avantaje:
 impulsurile de numărare acţionează asupra unui singur CBB şi
deci nu este necesară o putere mare a generatorului de impulsuri;
 controlul numărării este foarte simplu, fiind suficientă oprirea
basculării primului CBB din lanţ pentru ca numărarea să fie
oprită.
Bazele logice ale calculatoarelor

Numărătorul asincron invers este reprezentat în figura 5.28.

Stările
Impuls Valoarea
Q3 Q2 Q1
ceas zecimală
T1 0 0 0 0
T2 1 1 1 7
T3 1 1 0 6
T4 1 0 1 5
T5 1 0 0 4
T6 0 1 1 3
T7 0 1 0 2
T8 0 0 1 1
c)

Figura 5.28 Numărător asincron invers


a) schema b) diagrama de semnale c) stările
Sisteme de calcul şi operare

Numărătoare sincrone directe (figura 5.29) se caracterizează prin


faptul că impulsul de tact se aplică simultan pe intrările de numărare ale
tuturor CBB din structura numărătorului.

Figura 5.29 Numărător sincron direct:


a) schema; b) diagrama de semnale

Numărătoare reversibile

Dacă este activă comanda de numărare directă (ND) numărătorul va


funcţiona ca un numărător asincron direct, iar când este activă comanda de
numărare inversă (NI) va funcţiona ca un numărător asincron invers.
Bazele logice ale calculatoarelor

Figura 5.30 Numărător reversibil

5.8.3 Elemente ale blocului aritmetic - sumatorul elementar

Dacă ai este o cifră binară a numărului A, bi cifra binară


corespunzătoare din numărul B şi Ti este cifra binară ce reprezintă
transportul de la rangul anterior, în urma însumării se va obţine Si -
rezultatul însumării şi Ti+1 - transportul pentru rangul următor.

Tabelul de adevăr va fi:

Intrări Ieşiri
ai bi Ti Si Ti+1
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Sisteme de calcul şi operare

Formele canonice disjunctive ale celor două funcţii Si şi Ti+1 sunt:

Si (ai, bi, Ti) = ai biTi + aibiTi + ai biTi + aibiTi

Ti + 1 (ai, bi, Ti) = aibiTi + ai biTi + aibiTi + aibiTi

Folosind diagramele Karnaugh pentru minimizarea funcţiilor Si şi


Ti+1, vom avea:

Figura 5.31 Minimizarea pentru Si şi Ti+1

Din diagrama Karnaugh pentru funcţia Si (ai, bi, Ti), se constată că


nu este posibilă minimizarea acesteia. Funcţia Ti+1 simplificată va fi:

Ti+1 (ai, bi, Ti) = bi Ti + ai Ti + ai bi

Schema logică a sumatorului elementar este prezentată în figura


5.32.
Bazele logice ale calculatoarelor

Figura 5.32 Sumator elementar:


a) schema logică b) simbol

Însumarea celor n cifre binare ale numerelor A şi B se poate realiza


serial (figura 5.33) sau paralel (figura 5.34). Dacă pentru însumarea serială
se utilizează un singur element de însumare şi două registre de deplasare
(RD1, RD2), pentru însumarea paralelă se vor utiliza n elemente de
însumare.

Figura 5.33 Însumarea serială


Sisteme de calcul şi operare

Figura 5.34 Însumarea paralelă

5.8.4 Matrice de comutaţie

O matrice de comutaţie este un circuit logic cu ieşiri multiple, care


realizează o funcţie matricială booleană. La o matrice de comutaţie ieşirile
sunt dependente de intrări printr-o relaţie matricială. Se poate face o
clasificare a matricilor de comutaţie după:
Ö structura logică:
Î matrice rectangulară;
Î matrice piramidală;
Î matrice dual piramidală.

Ö utilizare:
 matrice pentru codificare;
 matrice pentru decodificare;
 matrice pentru selecţie;
 matrice pentru distribuţie.

Matricea pentru codificare are rolul de codifica informaţia care se


prelucrează prin sistemul de calcul. Exemplu: codificarea cifrelor sistemului
octal.
Bazele logice ale calculatoarelor

Tabel de adevăr
Tabelul 5.5

Intrarea Ieşirile codificatorului


Cifra octală A B C
C0 0 0 0
C1 0 0 1
C2 0 1 0
C3 0 1 1
C4 1 0 0
C5 1 0 1
C6 1 1 0
C7 1 1 1

Figura 5.35 Matricea pentru codificare

Matricea pentru decodificare realizează operaţia inversă codificării.

Figura 5.36 Matricea pentru decodificare

Decodificatorul se utilizează pentru scrierea selectivă a datelor în


memoria adresabilă RAM. În figura 5.37 este prezentată schema unui
decodificator pentru cifrele sistemului octal.
Sisteme de calcul şi operare

Figura 5.37 Decodificator

Circuitul de multiplexare (multiplexorul) este unul din cele mai


importante circuite logice MSI. El se poate utiliza:
¾ În cadrul unităţii de calcul, când codul de selecţie reprezintă
codul operaţiei care se va executa;
¾ Citirea selectivă a unei locaţii dintr-o zonă de memorie;
¾ Generator de funcţii logice, dacă sursele de date sunt constante;
¾ Partajarea unei linii de transmisie prin multiplexarea în timp.
Bazele logice ale calculatoarelor

Figura 5.38 Multiplexorul


Demultiplexorul realizează funcţia inversă multiplexorului. El are
n
rolul de selecta o ieşire, din cele 2 , spre care se transferă informaţia de pe
intrare. Adresa pentru selecţie o reprezintă cele n intrări de selecţie.

Figura 5.39 Demultiplexorul


Sisteme de calcul şi operare

5.8.5 Bloc de memorie

Memoria are la bază un ansamblu de registre de aceeaşi dimensiune,


accesibile printr-o magistrală unică. Memoria, în cazul general, reprezintă un
sistem secvenţial a cărui funcţionalitate este independentă de natura
informaţiei manipulate.
Caracteristicile de bază ale unui bloc de memorie sunt:
ƒ mărimea cuvintelor de memorie;
ƒ numărul de cuvinte sau mărimea spaţiului adresabil.
Memoria RAM (Random Access Memory) poate fi:
ª cu magistrale pentru date şi adrese (varianta standard – figura 5.40);
ª cu magistrală de adrese multiplexată;
ª cu multiplexarea magistralei pentru adrese/date.

Figura. 5.40 Schema bloc pentru memoria RAM


Bazele logice ale calculatoarelor

Operaţia de scriere necesită:


ˆ transferul adresei într-un registru de adrese şi al datelor într-un
registru de date;
ˆ transferul conţinutului registru de date în locaţia de memorie
identificată prin informaţia din registrul de adrese.

Operaţia de citire necesită:


‰ transferul adresei într-un registru de adrese;
‰ transferul conţinutului din locaţia de memorie, identificată prin
informaţia din registrul de adrese, într-un registru de date.
După cum se ştie, circuitul basculant bistabil constituie elementul de
bază pentru memorare. Dacă aceste elemente sunt grupate în reţele, se va
obţine o matrice de memorie. Deoarece circuitele basculante bistabile pot
păstra informaţia, pe durata alimentării, spunem că sunt memorii statice.
Memoriile dinamice memorează informaţia prin prezenţa sau absenţa
unei sarcini electrice pe un condensator. Deoarece condensatorul se poate
descărca în timp, pentru a păstra neschimbată informaţia scrisă, este necesar
ca periodic memoria dinamică să fie reîmprospătată prin citirea şi
reînscrierea fiecărei cifre binare.
În figura 5.41 este prezentată structura unui circuit integrat ce
conţine 64 K x 1 biţi memorie dinamică.
Logica externă trebuie să asigure ca fiecare linie de pe cip să fie
adresată odată la un interval de timp (de obicei, < 2ms). Deoarece memoriile
dinamice sunt optimizate pentru construirea memoriilor de mare capacitate,
ele au, în general, intrări de adrese multiplexate în timp pentru a reduce
numărul conexiunilor. Astfel, în timpul unui ciclu normal de scriere sau
citire, jumătatea cea mai puţin semnificativă a adresei de rând este stocată
prin impulsul RAS (Row Address Strobe). Pe aceeaşi pini se aduc biţii, cei
mai semnificativi fiind eşantionaţi prin ceasul CAS (Column Address
Strobe).
Memoria de tip ROM (Read Only Memory) nu este un sistem
secvenţial, deţine caracteristicile de implementare a funcţiilor logice
combinaţionale.
Sisteme de calcul şi operare

Memoriile fixe - ROM, realizate cu circuite integrate pe scară largă,


reprezintă un anumit nivel al standardizării pentru utilizator. Această
posibilitate de adaptare la cerinţele utilizatorilor s-a obţinut prin folosirea
calculatorului în generarea automată a măştilor într-o anumită fază a
procesului tehnologic de realizare a circuitelor integrate.
Considerând o memorie ROM de 16384 biţi, aceasta poate fi
organizată ca o matrice X x Y de 128 x 128 puncte care sunt sau nu
conducătoare (vezi figura 5.42). Un astfel de circuit are opt ieşiri (0 0 ÷ 0 7 ) şi
11 intrări de adresă fiind organizat în 2048 cuvinte a câte opt biţi (2 Kocteţi).
Pentru o anumită combinaţie de pe intrare este generată o combinaţie la ieşire.

Figura 5.41 Memorie 64 K x 1 biţi RAM dinamică


Bazele logice ale calculatoarelor

Figura 5.42 Memorie ROM

Memoriile fixe programabile (PROM - Programmable ROM) sunt


programate de producătorul de echipamente de calcul prin mijloace
electronice, folosindu-se „programatorul PROM” prin intermediul căruia se
reţine configuraţia dorită de biţi.

Există tipuri de memorii PROM ce pot fi reprogramabile (EPROM -


Erasable PROM), în sensul că pot fi şterse electric sau prin expunere la
lumină ultravioletă şi reprogramate de mai multe ori.
Densitatea funcţională ce se obţine prin folosirea memoriilor ROM
sau PROM este incomparabil mai mare decât cea obţinută prin utilizarea
porţilor şi bistabilelor.
Sisteme de calcul şi operare

Matricile logice programabile (PLA - Programmable Logic Array)


necesită specificarea atât a configuraţiei biţilor fiecărui cuvânt de ieşire cât
şi adresa acestuia.

Aplicaţiile matricilor logice programabile pot fi legate de funcţia de


memorare, de conversia de cod, sau de generarea de funcţii logice. PLA-ul
ca un generator de funcţii logice poate fi asimilat cu o structură ŞI/SAU în
care cele m adrese sunt decodificate cu m circuite ŞI cu n intrări, iar fiecare
ieşire este a unui circuit SAU ce are, ca intrare ieşirea oricăreia din cele m
porţi ŞI. Orice ieşire poate fi definită ca o sumă de produse.

5.8.6 Circuite integrate

Circuitul integrat (CI) a fost elementul ce a permis miniaturizarea


componentelor fizice ale unui sistem de calcul. Circuitul integrat reprezintă
un circuit electronic ale cărui componente (rezistoare, diode, condensatoare,
tranzistoare etc.) sunt realizate pe o pastilă de material semiconductor în
scopul obţinerii unor funcţii specifice. În tabelul următor sunt prezentate
circuite tipice fiecărui nivel de integrare, din categoria circuitelor discutate.
Bazele logice ale calculatoarelor

Familii de circuite integrate

Tabelul. 5.6
Familia de CI Circuite combinaţionale Circuite secvenţiale
Porţi: NU, ŞI, SAU, NAND, Circuite basculante
NOR bistabile

Integrare pe scară medie Decodificatoare, Registre,


(MSI) sumatoare, numărătoare
multiplexoare
(100-1000 componente/cip)

Integrarea pe scară largă Memorii fixe (ROM, Memorii cu acces


(LSI) PROM) aleator (RAM)
Matrici logice
(1000-10000 comp./cip)
programabile (PLA)

Integrarea pe scară foarte


largă (VLSI)
Circuite specializate
(>10000 comp./cip)
3
ELEMENTE DE TEORIA
TRANSMISIEI INFORMAŢIEI

3.1 Entropia informaţională

Informaţia este un mesaj ce aduce o precizare într-o problemă ce


comportă un anumit grad de incertitudine. Deşi există o mare diversitate de
informaţie, atât din punctul de vedere a formei de prezentare, a conţinutului, a
sursei care o generează cât şi a modului de recepţionare, oamenii de ştiinţă
şi-au pus problema măsurării ei cantitative. S-a constatat că informaţia şi
nedeterminarea sunt mărimi direct proporţionale.
Se consideră un experiment X în cadrul căruia se pot realiza un număr
finit de n evenimente elementare: x1, x2, x3, ..,xn. Probabilităţile de apariţie ale
acestor evenimente le vom nota cu p1, p2, p3, .., pn (pi = numărul cazurilor
favorabile evenimentului xi / numărul cazurilor egal posibile ale
experimentului).
Se presupune că sistemul de evenimente este un sistem complet:
⎧ pi ≥ 0 ∀ i = 1, n

⎨ n şi
⎪ ∑ pi = 1
⎩ i=1

Experimentul pune în evidenţă un anumit câmp de probabilitate


{X, x, p(x)} şi o anumită repartiţie:
⎛ x1 x 2 ... x n⎞
X = ⎜ ⎟
⎝ p1 p 2 ... p n⎠
Sisteme de calcul şi operare

Deoarece nu se cunoaşte apriori rezultatul experimentului


X, înseamnă că acesta conţine un anumit grad de nedeterminare. Putem
afirma că:
Ö în urma realizării unui experiment se obţine informaţie dacă şi
numai dacă rezultatul experimentului înlătură o anumită
nedeterminare;
Ö informaţia şi nedeterminarea sunt mărimi direct proporţionale;
Ö informaţia înlocuieşte nedeterminare.

Aceste particularităţi au condus la utilizarea aceleiaşi unităţi de


măsură atât pentru cantitatea de informaţie cât şi pentru nedeterminare.
Nedeterminarea unui experiment depinde de probabilităţile de realizare a
evenimentelor. Dacă se notează cu H măsura gradului de nedeterminare,
pentru experimentul X, aceasta va fi o funcţie de probabilităţile
evenimentelor:

H(X) = H(p1, p2, .…, pn)

În anul 1948, Claude E. Shannon a folosit pentru prima dată formula:

n
H( p1 , p2 ... pn ) = − ∑ pi log 2 pi
i =1

Măsura nedeterminării, dată de această formulă, se numeşte, conform


lui Claude Shannon, entropia experimentului X sau entropia informaţională.
În acest sens, unitatea de măsură a informaţiei definită ca fiind
cantitatea de informaţie obţinută prin precizarea unei variante din două egal
probabile se numeşte bit (binary digit), cu multiplii:

ƒ 1 octet (byte) = 8 biţi


ƒ 1 kilo octet = 210 octeţi
ƒ 1 Mega octet = 210 ko = 220 octeţi
ƒ 1 Giga octet = 210 Mo = 230 octeţi
ƒ 1 Tera octet = 210 Go = 240 octeţi
ƒ 1 Peta octet = 210 To = 250 octeţi
ƒ 1 cuvânt (word) = 16 / 32 / 64 biţi; lungimea variază în funcţie de
tipul calculatorului.
Elemente de teoria transmisiei informaţiei

Principalele proprietăţi ale entropiei informaţionale sunt:

P1. Entropia informaţională, fiind măsura informaţiei, este o entitate


nenegativă:

H(p1, p2, .…, pn) ≥ 0.

P2. Dacă pentru un indice i∈{1, 2, .., n} avem pi =1, atunci entropia
informaţională este nulă:

H(p1, p2, .…, pn) = 0.

P3. Entropia unui sistem de evenimente este maximă când


evenimentele au aceeaşi probabilitate de apariţie:

H(p1, p2, .…, pn) ≤ H(1/n, 1/n, 1/n,…, 1/n).

P4. Evenimentele imposibile nu modifică valoarea entropiei


informaţionale a unui sistem:

H(p1, p2, .…, pn, 0) = H(p1, p2, .…, pn).

P5. Entropia produsului mai multor surse independente de informaţie


este egală cu suma entropiilor fiecărei surse luate separat:

H(X1 x X2 x…Xn) = H(X1) + H(X2) +.. H(Xn).


Produsul mai multor surse de informaţie reprezintă un experiment
compus care constă din realizarea simultană a câte unui eveniment
corespunzător fiecărei surse.

P6. Entropia produsului a două surse oarecare X şi Y de informaţie


este:

H(X x Y) = H(X) + H(Y/X).

H(Y/X) reprezintă cantitatea medie de informaţie ce se obţine în urma


realizării experimentului Y, condiţionat de experimentul X.

n
H(Y/ X) = ∑ p( xk )H(Y/ xk )
k=1
Sisteme de calcul şi operare

unde:
p(xk) probabilitatea realizării evenimentului xk ∈ X ;
H(Y/xk) entropia experimentului Y, condiţionată de evenimentul
xk ∈ X.

m
H(Y/ x k ) = − ∑ p( y i / x k ) log 2 p( y i / x k )
i =1

iar p(yi/xk) este probabilitatea realizării evenimentului elementar


yi ∈ Y ( i = 1 , m ) când s-a realizat evenimentul xk ∈ X ( k = 1, n ).

Dacă X şi Y sunt experimente oarecare sunt respectate proprietăţile:


P7. H(Y/X) ≤ H(Y)
P8. H(X x Y) ≤ H(X) + H(Y)
P9. H(X/Y) = H(Y/X) + H(X) - H(Y)

3.2 Sistem de transmisie a informaţiei

Schema generală a unui sistem de transmisie a informaţiei include:


sursa, canalul (ce poate fi supus perturbaţiilor) şi recepţia (figura 3.1).

Figura 3.1 Schema unui sistem de transmisie a informaţiei fără codificare


Elemente de teoria transmisiei informaţiei

Fie:

♦ X mulţimea mesajelor emise de o sursă de informaţie (intrarea


sistemului);
♦ Y mulţimea mesajelor care se recepţionează (ieşirea sistemului);
♦ p(y/x) probabilitatea de a recepţiona mesajul y ∈ Y când s-a emis
x ∈ X.

Sistemul de transmisia informaţiei este format din două mulţimi finite


X şi Y şi o probabilitate condiţionată p(y/x), definită pe Y pentru orice x ∈ X
şi se notează cu [X, p(y/x), Y].

Sursa sistemului de transmisie a informaţiei este reprezentată prin


câmpul de probabilitate {X, x, p(x)}, fiind dată probabilitatea de emisie p(x)
pentru ∀ x ∈ X, astfel încât ∑ p( x ) = 1.
x ∈X
Recepţia sistemului de transmisie a informaţiei este reprezentată prin
câmpul de probabilitate {Y, y, p(y)}, fiind dată probabilitatea de emisie p(x)
pentru ∀ x ∈ X, iar probabilitatea de recepţie se calculează prin
relaţia: p( y) = ∑ p( x ) p( y / x ) .
x ∈X
Mediul prin care se propagă semnalele purtătoare de informaţie, de la
sursă la recepţie, se numeşte canalul sistemului de transmisia informaţiei. A
cunoaşte canalul de comunicaţie al unui sistem, revine la a cunoaşte
probabilităţile p(y/x) pentru toate mesajele x ∈ X şi y ∈ Y. Dacă p(y/x) ia
numai valorile 0 sau 1 pentru orice x ∈ X şi y ∈ Y, asupra canalului nu
acţionează perturbaţiile. În caz contrar, canalul prezintă perturbaţii.

Într-un sistem de transmisia informaţiei [X, p(y/x), Y], având sursa


{X, x, p(x)} şi recepţia {Y, y, p(y)}, expresiile:

H( X ) = − ∑ p( x ) log
x ∈X
2 p( x )

H( Y ) = − ∑ p( y) log
y ∈Y
2 p( y)

reprezintă entropiile câmpului de evenimente de la intrare şi câmpului de


evenimente de la ieşire.
Sisteme de calcul şi operare

Dacă se notează cu p(x/y) probabilitatea de a se emite mesajul x ∈ X


când se recepţionează y ∈ Y, expresia:

H( X / y ) = − ∑ p( x / y) log 2 p( x / y )
x ∈X

reprezintă cantitatea de informaţie care trebuie emisă de către sursă pentru a


recepţiona mesajul y ∈ Y. Cantitatea medie de informaţie emisă ce este
necesară pentru a recepţiona întreaga mulţime a mesajelor y ∈ Y va fi:

H( X / Y ) = ∑ p( y ) H ( X / y ) .
y ∈Y

Entropia H(X / Y) se numeşte echivocaţie, fiind măsura echivocului


care există în câmpul de la intrare când se cunoaşte câmpul de la ieşire
(figura 3.2). În mod asemănător, se determină entropia H(Y/X), care se
numeşte eroare medie şi este măsura incertitudinii câmpului de la ieşire când
se cunoaşte câmpul de la intrare (figura 3.3).

Expresia: I(X,Y) = H(X) - H(X/Y) reprezintă informaţia transmisă prin


canal şi se mai numeşte transinformaţie.
În lipsa perturbaţiilor p(x/y) = p(y/x) = 1 sau p(x/y) = p(y/x) = 0 şi
H(X/Y) = H(Y/X) = 0.

Figura 3.2 Reprezentarea grafică a echivocului


Elemente de teoria transmisiei informaţiei

Figura 3.3 Reprezentarea grafică a incertitudinii

3.3 Codificarea informaţiei în sistemele de calcul

Conform principiilor de structură şi funcţionalitate, în calculator sunt


recunoscute numai cifrele binare (0 şi 1). Se ştie că informaţia cel mai
frecvent este codificată cu ajutorul cifrelor zecimale, literelor alfabetului
(caracterele majuscule şi minuscule) şi diverse semne speciale. Pentru a putea
fi prelucrată şi eventual transmisă cu ajutorul unui sistem de calcul informaţia
va fi codificată binar.
Informaţia şi codificarea sunt entităţi inseparabile.
Fie X={x1, x2, x3,..., xN}, mulţimea simbolurilor primare emise de o
sursă de informaţie şi A={a1, a2,..., aD}, mulţimea simbolurilor codului
folosit. Cu simbolurile: a1, a2,..., aD se formează un număr N de cuvinte de
cod: C = {c1, c2,..., cN}.

Cuvintele de cod sunt succesiuni finite de simboluri ale mulţimii A.


Codificarea este operaţia de stabilire a unei corespondenţe biunivoce între
simbolurile xi ∈ X şi ci ∈ C.

Fie: c1: a1 a2 a3 → x1
c2: a2 a1 a3 → x2
c3: …

Totalitatea cuvintelor ci (i = 1÷n) formează un cod.


Cu ajutorul simbolurile mulţimii A se pot forma cuvinte cărora să nu
le corespundă elemente din mulţimea X. Acestea sunt cuvinte fără sens.
Cuvintele cărora le corespund simboluri din alfabetul sursei se numesc
cuvinte cu sens sau cuvinte de cod.
Sisteme de calcul şi operare

Practic, codificarea reprezintă o schimbare în forma de prezentare a


informaţiei, necesară în procesul prelucrării sau transmisiei. În momentul
realizării codificării apare şi problema transformării inverse, ce permite
revenirea la forma iniţială. Aşadar, dacă există funcţia cod:

f:X→C

trebuie să existe şi funcţia inversă:

f-1: C → X.

Operaţia de revenire din mulţimea secvenţelor de cod în mulţimea


simbolurilor primare prin intermediul funcţiei f-1 se numeşte decodificare.
Una din restricţiile necesare realizării codificării o reprezintă lungimea
secvenţei de cod. Numărul de simboluri elementare dintr-un cuvânt reprezintă
lungimea acestuia. Dacă toate cuvintele de cod au aceeaşi lungime,
codificarea se numeşte uniformă.

Stabilirea numărului (NR) de secvenţe distincte de lungime n, ce se pot crea


cu D simboluri elementare, se determină aplicând formula combinărilor cu
repetiţie:
NR = Dn

Pentru realizarea codificării este necesar ca NR ≥ N (N fiind numărul


de simboluri primare ce aparţin lui X). Pentru codificarea informaţiei utilizate
într-un sistem de calcul mulţimea simbolurilor codului este A = {0,1} şi
ţinând cont de relaţia de mai sus avem:

N ≤ 2n

Prin logaritmarea relaţiei se va obţine:

log2 N ≤ n

Într-o codificare uniformă, lungimea n a secvenţelor de cod trebuie să


fie cel puţin egală cu entropia maximă a sursei.
Când se urmăreşte mărirea eficienţei transmisiunii, cuvintele de cod
pot avea lungimi diferite, astfel încât lungimea medie l a unui cuvânt să fie
cât mai mică.
Elemente de teoria transmisiei informaţiei

Fie sursa primară X = {x1, x2,..., xN} având probabilităţile de


realizare P = {p(x1), p(x2),..., p(xN)} iar mulţimea cuvintelor de cod C = {c1,
c2,..., cN} cu probabilităţile PC = {p(c1), p(c2),...,p(cN)} = {p(x1),..., p(xN)}.
Lungimile cuvintelor de cod sunt: L = {l1, l2,...,lN}, li fiind numărul de
simboluri din alfabetul codului, care compun cuvântul ci. Lungimea medie a
unui cuvânt de cod se va calcula după formula:

N
l = ∑ p( x )
i=1
i li

Entropia sursei, care este aceeaşi cu entropia cuvintelor codului, va fi:


N
H(X) = H(C) = - ∑ p( x )
i =1
i log 2 p( x i )

Dacă alfabetul codului este A = {a1, a2,..., aD}, având probabilităţile


PA = {p(a1), p(a2),..., p(aD)}, entropia va fi:

D
H(A) = - ∑ i =1
p( a i ) log 2 p( a i ) ≤ log 2 D

Informaţia medie pe cuvânt va fi:

H(C) = H(X) = l ⋅ H(A) .

Înlocuind pe H(A) prin relaţia precedentă se va obţine:

H(X)
H(X) ≤ l log2 D ⇒ l ≥ = lmin
log2 D

Relaţia obţinută arată că lungimea medie l a unui cuvânt de cod are


o margine inferioară egală cu entropia sursei împărţită la valoarea maximă a
entropiei alfabetului codului sau informaţia medie pe un simbol din
H(X)
alfabetul codului nu poate fi mai mare decât valoarea maximă a
l
H(X)
alfabetului codului log2D, adică ≤ log2 D .
l
Sisteme de calcul şi operare

Pentru realizarea unei codificări se mai ţine seama de:

¾ Capacitatea codului, valoarea maximă a entropiei alfabetului


codului:
Ccod = max H(A) = log2D.
¾ Eficienţa codului, raportul dintre lungimea medie minimă şi
l
lungimea medie a unui cuvânt de cod: ηcod = min . Înlocuind
l
l min şi l se va obţine:
H(X) / log 2 D H(A)
η cod = = .
H(X) / H(A) log 2 D
¾ Redundanţa codului este mărimea complementară eficienţei:
H(A)
R cod = 1 - η cod = 1 - .
H max (A)

3.4 Coduri numerice şi alfanumerice

Codurile în care sunt reprezentate numai numere se numesc coduri


numerice, iar cele care cuprind numerele, literele şi semnele speciale se
numesc coduri alfanumerice. Dintre codurile alfanumerice amintim:
” Codul BCD (Binary Coded Decimal), reprezintă unul din
primele coduri utilizate în tehnica de calcul. O secvenţă de cod
are lungimea de şase biţi/caracter.
” Codul EBCDIC (Extended Binary Coded Decimal Information
Interchange Code), secvenţele de cod au o lungime de
opt biţi/caracter.
” Standardul ASCII (American Standard Code for Information
Interchange) secvenţele de cod au o lungime de opt biţi/caracter.
” Standardul Unicode utilizează secvenţe de cod cu lungimea de
16 biţi/caracter. Acest cod a fost conceput să înlocuiască
standardul ASCII, prin intermediul căruia se pot reprezenta
maximum 256 (28) caractere. Codul ASCII este un subset al
standardului Unicode. Caracterele de bază din toate limbile
scrise existente pot fi reprezentate prin standardul Unicode.
Elemente de teoria transmisiei informaţiei

Codurile normalizate au fost realizate în aşa fel încât să uşureze


modul de prelucrare a informaţiei. Astfel, partea stângă a codului permite
identificarea imediată a naturii informaţiei codificate (litere, cifre, funcţii),
următoarele poziţii ale codului sunt organizate într-un mod care să uşureze
conversia în vederea calculelor (în cazul cifrelor) sau ordonarea alfabetică
(în cazul literelor).
Coduri alfanumerice
Tabelul 3.1

Caracterul Codul ASCII Codul EBCDIC Codul UNICODE


0 0011 0000 1111 0000 (0030)H
1 0011 0001 1111 0001 (0031)H
2 0011 0010 1111 0010 (0032)H
3 0011 0011 1111 0011 (0033)H

9 0011 1001 1111 1011 (0039)H


a 0110 0001 1000 0001 (0061)H
b 0110 0010 1000 0010 (0062)H

z 0111 1010 1010 1001 (007A)H


A 0100 0001 1100 0001 (0041)H
B 0100 0010 1100 0010 (0042)H

Z 0101 1010 1110 1001 (005A)H


LF(line feed) 0000 1010 0010 0101 (000A)H

Codurile numerice au fost introduse pentru a se opera mai uşor cu


informaţia numerică. Codurile numerice pot fi:
ƒ ponderate;
ƒ neponderate.

Un cod numeric este ponderat dacă unei cifre zecimale îi corespunde


o succesiune de cifre binare, în care fiecare cifră de rang j are asociată o
anumită pondere Pj. Fie N un număr zecimal:

N = zk zk-1 zk-2 .... z0 zi ∈{0, 1, ....9} i = 0, k


Sisteme de calcul şi operare

Oricare ar fi cifra zecimală zi, aceasta se va reprezenta printr-o


secvenţă binară ce satisface relaţia:

n
zi = ∑aj Pj , unde: aj∈{0,1},
j=1

P j ∈{0, ± 1, ± 2, ....±9} constituie ponderea corespunzătoare


rangului j, iar n numărul de simboluri din secvenţa binară asociată cifrei
zecimale.

Dintre codurile ponderate amintim (tabelul 3.2):

® Codul 8421, codul binar-zecimal natural, având ca ponderi


puterile lui 2 (23,22,21,20).

Coduri ponderate

Tabelul 3.2
Cifra Codul Codul Codul Codul bichinar
zecimală 8421 2421 8421 50 43210
0 0000 0000 0000 01 00001
1 0001 0001 0111 01 00010
2 0010 0010 0110 01 00100
3 0011 0011 0101 01 01000
4 0100 0100 0100 01 10000
5 0101 1011 1011 10 00001
6 0110 1100 1010 10 00010
7 0111 1101 1001 10 00100
8 1000 1110 1000 10 01000
9 1001 1111 1111 10 10000

® Codul 2421 (Aiken), la care codificarea primelor cinci cifre


zecimale (0÷4) este identică secvenţelor din codul 8421.
Codificarea cifrei zecimale 5 se obţine din secvenţa
corespunzătoare cifrei zecimale 4 prin schimbarea simbolurilor
binare 0 în 1 şi 1 în 0. Astfel, fiecare complement faţă de 9 al unei
Elemente de teoria transmisiei informaţiei

cifre zecimale se reprezintă printr-o secvenţă ce rezultă


complementând faţă de 1 simbolurile binare din secvenţa cifrei
zecimale respective. Codurile ce au această proprietate se numesc
autocomplementare, prezentând avantaje în efectuarea operaţiilor
aritmetice.
® Pentru codul 8421 ponderile sunt puteri ale lui 2, însă două sunt
negative. Este un cod auto-complementar.
® Codul bichinar (50 43210) conţine secvenţe de câte şapte
simboluri binare împărţite în două grupe. Acest cod a fost folosit
la primele calculatoare electronice.

Alte coduri numerice ponderate sunt: 4221, 5421, 7421, 6421


(tabelul 3.3).

Coduri ponderate (a doua parte)

Tabelul 3.3
Cifra Codul Codul Codul Codul
zecimală 4221 5421 7421 6421
0 0000 0000 0000 0000
1 0001 0001 0001 0011
2 0010 0010 0010 0010
3 0011 0011 0011 0101
4 0110 0100 0100 0100
5 1001 1000 0101 0111
6 1100 1001 0110 1000
7 1101 1010 0111 1011
8 1110 1011 1001 1010
9 1111 1100 1010 1101

Din categoria codurilor neponderate, amintim (tabelul 3.4):


ª Codul EXCES 3 a fost realizat de G. Stibitz şi se remarcă prin
aceea că:
o este un cod autocomplementar;
o cifrei zecimale zero îi corespunde o secvenţă binară ce conţine
cifre binare de 1.
Sisteme de calcul şi operare

ª Codul Gray se caracterizează prin aceea că două secvenţe de cod


consecutive diferă printr-o singură poziţie binară. Dacă notăm cu:
a8, a4, a2, a1 cifrele binare ale secvenţelor codului 8421, în ordinea
ponderilor şi cu b4, b3, b2 şi b1 cifrele binare ale secvenţelor Gray,
în ordinea de la stânga la dreapta, acestea din urmă pot fi calculate
folosind relaţiile: b8 = a8; b3 = a8 ⊕ a4; b2 = a4 ⊕ a2; b1 = a2 ⊕ a1.
ª Codul „2 din 5” este un cod pseudo-ponderat. Secvenţele de cod
pentru cifrele zecimale 1 ÷ 9 au asociate ponderile 74210, numai
codificarea cifrei zecimale 0 face excepţie de la această regulă.
Caracteristica secvenţelor de cod este aceea că din cele cinci cifre
binare două sunt semnificative (au valoarea 1).

Coduri neponderate

Tabelul 3.4
Cifra Codul Codul Codul 2 din 5
zecimală Exces 3 Gray (74210)
0 0011 0000 11 000
1 0100 0001 00 011
2 0101 0011 00 101
3 0110 0010 00 110
4 0111 0110 01 001
5 1000 0111 01 010
6 1001 0101 01 100
7 1010 0100 10 001
8 1011 1100 10 010
9 1100 1101 10 100

Codul de bare reprezintă un sistem de codificare prin care se permite


identificarea automată sau semiautomată a diverselor entităţi (legitimaţii,
cărţi, bilete de avion, produse din cele mai variate etc.).
Codul de bare are avantajul de a fi relativ simplu de produs şi
recunoscut. El poate fi aplicat direct pe orice produs (pe ambalajul acestuia)
sau ulterior, ca etichetă. Majoritatea codurilor de bare au la bază principiul
binar, reprezentarea făcându-se printr-un număr de linii sau linii şi spaţii cu
o anumită lăţime. Secvenţa de linii sau linii şi spaţii reprezintă un caracter
numeric sau alfanumeric.
Elemente de teoria transmisiei informaţiei

Pentru exemplificare vom considera codul 2/5 (2 din 5) (tabelul 3.5),


cod numeric (sunt reprezentate cifrele de la 0 la 9). Codificarea se face prin
trasarea a două linii late şi trei înguste. Raportul de imprimare linie
îngustă/linie lată este de 1/2 sau 1/3. Spaţiile nu conţin informaţie.

Codul de bare 2/5

Tabelul 3.5

Caracter Linia1 Linia2 Linia3 Linia4 Linia5


1 1 0 0 0 1
2 0 1 0 0 1
3 1 1 0 0 0
4 0 0 1 0 1
5 1 0 1 0 0
6 0 1 1 0 0
7 0 1 0 1 1
8 1 0 0 1 0
9 0 1 0 1 0
0 0 0 1 1 0
start 1 1 0
stop 1 0 1
1: linie lată
0: linie îngustă

Figura 3.4 Reprezentarea numărului 19 prin codul de bare 2/5


Sisteme de calcul şi operare

Dacă în cazul codului 2 din 5 spaţiile nu conţin informaţie, există şi


un cod asemănător în care densitatea informaţiei reprezentate este mai mare;
acest cod se numeşte „codul 2 din 5 intercalat” iar în acest caz spaţiile
conţin informaţii în acelaşi mod ca şi liniile.

Codificarea informaţiei permite rezolvarea unor probleme ce pot


apare în transmisia, stocarea sau prelucrarea acesteia, cum ar fi:
♦ detectarea şi corectarea erorilor pentru a se asigura integritatea
informaţiei;
♦ compresia pentru minimizarea cantităţii de informaţie;
♦ criptarea pentru a se garanta securitatea informaţiei.

3.5 Coduri detectoare şi corectoare de erori

Codificarea se efectuează având ca scop principal protejarea


informaţiei de perturbaţiile ce pot să apară într-un sistem de transmisie. De
aceea, înainte de a emite simbolurile de informaţie pe canalul de
comunicaţie, ce poate fi supus perturbaţiilor, se adaugă o anumită informaţie
redundantă, de obicei prin introducerea unor simboluri suplimentare, numite
simboluri de control.
Rolul acestor simboluri de control este acela de a indica
utilizatorului prezenţa erorilor şi chiar să-i dea posibilitatea de a le corecta.
Codurile obţinute astfel, prin mărirea redundanţei, se numesc coduri
detectoare şi corectoare de erori.
În acest caz, schema unui sistem de transmiterea informaţiei este
reprezentată în figura 3.5.

Figura 3.5 Sistem de transmisia informaţiei


Elemente de teoria transmisiei informaţiei

Se poate face o clasificare a codurilor detectoare şi corectoare de


erori după modul de prelucrare al simbolurilor.
Dacă prelucrările necesare obţinerii proprietăţilor de detecţie sau de
corecţie se fac în blocuri de n simboluri, avem coduri bloc. Dacă prelucrarea
simbolurilor generate de sursă se realizează în mod continuu, avem de-a
face cu coduri convoluţionale (recurente).

Din categoria codurilor bloc se disting:


ƒ codurile grup, secvenţele de cod sunt considerate ca fiind
elemente dintr-un spaţiu vectorial;
ƒ codurile ciclice, secvenţele de cod sunt considerate ca fiind
elemente într-o algebră.

3.5.1 Distanţa de cod

Fie c = [a1,....,an], un cuvânt de cod, conform unei codificări binare


ai ∈ {0,1} pentru ∀ i = 1, n . Notăm cu W mulţimea tuturor cuvintelor
(N=2n), care are o structură de spaţiu vectorial, iar mulţimea cuvintelor cu
sens o notăm cu V (presupunem că NC=2k) ce are o structură de subspaţiu
vectorial.
Dacă toate secvenţele care se pot realiza sunt cuvinte de cod (W=V),
nu va exista posibilitatea de a detecta sau corecta erorile ce apar în procesul
de transmitere pe canal. Practic, dacă un cuvânt de cod se modifică prin
canal, datorită perturbaţiilor, se va obţine tot un cuvânt de cod, respectiv un
cuvânt cu sens.
Pentru a avea posibilitatea de a detecta prezenţa erorilor în
secvenţele de cod recepţionate, mulţimea W a cuvintelor se va divide în
două submulţimi: a cuvintele cu sens (V) şi submulţimea cuvintelor fără
sens (F).
La un anumit grad de redundanţă atribuit unei codificări se pot
stabili mai multe coduri. Dintre acestea nu toate oferă posibilităţi în
depistarea erorilor şi eventual corectarea lor. Codurile care asigură o
anumită capacitate de detecţie şi eventual corecţie cu ajutorul unor
redundanţe minime se numesc coduri optimale.
Pentru a realiza codificarea se va lua în calcul parametrul denumit
distanţa de cod (distanţa Hamming).
În spaţiul n dimensional al cuvintelor de cod se introduce funcţia
distanţă D(vi,vj) care satisface proprietăţile unui spaţiu metric.
Sisteme de calcul şi operare

Prin definiţie această funcţie este:

n
D( vi, vj ) = ∑ ( aik ⊕ ajk ) ,
k =1

unde vi = [ai1, ai2, …, ain] şi vj = [aj1, aj2,…, ajn]

iar „⊕” se referă la adunarea modulo 2 în timp ce „+”, la adunarea în


corpul numerelor reale. Se poate spune că distanţa dintre două cuvinte de cod
este egală cu numărul de simboluri prin care cele două cuvinte se deosebesc.

Exemplul 1

Să se calculeze distanţa de cod între secvenţele de cod reprezentate în


figura 3.6.

Rezolvare. În figura 3.6.a) toate secvenţele de cod sunt cuvinte cu


sens. Calculând distanţele de cod, avem:

D(v0,v1)=(0 ⊕ 0) + (0 ⊕ 0) + (0 ⊕ 1) = 1
D(v0,v2)=(0 ⊕ 0) + (0 ⊕ 1) + (0 ⊕ 0) = 1
D(v0,v3)=(0 ⊕ 0) + (0 ⊕ 1) + (0 ⊕ 1) = 2
D(v0,v4)=(0 ⊕ 1) + (0 ⊕ 0) + (0 ⊕ 0) = 1
.
.
D(v0,v7)=(0 ⊕ 1) + (0 ⊕ 1) + (0 ⊕ 1) = 3
D(v1,v2)=(0 ⊕ 0) + (0 ⊕ 1) + (1 ⊕ 0) = 2
.
.
D(v1,v7)=(0 ⊕ 1) + (0 ⊕ 1) + (1 ⊕ 1) = 2
.
.
D(v6,v7)=(0 ⊕ 1) + (1 ⊕ 1) + (1 ⊕ 1) = 1

Se constată că: Dmin=1.


Elemente de teoria transmisiei informaţiei

Figura 3.6 Reprezentarea geometrică a secvenţelor de cod

În (figura 3.6.b) numai două secvenţe sunt cuvinte cu sens, iar


distanţa de cod va fi :
D(v0,v7)=(0 ⊕ 1) + (0 ⊕ 1) + (0 ⊕ 1) = 3

Probabilitatea de detecţie şi corecţie a unui cod depinde de distanţa


minimă între două cuvinte de cod. Se poate demonstra că pentru un cod ce
poate detecta un număr de e erori existente în una din secvenţele sale, este
necesar ca:

Dmin ≥ e + 1

iar pentru a detecta e erori şi a corecta c erori, având c ≤ e, este


necesar ca:

Dmin ≥ e + c + 1

Pentru realizarea unor structuri de cod optime se va ţine seama de:


Ö numărul secvenţelor ce aparţin codului (NC);
Ö lungimea cuvintelor de cod;
Ö distanţa minimă de cod (Dmin).

Operaţia de determinare a simbolurilor de control funcţie de


simbolurile de informaţie se numeşte codificare redundantă.
Sisteme de calcul şi operare

3.5.2 Codul Hamming

Se consideră un spaţiu m-dimensional, denumit spaţiu de corecţie,


care are 2m elemente corectori (z). Rolul corectorilor este de a indica
poziţiile din cuvintele de cod în care au apărut erori. Se defineşte operatorul
H, ce stabileşte o corespondenţă univocă între mulţimea tuturor cuvintelor
recepţionate şi mulţimea corectorilor, astfel:

H{vi′} = z

Dacă vi′= vi, atunci H{vi} = 0.

Structura cea mai simplă pentru operatorul H se obţine dacă se va


considera o transformare liniară, definită prin ecuaţiile:

h11 a1′ + h12 a2′ + …. h1n an′ = em


h21 a1′ + h22 a2′ + …. H2n an′ = em-1
.
.
hm1 a1′ + hm2 a2′ + …. Hmn an′ = e1

unde:
hij - parametrii care determină transformarea H;
ai′ - simbolurile cuvântului recepţionat;
ei - elementele corectorului z.

Ecuaţiile se pot scrie sub formă matricială utilizând notaţiile:

⎡ h11 h12 h1 n ⎤
⎢ h 21 h 22 h 2n ⎥
H =⎢ ⎥ - este matricea de control;
⎢ ⎥
⎢ ⎥
⎣ hm1 hm 2 hmn ⎦
⎡em ⎤
⎢ ⎥
v′ = [ a1′ a2′ … an′ ] - cuvânt recepţionat şi z = ⎢ ⎥ - cuvânt corector.
⎢ e2 ⎥
⎢ ⎥
⎣ e1 ⎦
Elemente de teoria transmisiei informaţiei

Folosind aceste notaţii putem scrie: H v′T = z, iar în cazul când v = v′


vom avea:

H vT = 0

Aceasta este relaţia care se va folosi pentru determinarea celor


m simboluri de control, în funcţie de simbolurile generate de sursa de
informaţie (în număr de k). Operaţia prin care se determină valorile
simbolurilor de control în funcţie de simbolurile generate de sursa de
informaţie se numeşte codificare redundantă.

Codul Hamming asigură detecţia şi corecţia unei singure erori.


Pentru a indica poziţia erorii într-unul din cele n simboluri ale cuvântului de
cod sau pentru a indica absenţa erorilor este necesar ca numărul corectorilor
2m ≥ n + 1.

Cum n = k + m, o să avem: 2m ≥ m + k + 1.

Aceasta este relaţia prin care se determină numărul m al simbolurilor


de control când se cunoaşte numărul k al simbolurilor de informaţie, în cazul
corecţiei unei singure erori.
Codul Hamming este caracterizat de o matrice de control Hm,n, în
care coloana hi este reprezentarea binară a numărului i.

H = [h1h2....hn]

Se consideră cuvântul eroare, cu o singură poziţie eronată:

e=[0,...,αj,...0] (αj=1)

Dacă se transmite mesajul vi se va recepţiona:

v`i=vi ⊕ e (perturbaţie aditivă)

Corectorul corespunzător va fi:

T T
T
Z = H v ′ = H ( v i ⊕ e ) = H v ⊕ H eT
i i
Sisteme de calcul şi operare

T
Deoarece H v = 0 – este relaţia ce se foloseşte pentru determinarea
i
celor n simboluri de control, vom avea:

⎡0⎤
⎢ ⎥
⎢.⎥
⎢.⎥
⎢ ⎥
Z = H e T = [h1 h 2 ..... h j .... h n ] ⎢α j⎥ = h j
⎢ ⎥
⎢.⎥
⎢.⎥
⎢ ⎥
⎢⎣ 0 ⎥⎦

Aşadar, corectorul este reprezentarea binară a numărului j, indicând


poziţia în care există eroarea.
Pentru a simplifica operaţia de calcul a celor m simboluri de control,
acestea se vor alege astfel încât să corespundă vectorilor coloană hi cu o
singură componentă diferită de 0.
Notând cu ci simbolurile de control şi cu aj pe cele de informaţie,
vectorul cuvânt de cod va fi: v=[c1c2a3c4....an].
T
Ţinând seama de relaţia H v = 0 obţinem:
i

⎡ c1 ⎤ ⎡ 0 0 . . . . 1⎤ ⎡ c1 ⎤
⎢c ⎥ ⎢ 0 . . . . . 1⎥ ⎢c ⎥
⎢ 2⎥ ⎢ ⎥ ⎢ 2⎥
⎢ a3⎥ ⎢........⎥ ⎢.⎥
[h1 h 2 .... h n ] ⎢ ⎥ = 0 sau ⎢ ⎥ ⎢ ⎥ = 0
⎢.⎥ ⎢........⎥ ⎢.⎥
⎢.⎥ ⎢0 1 . . . . . ⎥ ⎢.⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣a n ⎦ ⎣1 0 . . . . 1⎦ ⎣a n ⎦
Elemente de teoria transmisiei informaţiei

relaţie echivalentă cu m ecuaţii în care simbolurile c1, c2, … intervin o


singură dată:

⎧ c1 ⊕ a 3 ⊕ a 5 ⊕ ..... ⊕ a n = 0

⎪c 2 ⊕ a 3 ⊕ a 6 ⊕ ..... ⊕ a n = 0


⎨ .

⎪ .

⎪⎩ c m ⊕ a m+1 ⊕ ....... ⊕ a n = 0

Ştiind că 0 ⊕ 0 = 0 şi 1 ⊕ 1= 0 se vor determina simbolurile de


control c1, c2,...,cm.

La recepţionarea cuvintelor de cod v', acestea se introduc într-un


dispozitiv pentru a calcula corectorul, utilizând relaţia:

⎡ c1' ⎤
⎡e m ⎤ ⎢ ' ⎥
⎢. ⎥ ⎢c2 ⎥
Z = H v ,T = ⎢ ⎥ = [h1...... h n ] ⎢ . ⎥
⎢ e2 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ . ⎥
⎣ e1 ⎦ ⎢a ' ⎥
⎣ n⎦

În mod analog calculului anterior şi ţinând seama de structura


matricii de control H se va obţine:

⎧ e1 = c1' ⊕ a '3 ⊕.....⊕ a 'n



⎨ .................
⎪e
⎩ m = c m ⊕ a m +1 ⊕...+ a n
' ' '

Numărul binar (em.....e2,e1) se decodifică şi se obţine poziţia erorii,


conform relaţiei de mai sus.
Vom particulariza pentru k=4, numărul simbolurilor de informaţie.
Din relaţia: 2m ≥ m + k + 1, avem că 2m ≥ 5 + m, de unde se va
obţine m ≥ 3. Considerând m=3 vom avea n = m + k = 7.
Sisteme de calcul şi operare

Matricea de control este: H3,7=[h1h2.....h7], iar vectorul cuvânt de


cod va fi: v=[c1c2a3c4a5a6a7].
Aplicând relaţia HvT=0 vom avea:

⎡ c1 ⎤
⎢ ⎥
⎢c2 ⎥
⎡0 0 0 1111⎤⎢a 3 ⎥
⎢0 11 0 0 11⎥⎢ ⎥ = 0
⎢ ⎥⎢c4 ⎥
⎢⎣1 0 1 0 1 0 1⎥⎦⎢a 5 ⎥
⎢ ⎥
⎢a 6 ⎥
⎢a 7 ⎥
⎣ ⎦

Prin efectuarea calculelor se obţine:

⎧c4 ⊕ a5 ⊕ a 6 ⊕ a 7 = 0 ⎧c4 = a5 ⊕ a 6 ⊕ a 7
⎪ ⎪
⎨c 2 ⊕ a 3 ⊕ a 6 ⊕ a 7 = 0 ⇒ ⎨c 2 = a 3 ⊕ a 6 ⊕ a 7
⎪c ⊕ a ⊕ a ⊕ a = 0 ⎪c = a ⊕ a ⊕ a
⎩ 1 3 5 7 ⎩ 1 3 5 7

Calcularea corectorului la recepţie se obţine din relaţia:

⎡ c1' ⎤
⎢ ⎥
⎢c '2 ⎥
⎢ ⎥
⎡e 4 ⎤ ⎡0 0 0 1 1 1 1⎤ ⎢ a '3 ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ' ⎥
⎢e 2 ⎥ = ⎢0 1 1 0 0 1 1⎥ ⎢c 4 ⎥
⎢⎣ e1⎥⎦ ⎢⎣1 0 1 0 1 0 1⎥⎦ ⎢ ' ⎥
⎢a 5 ⎥
⎢ ' ⎥
⎢a 6 ⎥
⎢ ' ⎥
⎢⎣a 7 ⎥⎦
Elemente de teoria transmisiei informaţiei

Efectuând calculele se va obţine:


⎧e4 = c '4 ⊕ a '5 ⊕ a '6 ⊕ a '7

⎨e2 = c '2 ⊕ a '3 ⊕ a '6 ⊕ a '7
⎪ e = c' ⊕ a ' ⊕ a ' ⊕ a '
⎩ 1 1 3 5 7

Combinaţia binară (e4,e2,e1) decodificată indică poziţia eronată.


Codul Hamming poate corecta erorile simple însă nu poate corecta nici o
eroare dublă.
Exemplul 2.
Să se determine secvenţele codului Hamming corespunzătoare
cifrelor zecimale 7,8 şi 9 ştiind că în codificarea primară s-a folosit codul
8421. Este respectată condiţia distanţei minime?
Rezolvare
Pentru calcularea cifrelor de control c1,c2,c4 din secvenţele codului
Hamming (tabelul 3.6) se utilizează relaţiile obţinute anterior.
Secvenţele de cod
Tabelul 3.6

Cifra Secvenţele codului


zecimală
8421 Hamming (calculate)
a3 a5 a6 a7 c1 c2 a3 c4 a5 a6 a7
7 0 1 1 1 0 0 0 1 1 1 1
8 1 0 0 0 1 1 1 0 0 0 0
9 1 0 0 1 0 0 1 1 0 0 1

Deoarece codul Hamming detectează şi corectează o singură eroare


va fi necesar ca Dmin ≥ 3. Vom calcula distanţa minimă în raport cu
secvenţele codului Hamming obţinute:
D(v7,v8)=(0 ⊕ 1) + (0 ⊕ 1) + (0 ⊕ 1) + (1 ⊕ 0) + (1 ⊕ 0) +
+ (1 ⊕ 0) + (1 ⊕ 0) = 7
D(v7,v9)=3
D(v8,v9)=4
Condiţia distanţei minime de cod este respectată, Dmin =3.
σ
Sisteme de calcul şi operare

Exemplul 3

Fie mesajul recepţionat 1111000.


a) Ştiind că reprezintă o secvenţă a codului Hamming, să se verifice
corectitudinea lui. În caz de eroare, presupunând că o singură poziţie este
eronată, să se asigure corecţia.
b) Cărei cifre zecimale îi corespunde mesajul corectat, dacă într-o
primă codificare a fost folosit codul 8421.

Rezolvare
Apelând la relaţiile:
⎧e4 = c '4 ⊕ a '5 ⊕ a '6 ⊕ a '7

⎨e2 = c '2 ⊕ a '3 ⊕ a '6 ⊕ a '7
⎪ e = c' ⊕ a ' ⊕ a ' ⊕ a '
⎩ 1 1 3 5 7

vom calcula (e4, e2, e1), având:


c'1 c'2 a'3 c'4 a'5 a'6 a'7

1 1 1 1 0 0 0

⎧ e4 = 1 ⊕ 0 ⊕ 0 ⊕ 0 = 1

⎨e2 = 1 ⊕ 1 ⊕ 0 ⊕ 0 = 0
⎪e = 1 ⊕ 1 ⊕ 0 ⊕ 0 = 0
⎩ 1
Deoarece (e4,e2,e1) ≠ (0,0,0), mesajul recepţionat este eronat. Dacă o
singură cifră binară a mesajului a fost modificată, atunci se poate face
corecţia; cunoscând poziţia eronată prin decodificarea lui (e4,e2,e1)= (100)2 ⇒
⇒ (4)10 ⇒ cifra c'4 devine 0.
Mesajul corect este 1110000 ⇒ acesta corespunde cifrei zecimale 8.
Aceasta s-a obţinut prin decodificarea cifrelor binare: a'3 a'5 a'6 a'7.

3.5.3 Coduri liniare cu control încrucişat.

Un alt model de cod binar utilizat frecvent constă din structurarea


informaţiei pe blocuri de secvenţe de cod şi ataşarea unui bit de control, o
dată fiecărei secvenţe şi altă dată la fiecare coloană ce conţine biţii de
acelaşi rang din toate secvenţele.
Elemente de teoria transmisiei informaţiei

Un astfel de control se numeşte prin paritate încrucişată. Blocul de


informaţie codificată ce se va emite este:

Simboluri
Controlul liniei
informaţionale
a11 a12 ....a1n l1
............ .
............ .
am1 am2 ....amn lm
Control coloană c1 c2.......cn

unde:
⎧ n
⎪⎪ ⊕ a ik realizează paritatea pară
k =1
li = ⎨ n
⎪ a ik ⊕ 1 realizează paritatea impară
⎪⎩⊕
(i =1, m )

k =1

şi se numeşte paritate laterală sau transversală, iar

⎧m
⎪⎪⊕ a kj realizează paritatea pară
k =1
cj = ⎨ m
⎪ a kj ⊕ 1 realizează paritatea impară
⎪⎩ ⊕
(j=1,n )

k =1

şi se numeşte simbol de paritate longitudinală.

Controlul erorilor pe principiul parităţii încrucişate poate conduce la:


ƒ depistarea erorilor atât prin paritate transversală cât şi prin
paritate longitudinală;
ƒ depistarea numai prin paritate transversală sau longitudinală;
ƒ erorile să nu fie depistate.
Sisteme de calcul şi operare

Blocul de informaţie ce se recepţionează va fi:

Simboluri informaţionale Controlul liniei


a'11 a'12 …………..a'1n l'1
a'21 a'22 …………..a'2n l'2
……………………… .
………………………. .
a'm1 a'm2 …………..a'mn l'm
Control coloană c'1 c'2 ………………c'n l'm+1 (c'n+1)

La recepţie se vor calcula:

n
lic = ⊕ a ik [ ⊕ 1] , i = 1, m
k =1

şi
m
c jc = ⊕ a kj [⊕1] , j = 1, n
k=1

folosind acelaşi tip de paritate ca la emisie.

Comparând parităţile recepţionate cu cele calculate, se poate afirma


că blocul de informaţie a fost transmis:
a) fără erori, dacă l'i = l ic pentru ∀ i = 1, m şi c'j = cjc pentru
∀ j = 1, n ;
b) cu erori, dacă ∃ i∈{1, 2,…, m} astfel încât l'i ≠ lic sau
∃ j∈{1, 2,…, n} astfel încât c'j ≠ cjc.

Exemplul 4

Ştiind că într-o transmisie de date se utilizează detectarea erorilor


prin paritate încrucişată, care este blocul de informaţie ataşat emisiei cifrelor
zecimale de la 4 la 9, codificate primar cu ajutorul codului EXCES 3.
O secvenţă este reprezentată prin codificarea unei singure cifre zecimale.
Elemente de teoria transmisiei informaţiei

Rezolvare
Informaţia transmisă
Simbolurile informaţionale
Cifra zecimală Secvenţa EXCES 3 Control linie
x1 x2 x3 x4
4 S1 0 1 1 1 1
5 S2 1 0 0 0 1
6 S3 1 0 0 1 0
7 S4 1 0 1 0 0
8 S5 1 0 1 1 1
9 S6 1 1 0 0 0
Control coloană 1 0 1 1 1

Exemplul 5.
Cunoscând că a fost transmis un bloc de date în condiţiile
exemplului 4 şi s-a recepţionat:

0 1 1 0 1
1 0 0 0 1
1 0 0 1 1
1 0 1 0 0
1 0 1 1 1
1 1 0 0 0
1 0 1 1 1
Să se verifice corectitudinea recepţiei.

Informaţia recepţionată
x'1 x'2 x'3 x'4 l'i li calculat
S1 0 1 1 0 1 0
S2 1 0 0 0 1 1
S3 1 0 0 1 1 0
S4 1 0 1 0 0 0
S5 1 0 1 1 1 1
S6 1 1 0 0 0 0
C'j 1 0 1 1 1 1
Cj calculat 1 0 1 0 0
Sisteme de calcul şi operare

Avem: l'1 ≠ l1 calculat şi l'3 ≠ l3 calculat;


c'4 ≠ c4 calculat şi c'5 ≠ c5 calculat.
Erorile sunt în secvenţele: S1 şi S3 pe poziţiile x'4 şi l'1.

3.5.4 Coduri polinomiale ciclice

Codurile ciclice sunt coduri bloc în care cele n+1 simboluri ce


formează o secvenţă de cod sunt considerate ca fiind coeficienţii unui
polinom de grad n şi anume:
M(x) = anxn +an-1xn-1 +……+a0
unde ai ∈{0, 1} , i = 1, n .
Codurile polinomiale ciclice au proprietatea: dacă M = (an,an-1,....a0)
este un cuvânt cu sens, atunci orice permutare ciclică a simbolurilor sale
este un cuvânt cu sens M1 = (ai,ai-1,....,a0anan-1,....,ai+1). Mulţimea tuturor
cuvintelor formează o algebră, iar mulţimea cuvintelor cu sens formează un
ideal.
În cazul utilizării codurilor polinomiale ciclice, mesajului M ce se va
transmite i se asociază polinomul M(x) şi apoi printr-un algoritm de
codificare se transformă într-un polinom T(x), astfel încât T(x) să fie
multiplul al polinomului G(x), numit polinomul de generare.
Pentru realizarea codificării se pot utiliza algoritmul de înmulţire sau
algoritmul de împărţire.
Folosind algoritmul de înmulţire: T(x)=M(x)⋅G(x) (operaţiile de
înmulţire şi adunare ale coeficienţilor polinoamelor se fac în modulo 2) nu
se obţine o separare a simbolurilor redundante de cele informaţionale, acesta
fiind principalul motiv pentru care se preferă algoritmul de împărţire, deşi
este ceva mai complicat.
Algoritmul de codificare prin împărţire este:
Ö Fie mesajul M: (an,an-1,.....,a0), care cuprinde n+1 cifre binare
informaţionale. Acestuia i se asociază un polinom în
nedeterminata x: M(x) = anxn +an-1xn-1 +……+a0 (ai ∈{0, 1},
i = 1, n );
Ö Se alege polinomul G(x) de grad r, acesta fiind polinomul de
genarare al codului: G(x) = brxr + br-1xr-1 +…..+ b0, bj ∈{0, 1},
j = 1, r ;
r r
Ö Înmulţind M(x) cu x se va obţine M'(x)=M(x)⋅x
Elemente de teoria transmisiei informaţiei

Ö Se împarte M'(x) la G(x):

M ′(x) R(x)
= C(x) ⊕
G(x) G(x)

Gradul polinomului R(x) va fi mai mic, cel mult egal cu r-1.


Coeficienţii polinomului R(x), de grad r-1, constituie simbolurile de control
asociate mesajului informaţional.
¾ Se adună R(x) cu M'(x) obţinându-se polinomul T(x) = M' (x) ⊕
⊕ R(x). Coeficienţii polinomului T(x) constituie mesajul ce se va
transmite:
T: (anan-1....a0cr-1.....c0)
care conţine în poziţiile semnificative cele n+1 simboluri
informaţionale iar în poziţiile mai puţin semnificative cele r
simboluri de control.
Polinomul ataşat mesajului transmis este un multiplu al polinomului
de generare. Avem:
T(x) M ′(x) ⊕ R(x) M ′(x) R(x)
= = ⊕
G(x) G(x) G(x) G(x)
M ′(x) M ′(x) R(x)
Înlocuind prin relaţia = C(x) ⊕ se va obţine:
G(x) G(x) G(x)
T(x) R(x) R(x)
= C(x) ⊕ ⊕ = C(x)
G(x) G(x)
1 44244G(x)
3
=0

Cu alte cuvinte, polinomul T(x) este divizibil prin G(x). Această


proprietate este folosită drept criteriu pentru detecţia erorilor.

La recepţie, dacă mesajul recepţionat este T', acestuia i se asociază


polinomul T'(x). Putem scrie că T'(x)=T(x) ⊕ E(x), unde E(x) este
polinomul erorilor. Aplicând criteriul de detecţie a erorilor, obţinem:
T ′ (x) T(x) ⊕ E(x) T(x) E(x) E(x)
= = ⊕ = C(x) ⊕
G(x) G(X) G(x) G(x) G(x)
Sisteme de calcul şi operare

Se observă că dacă E(x) este multiplu al lui G(x), mesajul


recepţionat este validat, deşi conţine erori. Dacă E(x) nu este multiplu al lui
G(x) atunci eroarea este sesizată.
Prin această metodă sunt determinate toate pachetele de erori de
lungime mai mică decât gradul lui G(x)+1. Se numeşte pachet de erori o
succesiune de simboluri, corecte sau eronate, în care primul şi ultimul
simbol sunt eronate.

Exemplul 6

Mesajul binar M: 1110101 se transmite după codificarea prin


polinomul de generare G(x) = x3 + x + 1. Care este reprezentarea binară a
mesajului transmis?

Rezolvare.
Mesajului binar M : 1110101 i se asociază polinomul M(x):
6 5 4 2
♦ M(x) = x + x + x + x + 1;
3
♦ M'(x) = M(x) • x ; deoarece gradul lui G(x) este 3.
9 8 7 5 3
♦ M'(x) = x + x + x + x + x
♦ Se împarte M'(x) la G(x):

M ′(x) R(x)
= C(x) ⊕
G(x) G(x)

x9 + x8 + x7 + x5 + x3 |x3 + x + 1
|---------
9 7 6
x + x +x |x6 + x5 + 1
-----------------------
/ x8 + x6 + x5 + x3
x8 + x6 + x5
------------------------
/ / / x3
x3 + x + 1
-----------
/ x+1
(Adunarea şi scăderea în modulo 2 sunt echivalente)
R(x) = x + 1
♦ Se obţine polinomul T(x) = M'(x) ⊕ R(x)
T(x) = x9 + x8 + x7 + x5 + x3 + x + 1
Elemente de teoria transmisiei informaţiei

Coeficienţii acestui polinom reprezintă mesajul ce se va transmite:

Exemplul 7
Ştiind că mesajul recepţionat T': 1010101011 a fost transmis după
codificarea prin polinomul de generare G(x) = x3 + x + 1, să se verifice
corectitudinea lui.

Rezolvare.
Mesajului recepţionat T' i se asociază polinomul T'(x) = x9 + x7 +
+ x5 + x3 + x + 1.
Aplicând criteriul de detecţie a erorilor, obţinem:

T′ (x) T(x) ⊕ E(x) E(x)


= = C(x) ⊕
G(x) G(x) G(x)

x9 + x7 + x5 + x3 + x + 1 | x3 + x + 1
|--------------------
x9 + x7 + x6 | x6 + x3 + x2 + x + 1
----------------------------------------
/ / x6 + x5 + x3 + x + 1
x6 + x4 + x3
------------------------------
/ x5 + x4 + x + 1
x5 + x3 + x2
--------------------------
/ x4 + x3 + x2 + x + 1
x4 + x2 + x
---------------------
/ x3 + 1
x3 + x + 1
-----------------
/ / x /
Aşadar, mesajul recepţionat este eronat deoarece E(x) ≠ 0.

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