Documente Academic
Documente Profesional
Documente Cultură
5
14
00101
01110
11
20
01011
10100
5
14
11011
10010
11
20
10101
01100
4
3
11100
00011
11001
7 +
00100
4
11101
3
In cazul numerelor de semne contrare, rezultatul este ntotdeauna corect,
deoarece nu poate apare depire de capacitate.
Din exemplele de mai sus rezult urmtoare regul general de adunare a
dou numere reprezentate n C2: Se adun numerele bit cu bit, inclusiv biii de
semn, care sunt tratai la fel cu biii de mrime i se ignor eventualul transport de
la bitul de semn.
Dac rezultatul este mai mare n valoare absolut dect valoarea maxim
care poate fi reprezentat n registru, apare o depire, deci rezultatul este in-
corect. La apariia depirii, UAL trebuie s semnaleze acest fapt, astfel nct rezultatul s nu fie utilizat.
Se observ c depirea poate apare indiferent dac exist sau nu transport de la cifra de semn. Pentru detectarea apariiei depirii, se poate aplica urmtoarea regul simpl: La adunarea a dou numere de acelai semn, a aprut o
depire dac i numai dac rezultatul are semn contrar semnului numerelor.
1.6.3.2. Scderea numerelor reprezentate n C2
Scderea a dou numere reprezentate n C2 se efectueaz fie prin metoda
scderii directe, dac dispozitivul de adunare dispune de scztoare elementare,
fie prin metoda adunrii numrului negativ corespunztor, reprezentat n C2, dac
dispozitivul pe care trebuie s se execute aceast operaie dispune numai de sumatoare elementare. Deoarece, n general, unitatea de calcul nu dispune de scztoare elementare, la scdere se aplica urmtoarea regul: Pentru scderea
unui numr (scztor) dintr-un altul (desczut), se calculeaz n primul rnd complementul scztorului (care se obine prin schimbarea semnului scztorului) dup care se adun deczutul cu complementul scztorului.
S considerm urmtoarele exemple, n care s-a notat cu D desczutul, cu
S scztorul, iar cu S' complementul scztorului S.
00111
D
7
00100
4
S
11100
4
S
00111 +
11100
4
00011
3
Rezultatul este corect.
01011
+ 11
D
10111
-9
S
01001
+9
S
D
S
+7 +
01011
+ 11 +
01001
+9
10100
+ 20
Rezultatul este incorect deoarece s-a depit capacitatea de reprezentare pe 4 cifre binare (bii).
Regula pentru detectarea depirii poate fi enunat astfel: La scderea a
dou numere de semne contrare apare depire dac i numai dac rezultatul
are acelai semn cu scztorul (S).
D
S
re, stabilit prin proiectare, nu mai poate fi schimbat. Pentru transformarea tuturor numerelor n acest format, trebuie executate o serie de operaii de scalare sau
de deplasare, atand numerelor factori de scal. Evidena acestora trebuie realizat prin program, ceea ce mrete timpul de calcul. Alte reprezentri care au
fost propuse constau n pstrarea logaritmilor numerelor i executarea nmulirii
prin adunarea logaritmilor, sau utilizarea unei perechi de ntregi ( x, y ) pentru a reprezenta fracia x / y .
O soluie mai avantajoas este utilizarea unei tehnici de scalare automat,
cunoscut sub numele de reprezentare n virgul mobil - VM (numit i reprezentare n virgul flotant - floating point). In acest caz, factorul de scal devine o
parte a cuvntului din calculator, poziia virgulei variind pentru fiecare numr n
mod automat.
1.7.1. Principii
In general, un numr N se poate reprezenta n format tiinific sub forma
urmtoare.
N M BE
(1.19)
Un numr reprezentat n format tiinific are dou componente. Prima component este mantisa (M), care indic valoarea exact a numrului ntr-un anumit
domeniu, fiind reprezentat de obicei ca un numr fracionar cu semn. A doua
component este exponentul ( E ), care indic ordinul de mrime al numrului. In
expresia de sus B este baza n care este reprezentat numrul.
De exemplu numrul zecimal 23,6875 poate fi reprezentat n format tiinific prin una din urmtoarele posibiliti:
23,6875 100 236,875 10 -1 = 0,236875 10 2
In binar numrul corespunztor este 10111,1011 care, n format tiinific poate reprezentat astfel:
10111,1011 20 = 10111101,1 2-3 = 1,01111011 24
Acest mod de scriere a numerelor este preluat i de reprezentarea VM.
De-a lungul timpului au existat, la diferite familii de calculatoare, diferene
considerabile n modul de reprezentare a numerelor n VM i de execuie a operaiilor corespunztoare. Aceste diferene se refereau la numrul de bii alocai pentru
exponent i pentru mantis, la gama exponenilor, la modurile de rotunjire i la
operaiile executate la apariia unor condiii de excepie, ca depirea superioar
sau cea inferioar. Pentru a facilita portabilitatea programelor de la un calculator la
altul i pentru a ncuraja dezvoltarea programelor complexe orientate pe calcule
numerice, Societatea de Calculatoare a organizaiei IEEE (Institute of Electrical
and Electronics Engineers) a elaborat standardul IEEE 754, pentru reprezentarea numerelor n VM i pentru operaii aritmetice n aceast reprezentare. Acest
standard a fost publicat n 1985.
Standardul era destinat n primul rnd microprocesoarelor i microcalculatoarelor, unde unii productori puneau la dispoziie doar posibiliti limitate pentru
calcule numerice. Ca rezultat al acestui standard, au fost dezvoltate circuite sau
procesoare care implementeaz standardul. Astfel, cele mai multe uniti de calcul
n VM i coprocesoare matematice se conformeaz acestui standard.
Reprezentarea numerelor n virgul mobil poate fi memorat ntr-un cuvnt de memorie (patru octei), care este divizat n trei cmpuri, cte unul pentru
fiecare dintre urmtoarele elemente: semn, mantis i exponent. Baza este con-
0
Parte fracionar
Tabelul 1.8
Nr. bii mantis
Exponent maxim
Exponent minim
Deplasament
Simpl
precizie
23
+127
-126
127
Dubl precizie
52
+1023
-1022
1023
Standardul IEEE 754 rezerv dou valori ale caracteristicii pentru cazuri
speciale. Aceste valori sunt
255 1111 1111
i
0 0000 0000
In tabelul 1.9 se prezint semnificaia acestor valori n funcie de valoarea mantisei.
Tabelul 1.9
Caracteristica
0=0000 0000
0=0000 0000
255=1111 1111
255=1111 1111
1<=C<=254
Mantisa
0
0
0
0
0
Semnificaie
0
nr. denormalizat
NaN
nr. normalizat
n
n/ 0
n/0
N (2 2 23 ) 2127 3,4 10 38
Numrul cel mai mic, n valoare absolut care poate fi reprezentat n
simpl precizie, trebuie s aib exponentul i mantisa cele mai mici, deci:
1,18 10 38 N 3,4 10 38
Cel mai mare numr denormalizat va fi
0 0000 0000 111 1111 1111 1111 1111 1111
i va avea deci mantisa
M=0,111 1111 1111 1111 1111 1111=1 2 23
Numrul corespunztor va fi deci:
N (1 2 23 ) 2 126 1,18 10 38
Cel mai mic numrul denormalizat va fi
0 0000 0000 000 0000 0000 0000 0000 0001
Acesta va avea deci mantisa
M=1 2 23
iar numrul va fi
N=1 2 23 2126 1 2149 1,4 10 45
Punnd cap la cap toate aceste date rezult gama numerelor reprezetabile n VM (fig. 1.1)
D e pas ire s up erio ara
ne ga tiv a
-1 ,1 8 x 1 0
+ 1 ,1 8 x 1 0
-3 8
-3 ,4 x 1 0
+ 38
-1 ,4 x 1 0
-4 5
+ 1 ,4 x 1 0
+ 45
+ 3 ,4 x 1 0
+ 38
Fig. 1.1
In simpl precizie, se obine o precizie de reprezentate a numerelor de
6-7 cifre semnificative. Dac aceast precizie nu este suficient, se poate opta pentru dubl precizie, cnd precizia de reprezentare a numerelor crete la
15-16 cifre semnificative.
In dubl precizie gama numerelor care pot fi reprezentate este cuprins
ntre 2,23 10 308 i 1,79 10 308 .
O alt caracteristic a standardului IEEE 754 cu implicaii asupra circuitelor
din unitatea aritmetico-logic (UAL) este regula de rotunjire. In urma operaiilor
efectuate ntre dou numere n VM, de obicei rezultatul nu poate fi reprezentat
n mod exact ca un alt numr n VM. Standardul specific patru moduri de rotunjire: rotunjire spre 0 , rotunjire spre , rotunjire spre i rotunjire la cel mai
apropiat numr reprezentabil. Ultimul mod de rotunjire este cel implicit i este prevzut pentru situaiile n care numrul se afl n intervalului dintre dou reprezentri n VM.
Standardul IEEE 754 definete cinci tipuri de excepii: depire inferioar,
depire superioar, mprire la zero, rezultat inexact i operaie invalid. In mod
implicit, la apariia unei asemenea excepii, este setat un indicator i calculele continu. Standardul recomand ca implementrile s prevad un bit de validare
pentru fiecare excepie. Dac apare o excepie cu bitul de validare setat, este
apelat o rutin de tratare a excepiei.
Excepiile de depire inferioar, depire superioar i mprire la zero
sunt prevzute la majoritatea sistemelor de calcul n VM. Excepia de rezultat inexact apare atunci cnd rezultatul unei operaii trebuie rotunjit. Aceasta nu este o
condiie excepional, deoarece apare n mod frecvent i deci, validarea rutinei de
tratare a acestei excepii poate avea un impact semnificativ asupra performanei.
1.8. Coduri
1.8.1. Coduri binar-zecimale
La introducerea datelor n memoria calculatorului nu se ine seama dac un anumit ir de caractere numerice reprezint un numr sau un alt gen
de informaie (de exemplu un numr de telefon). Pentru acest motiv cifrele
sistemului zecimal sunt iniial codificate ntr-un anumit cod. Ulterior, dac acel
ir de caractere reprezint un numr, are loc codificarea acestuia n C2 sau
n virgul mobil. Pentru codificarea fiecreia din cele 10 cifre, se utilizeaz 4 bii.
Astfel din cele 16 variante posibile, se utilizeaz numai 10 combinaii 6 dintre
acestea rmnnd neutilizate. Din numeroasele coduri posibile se utilizeaz
practic doar o mic parte.
Codurile utilizate se mpart n dou categorii: coduri ponderate i neponderate.
In cazul codurilor ponderate, cifrele zecimale sunt exprimate printr-o
combinaie de 4 cifre binare. Fiecrea dintre aceste cifre i se asociaz o
anumit pondere, care poate fi pozitiv au negativ.
Considerm un cod ale crui ponderi sunt p0 , p1 , p2 , p3 . Codul format din
biii b0 , b1 , b2 , b3 va reprezenta o cifr zecimal a crei valoare este dat de relaia
N p3b3 p2 b2 p1b1 p0 b0
(1.24)
Codul care are ponderile prezentate mai sus se numete p3 p2 p1 p0 . In
tabelul 1.10 se prezint exemple de coduri ponderate de 4 bii mai des utilizate.
Tabelul 1.10. Coduri binar-zecimale ponderate de 4 bii.
Nr. zecimal
0
1
2
3
4
5
8421
2421
6423
84 21
0000
0001
0010
0011
0100
0101
0000
0001
0010
0011
0100
1011
0000
0101
0010
1001
0100
1011
0000
0111
0110
0101
0100
1011
6
7
8
9
0110
0111
1000
1001
1100
1101
1110
1111
0110
1101
1010
1111
1010
1001
1000
1111
Exemple
10018421 8 1 4 0 2 0 1 1 9
10018421 8 1 4 0 (2) 0 (1) 1 7
Deoarece codul unei cifre zecimale este identic cu valoarea n binar a
acelei cifre, codul 8421 se mai numete cod binar-zecimal natural (NBCD Natural Binary Coded Decimal).
In codul 2421, numit i cod Aiken , primele 5 cifre zecimale (0 - 4) au
aceeai exprimare ca i n codul 8421. Cifrele zecimale (5 9) se obin prin
complementarea primelor cinci cifre.
Codurile care au aceast proprietate se numesc coduri autocomplementare.
Un cod este autocomplementar dac cuvntul de cod al complementului fa de 9
al cifrei N (deci 9 - N) se poate obine din codul cifrei N, prin complementarea fiecruia din cei 4 bii. De exemplu, codul 8421 nu este autocomplementar, iar
codurile 2421, 642 3 , 84 21 sunt autocomplementare.
Trebuie s remarcm faptul c dac un ir de caractere numerice reprezint
un numr acesta este reprezentat n memoria calculatorului prin numrul binar corespunztor, iar dac acesta reprezint un ir de caractere alfanumerice vor avea
alt reprezentare. Astfel numrul 13 este codificat sub forma
13 1101
dac reprezint numr i sub forma
13 0001 0011
dac reprezint o informaie alfanumeric. In acest caz s-a utilizat pentru codificare codul 8421.
Codurile neponderate pot avea un numr mai mare de 4 bii. Codurile cele
mai des utilizate sunt prezentate n tabelul 1.11
Tabelul 1.11. Coduri binar-zecimale neponderate.
Nr. zecimal
0
1
2
3
4
5
6
7
8
9
Exces 3
2 din 5
Gray
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
00011
00101
00110
01001
01010
01100
10001
10010
10100
11000
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
Codul Exces 3 este autocomplementar i deriv din codul 8421 (BCD) prin
adugarea la fiecare cifr a valorii 3. Acest cod, poate face distincie ntre lipsa
unei informaii nscrise ntr-un registru sau locaie de memorie i nscrierea valorii
zero. Astfel codul 0000 reprezint lipsa unei informaii, iar 0011 reprezint codificarea cifrei zero.
Cod
0
1
2
3
4
5
6
7
8
9
0 0000
1 0001
1 0010
0 0011
1 0100
0 0101
0 0110
1 0111
1 1000
0 1001
ei.
1.8.3. Coduri corectoare de erori
Exist coduri mai complexe, numite coduri corectoare de erori, care permit
att detectarea ct i corectarea biilor eronai n timpul transmisiei. Aceste coduri sunt utilizate n cazul n care retransmisia informaiei nu este posibil, sau
necesit un timp prea mare.
Richard Hamming a propus o metod practic de corectare a erorilor care
va fi prezentat n continuare lund n considerare un caz simplu. Metoda Hamming prevede ca pentru 4 bii de semnal util s se adauge nc 3 bii de paritate.
Amplasarea acestor bii este prezentat n Fig. 1.2. Biii de paritate sunt 1,2,4, ceilali fiind biii semnalului util.
1
Fig.1.2
Fiecare bit de paritate verific anumii bii de semnal dup cum rezult mai
jos:
- Bitul 1 de paritate verific biii 3, 5, 7.
- Bitul 2 de paritate verific biii 3, 6, 7.
- Bitul 4 de paritate verific biii 5, 6, 7.
Dup cu rezult, bitul 5 este verificat de biii 1 i 4 adic (1+4 = 5), bitul 6 este
verificat de biii 2 i 4 - (2+4 = 6) i bitul 7 este verificat de biii 1, 2 i 4 (1+2+4=7).
Dac transmiterea cifrei zecimale se realizeaz corect, toi biii de paritate
verific n mod corect paritatea.
S presupunem de exemplu, c a aprut o eroare la transmiterea bitului
de informaie din poziia 6. Codul recepionat va fi 0100111 n loc de 0100101 .
Se verific biii de paritate, cu urmtoarele rezultate:
- Bitul 1 verific paritatea (poziiile 1, 3, 5, 7 conin doi bii de 1)
- Bitul 2 nu verific paritatea (poziiile 2, 3, 6, 7 conin trei bii de 1)
- Bitul 4 nu verific paritatea (poziiile 4, 5, 6, 7 conin trei bii de 1)
Bitul incorect trebuie s fie unul din biii testai de biii de paritate 2 i 4. Bitul transmis eronat este unul din cei care se afl n ambele liste prezentate mai
sus, deci poate fi bitul 6 sau 7. Deoarece bitul 1 verific paritatea, rezult c i bitul 7 este corect. Bitul eronat este deci bitul 6 i valoarea acestui bit trebuie
complementat. In acest fel, eroarea poate fi corectat.
In mod practic, pentru determinarea bitului eronat se calculeaz suma
biilor de paritate care nu se verific. Aceast sum reprezint poziia bitului
eronat. In exemplu considerat, biii de paritate 2 i 4 nu verific paritatea, deci bitul
eronat este bitul 6. Dup cum se observ acest cod poate corecta un singur bit
eronat.
b3b2 b1b0
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
b6b5b4
000
NULL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
001
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
010
!
"
#
$
%
&
(
)
*
+
.
/
011
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
100
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
101
p
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
110
a
b
c
d
e
f
g
h
i
i
k
1
m
n
o
111
p
q
r
s
t
u
v
w
x
y
z
{
I
}
DEL
1.8.4.2. Unicode
Unicode este un set de caractere specificat de un consoriu de productori importani de calculatoare din SUA, definit cu scopul de a elimina dificultile datorate utilizrii seturilor de caractere codificate diferit n programele
elaborate pentru mai multe limbi. Unicode este compatibil cu standardul
10646, denumit n mod curent UCS (Universal Character Set). UCS a fost
primul set de caractere standardizat elaborat cu scopul de a include n final
toate caracterele utilizate n toate limbile scrise din lume, ca i alte simboluri,
cum sunt cele matematice. UCS este utilizat att pentru reprezentarea intern a datelor n sistemele de calcul, ct i pentru comunicaiile de date.