Sunteți pe pagina 1din 14

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

BAZELE ARITMETICE ALE CALCULATOARELOR (II)

1. Scopul lucrrii
Lucrarea prezint reprezentarea numerelor n virgul mobil, standardul IEEE 754 pentru reprezentarea n virgul mobil, coduri binar-zecimale, coduri detectoare de erori, coduri corectoare de erori i coduri alfanumerice.

2. Consideraii teoretice
2.1. Reprezentarea numerelor n virgul mobil
2.1.1. Principii de reprezentare a numerelor n virgul mobil n cazul reprezentrii n forma cu virgul fix, poziia virgulei, stabilit prin proiectare, nu mai poate fi schimbat, cu toate c virgula nu mai este reprezentat fizic n calculator. Dac virgula este amplasat dup cifra de semn, se lucreaz cu numere fracionare subunitare. Deoarece nu toate numerele sunt subunitare, pentru a le aduce la aceast form trebuie executate o serie de operaii de scalare (multiplicare cu un anumit factor de scal) sau deplasare, atand numerelor factori de scal. Evidena acestora trebuie realizat prin program, motiv pentru care acestea se complic. Aceast dificultate se poate rezolva utiliznd reprezentarea n virgul mobil (virgul flotant). n acest caz, factorul de scal devine o parte a cuvntului din calculator, poziia virgulei variind pentru fiecare numr n mod automat, ceea ce conduce la simplificarea programelor. Un numr reprezentat n virgul mobil (VM) are dou componente. Prima component este mantisa, 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, care indic ordinul de mrime al numrului. Considernd un numr N, reprezentarea acestuia n VM poate avea forma urmtoare: N = M B E unde M este mantisa, B este baza sistemului de numeraie, iar E este exponentul. Aceast reprezentare poate fi memorat ntr-un cuvnt binar cu trei cmpuri: semnul, mantisa i exponentul. De exemplu, presupunnd un cuvnt de 32 de bii, o asignare posibil a biilor la fiecare cmp poate fi urmtoarea:
31 30 23 22 S Exponent 0 Mantis

(2.1)

Aceasta este o reprezentare n mrime i semn, deoarece semnul are un cmp separat fa de restul numrului. Cmpul de semn const dintr-un bit care indic semnul numrului: 0 pentru un numr pozitiv i 1 pentru un numr negativ. Nu exist un cmp rezervat pentru baza B, deoarece aceast baz este implicit i ea nu trebuie memorat, fiind aceeai pentru toate numerele. De obicei, n locul exponentului se reprezint o valoare numit caracteristic, care se obine prin adunarea unui deplasament la exponent, astfel nct s rezulte ntotdeauna o valoare pozitiv. Deci, nu se rezerv un cmp separat pentru semnul exponentului. Caracteristica C este deci exponentul deplasat:

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2. C = E + deplasament (2.2)

Valoarea real a exponentului se poate afla prin scderea deplasamentului din caracteristica numrului. De exemplu, dac pentru caracteristic se rezerv un cmp de 8 bii, valorile caracteristicii pot fi cuprinse ntre 0 i 255. Cu un deplasament de 128 (80h), exponentul poate lua valori ntre 128 i +127, fiind negativ dac C < 128, pozitiv dac C > 128, i 0 dac C = 128. Exponentul este deci reprezentat n exces 128. Reprezentarea cu ajutorul caracteristicii va fi urmtoarea:
31 30 23 22 S Caracteristic 0 Mantis

n acest caz, semnul mantisei este acelai cu semnul numrului. Unul din avantajele utilizrii exponentului deplasat const n simplificarea operaiilor executate cu exponentul, datorit lipsei exponenilor negativi. Al doilea avantaj se refer la modul de reprezentare al numrului zero. Mantisa numrului zero are cifre de 0 n toate poziiile. Exponentul numrului zero poate avea, teoretic, orice valoare, rezultatul fiind tot zero. n unele calculatoare, dac un rezultat are mantisa zero, exponentul este lsat la valoarea pe care o are n momentul respectiv, rezultnd un zero impur. La majoritatea calculatoarelor, se recomand ca numrul zero s aib cel mai mic exponent posibil, rezultnd astfel un zero pur. n cazul exponenilor nedeplasai, exponentul cu cea mai mic valoare este cel mai mic numr negativ pe care l poate avea exponentul, iar n cazul exponenilor deplasai, aceast valoare este 0. Deci, prin utilizarea caracteristicii, reprezentarea n VM a numrului zero este aceeai cu reprezentarea n VF, adic toate poziiile sunt 0. Aceasta nseamn c se pot utiliza aceleai circuite pentru testarea valorii zero. n reprezentarea anterioar, mantisa const din 23 de bii. Dei virgula binar nu este reprezentat, se presupune c ea este aezat naintea bitului c.m.s. al mantisei. De exemplu, dac B = 2, numrul 1,75 poate fi reprezentat sub mai multe forme:
+0,111 21 +0,00111 23 0 0 1000 0001 1000 0011 1110 0000 0000 0000 0000 000 0011 1000 0000 0000 0000 000

Pentru simplificarea operaiilor cu numere n VM i pentru creterea preciziei acestora, se utilizeaz reprezentarea sub forma normalizat. Un numr n VM este normalizat dac bitul c.m.s. al mantisei este 1. Din cele dou reprezentri ale numrului 1,75 ilustrate anterior, prima este cea normalizat. Deoarece bitul c.m.s. al unui numr normalizat n VM este ntotdeauna 1, acest bit nu este de obicei memorat, fiind un bit ascuns la dreapta virgulei binare. Aceasta permite ca mantisa s aib un bit semnificativ n plus. Astfel, cmpul de 23 de bii este utilizat pentru memorarea unei mantise de 24 de bii cu valori ntre 0,5 i 1,0. Cu aceast reprezentare, Figura 2.1 indic gama numerelor care pot fi reprezentate ntr-un cuvnt de 32 de bii. Dac se utilizeaz reprezentarea n C2, se pot reprezenta toate numerele ntregi ntre 231 i 2 1, cu un total de 232 numere diferite. Pentru formatul prezentat, se pot reprezenta numere n urmtoarele domenii (Figura 2.1):
31

Numere negative ntre (12 -24) 2127 i 0,5 2-128 Numere pozitive ntre 0,5 2-128 i (12-24) 2127

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

Figura 2.1. Numere reprezentabile n formate tipice de 32 de bii.

Exist cinci regiuni care nu sunt cuprinse n aceste domenii: Numere negative mai mici dect (12-24) 2127, apariia acestora determinnd o depire superioar negativ Numere negative mai mari dect 0,5 2-128, care determin o depire inferioar negativ Zero Numere pozitive mai mici dect 0,5 2-128, care determin o depire inferioar pozitiv Numere pozitive mai mari dect (12-24) 2127, care determin o depire superioar pozitiv n unele cazuri, bitul ascuns se presupune poziionat la stnga virgulei binare. Astfel, mantisa memorat M va reprezenta de fapt valoarea 1,M. n acest caz, numrul normalizat 1,75 va avea urmtoarea form:
+1.11 20 0 1000 0000 1100 0000 0000 0000 0000 000

Presupunnd c bitul ascuns este poziionat la stnga virgulei binare n formatul prezentat, un numr normalizat diferit de zero reprezint urmtoarea valoare: (1)S (1,M) 2E128 unde S indic bitul de semn. n acest format se pot reprezenta numere n urmtoarele domenii: Numere negative ntre [1 + (1 223)] 2127 i 1,0 2128 Numere pozitive ntre 1,0 2128 i [1 + (1 223)] 2127 Problema care apare n cazul formatului prezentat este c nu exist o reprezentare pentru valoarea zero. Aceasta deoarece valoarea zero nu poate fi normalizat. Totui, reprezentrile n VM cuprind de obicei o combinaie special de bii pentru reprezentarea valorii zero. Depirea superioar apare atunci cnd exponentul depete valoarea maxim, de exemplu peste 127 n cazul formatului prezentat. Depirea inferioar apare atunci cnd exponentul are o valoare negativ prea mic, de exemplu sub 128. n cazul depirii inferioare, rezultatul se poate aproxima cu 0. Coprocesoarele matematice au anumite mecanisme pentru detectarea, semnalarea i tratarea depirii superioare i a celei inferioare. Pentru alegerea unui format n VM trebuie realizat un compromis ntre dimensiunea mantisei i cea a exponentului. Creterea dimensiunii mantisei va conduce la creterea preciziei numerelor, iar (2.3)

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

creterea dimensiunii exponentului va conduce la creterea domeniului numerelor care pot fi reprezentate. Singura cale de a crete att precizia, ct i domeniul numerelor, este de a utiliza un numr mai mare de bii pentru reprezentare. Cele mai multe calculatoare utilizeaz cel puin dou formate, n simpl precizie (de exemplu pe 32 de bii), i dubl precizie (de exemplu pe 64 de bii). 2.1.2. Reprezentarea numerelor n formatul IEEE 754
IEEE (Institute of Electrical and Electronics Engineers) a dezvoltat un standard pentru reprezentarea numerelor n VM i operaiile aritmetice n aceast reprezentare. Scopul era facilitarea portabilitii programelor ntre diferite calculatoare. Standardul IEEE 754 a fost publicat n 1985. Cele mai multe coprocesoare aritmetice, printre care i cele Intel pentru familia de microprocesoare 80x86, se conformeaz acestui standard.

Standardul definete trei formate: Formatul scurt (precizie simpl): 4 octei Formatul lung (precizie dubl): 8 octei Formatul temporar (precizie extins): 10 octei Baza implicit este 2. Formatul scurt i cel lung sunt prezentate n continuare.
Precizie simpl 31 30 S 63 62 S 23 22 C 52 51 C Fracie Fracie 0 0

Precizie dubl

S indic semnul numrului. C reprezint exponentul deplasat, deci caracteristica, pentru care se rezerv 8 bii n formatul scurt i 11 bii n formatul lung. Pentru formatul scurt, deplasamentul este 127 (7Fh), iar pentru formatul lung deplasamentul este 1023 (3FFh). Valorile minime (0) i cele maxime (255, respectiv 2047) ale caracteristicii nu sunt utilizate pentru numerele normalizate, ele avnd utilizri speciale. Bitul ascuns este utilizat i la standardul IEEE 754, dar mantisa este reprezentat ntr-un mod diferit. Ea const dintr-un bit implicit cu valoarea 1 (partea ntreag), virgula binar implicit, i apoi cei 23, respectiv 52 de bii ai fraciei. Dac toi biii fraciei sunt 0, mantisa este 1,0; dac toi biii fraciei sunt 1, mantisa este cu puin mai mic dect 2,0. Deci: 1,0 M < 2,0 Mantisa are valoarea: M = 1,Fracie iar valoarea numrului n precizie simpl (NS), respectiv n precizie dubl (ND) este: NS = (1)s M 2C-127 ND = (1) M 2
-38 s C-1023

(2.4) (2.5)

Gama numerelor care pot fi reprezentate n precizie simpl este cuprins ntre aproximativ 2,210 i 3,41038, iar cea a numerelor reprezentate n precizie dubl este cuprins ntre 2,210-308 i 1,710308. Formatul temporar este utilizat pentru reprezentarea numerelor n cadrul coprocesoarelor aritmetice, n scopul reducerii erorilor datorate rotunjirilor. Acest format este urmtorul:
Precizie extins 79 78 S C 64 63 62 I 0 Fracie

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

Bitul 63 reprezint partea ntreag a mantisei, care nu este implicit. Numerele n formatul temporar nu sunt ntotdeauna normalizate, de aceea nu ncep n mod obligatoriu cu un bit de 1. De aceea acest bit este reprezentat explicit, fiind notat cu I n cadrul formatului. Deplasamentul exponentului este 16.383, iar valoarea numrului (NE) este: NE = (1)s M 2C-16383 (2.6)
Una din problemele care apare la calculele cu numere n VM se refer la modul de tratare al depirilor inferioare i superioare, i la reprezentarea valorilor nedefinite. n acest scop, pe lng numerele normalizate, standardul mai permite i reprezentri ale unor valori speciale, pentru care sunt rezervate valorile 0 i 255 ale exponentului. Unele din aceste valori speciale sunt prezentate n continuare.
S S S S 0 0 111 111 0 0 0 0 Numr denormalizat Zero Infinit NaN (Nu este numr)

n cazul obinerii unui rezultat cu o valoare mai mic dect numrul normalizat cel mai mic posibil, n mod obinuit rezultatul este setat la zero i operaiile se continu, sau se semnaleaz o eroare de depire inferioar. Nici una din aceste soluii nu este satisfctoare, astfel nct standardul permite utilizarea numerelor nenormalizate (denormalizate), care au caracteristica 0, iar fracia diferit de 0. Pentru valoarea zero, att caracteristica, ct i fracia, sunt egale cu 0. Exist dou reprezentri pentru valoarea 0, n funcie de bitul de semn: +0, respectiv -0. Bitul de la stnga punctului binar este implicit 0 n loc de 1. Pentru cazul n care apare o depire superioar, exist o reprezentare special pentru infinit, constnd din caracteristica format din bii de 1 (255 pentru formatul scurt), i o fracie egal cu 0. Valoarea infinit se poate utiliza ca operand, de exemplu: +n= n/=0 n/0= Astfel, utilizatorul poate decide dac va trata depirea superioar ca o condiie de eroare, sau va continua calculele cu valoarea infinit. Pentru indicarea diferitelor condiii de excepie, ca n cazul nedefinirilor de forma /, 0, 0/, s-a prevzut un format special NaN (Not a Number). Caracteristica este format din bii de 1, iar fracia este diferit de 0. Exemple 1) Care este reprezentarea binar a numrului 0,75 n simpl precizie? Numrul 0,75 poate fi scris ca 3/4 sau 0,11 n binar. Notaia tiinific a numrului este -0,112 , iar forma normalizat a acestei notaii este 1,121. Caracteristica va fi 1 + 127 = 126 (7Eh). Reprezentarea numrului n precizie simpl este deci:
0

31 30 23 22 0 1 0111 1110 1000 0000 0000 0000 0000 000

2) Care este numrul zecimal reprezentat de urmtorul cuvnt?


31 30 23 22 0 1 1000 0001 0100 0000 0000 0000 0000 000

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

Bitul de semn este 1, cmpul rezervat caracteristicii conine 81h = 129, iar cmpul fraciei conine 1 22 = 0,25. Valoarea numrului este: ( 1)1 1,25 2(129127) = 1,25 22 = 1,25 4 = 5,0

2.2. Coduri binar-zecimale


Aceste coduri se utilizeaz pentru codificarea cifrelor zecimale. Pentru codificarea fiecreia din cele 10 cifre, sunt necesari 4 bii; din cele 16 valori posibile, 6 vor fi neutilizate. Prin stabilirea unor corespondene ntre mulimea cifrelor zecimale i mulimea celor 16 cuvinte de 4 bii, se obin 10 numeroase posibiliti de codificare ( A16 ). Din numeroasele coduri posibile se utilizeaz practic doar o mic parte. Codurile utilizate se mpart n coduri ponderate i neponderate. n cazul codurilor ponderate, o cifr zecimal este exprimat printr-o combinaie de 4 cifre binare, n care fiecrei cifre i se asociaz o anumit pondere. Ponderile pot fi pozitive sau negative. Valoarea cifrei zecimale se obine prin suma biilor din cod, fiecare bit fiind multiplicat cu valoarea ponderii asociate. Considernd un cod format din biii b0, b1, b2, b3, ponderile asociate acestora fiind p0, p1, p2, respectiv p3, valoarea cifrei zecimale codificate este: N = p0b0 + p1b1 + p2b2 + p3b3 (2.7) Ponderile fiecrui bit reprezint valoarea corespunztoare din denumirea codului. Pentru ponderile de sus, codul are denumirea p3p2p1p0. n Tabelul 2.1 se prezint exemple de coduri ponderate de 4 bii mai des utilizate.
Tabelul 2.1. Coduri binar-zecimale ponderate de 4 bii.
Nr. zecimal 0 1 2 3 4 5 6 7 8 9 8421 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 2421 0000 0001 0010 0011 0100 1011 1100 1101 1110 1111 6423 0000 0101 0010 1001 0100 1011 0110 1101 1010 1111 84 21 0000 0111 0110 0101 0100 1011 1010 1001 1000 1111

Exemple
01018421 = 80 + 41 + 20 + 11 = 5 10108421

= 81 + 40 + (-2)1 + (-1)0 = 82 = 6

n cazul codului 8421, deoarece fiecare bit are ponderea numrrii n binar (20, 21, 22, 23), iar cuvintele de cod reprezint numerele succesive n sistemul binar natural, codul se mai numete cod binar-zecimal natural (NBCD Natural Binary Coded Decimal). n mod obinuit, acest cod se numete, impropriu, cod BCD. n cazul codului 2421, numit i cod Aiken (dup numele prof. Howard Aiken, care a realizat calculatorul MARK I), primele 5 cifre zecimale (0 4) au aceeai exprimare ca i n codul 8421. Cifra zecimal 5 poate fi exprimat fie prin 0101, fie prin 1011. Deci, reprezentarea unor cifre zecimale nu

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

este unic, aceast proprietate fiind valabil i pentru alte coduri. Pentru codificare s-a ales reprezentarea 1011, deoarece codul pentru cifra 5 se poate obine atunci prin complementarea codului pentru cifra 4. Aceeai regul se poate aplica pentru obinerea codului cifrei 6 din codul cifrei 3, a codului cifrei 7 din codul cifrei 2 etc. 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 , 6423 , 8421 sunt autocomplementare. Condiia necesar pentru ca un cod ponderat s fie autocomplementar este ca suma ponderilor s fie egal cu 9. Autocomplementaritatea constituie un avantaj n construcia unui dispozitiv aritmetic care lucreaz cu numere zecimale reprezentate n codul respectiv. Observaie. n forma intern, numerele sunt reprezentate i prelucrate fie sub form binar, fie codificate printr-un cod binar-zecimal. Trebuie sesizat diferena dintre conversia unui numr zecimal n echivalentul su binar i codificarea binar-zecimal a numrului zecimal. De exemplu:
1210 = 11002 1210 = (0001 0010)BCD

( 4 bii) (8 bii)

Codurile neponderate pot avea un numr mai mare de 4 bii. Codurile cele mai uzuale sunt prezentate n Tabelul 2.2.
Tabelul 2.2. Coduri binar-zecimale neponderate.
Nr. zecimal 0 1 2 3 4 5 6 7 8 9 Exces 3 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 2 din 5 00011 00101 00110 01001 01010 01100 10001 10010 10100 11000 Gray 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. Utiliznd acest cod, se poate face distincie ntre lipsa unei informaii nscrise ntr-un registru sau locaie de memorie i nscrierea valorii zero (0000 reprezint lipsa unei informaii, iar zero este codificat prin 0011). Codul 2 din 5 se utilizeaz pentru reprezentarea numerelor zecimale printr-un grup de 5 bii. Denumirea deriv din faptul c fiecare cifr zecimal codificat n binar conine doi bii de 1 din cei 5 bii. Codul Gray are proprietatea de adiacen, adic trecerea de la o cifr zecimal la urmtoarea sau precedenta necesit modificarea unui singur bit din cuvntul de cod. Este util pentru mrimile care cresc sau descresc succesiv.

2.3. Coduri detectoare de erori


Transmiterea informaiilor prin medii influenate de zgomote poate fi nsoit de introducerea unor erori. Verificarea transmiterii corecte a informaiilor se poate realiza cu ajutorul unor coduri speciale numite coduri detectoare de erori.

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

Una din metodele de detectare a unei erori o constituie detectarea combinaiilor interzise. n cazul codurilor binar-zecimale, deoarece se utilizeaz 10 din cele 16 combinaii posibile de 4 bii, celelalte combinaii nu trebuie s apar. Aceste combinaii interzise se pot utiliza pentru detectarea erorii. Dac, de exemplu, n codul BCD 1000 apare o singur eroare, codul poate fi transformat n 0000, 1100, 1010 sau 1001. Dintre aceste combinaii, a doua i a treia constituie combinaii interzise, astfel nct n aceste cazuri eroarea poate fi detectat. Celelalte combinaii nu sunt interzise, deci n cazurile respective eroarea nu poate fi detectat. O modalitate de cretere a probabilitii de detectare a erorilor const n folosirea mai multor combinaii interzise, care pot fi disponibile dac codurile au mai mult de 4 bii. De exemplu, n codul 2 din 5 apare o eroare ori de cte ori o cifr codificat are mai mult sau mai puin de doi bii de 1. Astfel, se pot detecta erori multiple. O alt metod pentru detectarea erorilor const n folosirea unor bii suplimentari de verificare. De exemplu, un cod de n bii poate fi format din m bii de date i r bii redundani de verificare (n = m + r). Fiind date dou cuvinte de cod, de exemplu 1000 1001 i 1011 0001, se poate determina numrul biilor care difer. n acest caz, exist 3 bii care difer. Pentru determinarea numrului de bii care difer, se efectueaz suma modulo 2 ntre cele dou cuvinte de cod, i se calculeaz numrul biilor de 1 ai rezultatului. Numrul poziiilor n care dou cuvinte de cod difer reprezint distana Hamming. Dac ntre dou cuvinte de cod se afl o distan Hamming d, sunt necesare d erori de cte un singur bit pentru trecerea de la un cod la al doilea cod. Proprietile de detectare a erorilor ale unui cod depind de distana sa Hamming. Pentru detectarea a d erori de cte un singur bit, este necesar un cod cu distana d+1, deoarece cu un asemenea cod nu exist posibilitatea ca d erori de un singur bit s modifice un cuvnt de cod valid ntr-un alt cuvnt de cod valid. Un exemplu simplu de cod detector de erori este un cod care conine un bit suplimentar numit bit de paritate. Acest bit se poate alege astfel nct numrul total al biilor avnd valoarea 1 n exprimarea numrului s fie par, respectiv impar. Dac se utilizeaz paritatea par, notnd cu x3x2x1x0 biii cifrei zecimale i cu p bitul de paritate, valoarea bitului de paritate determin ca suma modulo 2 a valorii tuturor biilor s fie 0: x3 x2 x1 x0 p = 0 de unde rezult: p = x3 x2 x1 x0 x3 x2 x1 x0 p = 1 sau p = x3 x2 x1 x0 1
Tabelul 2.3. Codul 8421 cu paritate par.
Nr. zecimal 0 1 2 3 4 5 6 7 8 9 Cod 0 0000 1 0001 1 0010 0 0011 1 0100 0 0101 0 0110 1 0111 1 1000 1 1001

(2.8) (2.9) (2.10) (2.11)

Dac se alege paritatea impar, trebuie ca:

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

Un asemenea cod are distana 2, deoarece o eroare de un singur bit produce un cuvnt de cod cu paritatea eronat. La transmisia datelor se adaug bitul de paritate par sau impar, iar la recepie se determin dac paritatea este aceeai cu cea de la transmisie. Codurile 8421 cu paritate par ale cifrelor zecimale sunt indicate n Tabelul 2.3.

2.4. Coduri corectoare de erori


Verificarea paritii nu poate detecta apariia erorilor duble, deoarece aceste erori nu modific suma modulo 2 a biilor. Exist coduri mai complexe, numite coduri corectoare de erori, care permit i corectarea unui bit eronat sau a mai multor bii eronai. Aceste coduri sunt utile atunci cnd retransmisia informaiei nu este posibil, sau necesit un timp care nu ar fi acceptabil. Presupunem un cod cu m bii de date i r bii de verificare, cod care permite corectarea tuturor erorilor de un singur bit. Fiecruia din cele 2m cuvinte de cod valide i corespund n cuvinte de cod ilegale cu distana 1. Acestea se formeaz prin inversarea sistematic a fiecruia din cei n bii. Fiecare din cele 2m cuvinte valide necesit n+1 combinaii de bii dedicate pentru cuvntul respectiv. Deoarece numrul total al combinaiilor de bii este 2n, trebuie ca (n+1)2m 2n. Utiliznd relaia n = m + r, aceast cerin devine (m + r + 1) 2r. Fiind dat m, aceasta impune o limit inferioar asupra numrului biilor de verificare necesari pentru corectarea erorilor de un singur bit. De exemplu, pentru un cuvnt de m = 4 bii, numrul minim al biilor de verificare este r = 3, iar pentru un cuvnt de m = 8 bii, numrul minim al biilor de verificare este r = 4. Aceste limite teoretice pot fi atinse utiliznd o metod datorat lui Richard Hamming. Metoda poate fi utilizat pentru construirea codurilor corectoare de erori pentru cuvinte de cod de orice dimensiune. ntr-un cod Hamming, se adaug r bii de paritate la un cuvnt de m bii, rezultnd un nou cuvnt cu lungimea de m + r bii. Biii sunt numerotai ncepnd cu 1 (i nu cu 0), bitul 1 fiind bitul c.m.s. Toi biii ai cror numr este o putere a lui 2 sunt bii de paritate, restul biilor fiind utilizai pentru date. De exemplu, n cazul unui cuvnt de 4 bii, biii 1, 2 i 4 sunt bii de paritate. n total, cuvntul de cod va conine 7 bii (4 de date i 3 de paritate). n exemplul prezentat se va utiliza n mod arbitrar paritatea par. Fiecare bit de paritate verific anumite poziii de bii. Aceste poziii sunt ilustrate n Figura 2.2, unde prin ptrate s-a indicat poziia biilor de paritate, iar prin cercuri s-a indicat poziia biilor de informaie.

Figura 2.2. Construcia codului Hamming pentru valoarea binar 0101 prin adugarea a trei bii de paritate.

Poziiile de bii verificate de biii de paritate sunt urmtoarele: Bitul 1 de paritate verific biii 1, 3, 5, 7. Bitul 2 de paritate verific biii 2, 3, 6, 7. Bitul 4 de paritate verific biii 4, 5, 6, 7. n general, bitul b este verificat de acei bii b1, b2, , bj astfel nct b1 + b2 + + bj = b. De exemplu, bitul 5 este verificat de biii 1 i 4 deoarece 1 + 4 = 5. Bitul 6 este verificat de biii 2 i 4 deoarece 2 + 4 = 6. Se consider exprimarea n cod 8421 a cifrei zecimale 5 (0101). Bitul 1 de paritate va trebui s determine un numr par de cifre de 1 pentru poziiile 1, 3, 5 i 7, deci va avea valoarea 0. Similar se

10

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

determin valoarea bitului 2 de paritate, care va avea valoarea 1, i a bitului 4 de paritate, care va avea valoarea 0. Dac transmiterea cifrei zecimale se realizeaz corect, toi biii de paritate verific n mod corect paritatea. Dac apare o eroare de transmisie, fie la un bit de paritate, fie la un bit de informaie, acest cod poate corecta o singur eroare. De exemplu, presupunem 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 de paritate este corect (biii 1, 3, 5, 7 conin doi bii de 1) Bitul 2 de paritate este incorect (biii 2, 3, 6, 7 conin trei bii de 1) Bitul 4 de paritate este incorect (biii 4, 5, 6, 7 conin trei bii de 1) Bitul incorect trebuie s fie unul din biii testai de bitul 2 de paritate (2, 3, 6 sau 7). Deoarece bitul 4 de paritate este incorect, unul din biii 4, 5, 6 sau 7 este incorect. Bitul eronat este unul din cei care se afl n ambele liste, deci poate fi bitul 6 sau 7. Bitul 1 de paritate fiind corect, rezult c i bitul 7 este corect. Bitul eronat este deci bitul 6, i valoarea acestui bit trebuie inversat. n acest fel, eroarea poate fi corectat. O metod simpl pentru determinarea bitului eronat este urmtoarea. Se calculeaz biii de paritate, i dac toi biii sunt coreci, nseamn c nu exist eroare (sau exist mai mult de o eroare). Se atribuie apoi biilor de paritate ponderile 1, 2, respectiv 4, i se adun ponderile biilor de paritate eronai. Suma rezultat reprezint poziia bitului eronat. De exemplu, dac biii de paritate 2 i 4 sunt eronai, bitul eronat este bitul 6.

2.5. Coduri alfanumerice


Datele alfanumerice conin cifre, litere i semne speciale, numite, n general, caractere. Codurile care pot reprezenta asemenea caractere se numesc coduri alfanumerice. 2.5.1. ASCII Un cod alfanumeric foarte des utilizat este codul ASCII (American Standard Code for Information Interchange), care codific literele mari i mici ale alfabetului englez, cifrele zecimale, semnele de punctuaie i alte caractere speciale. Codul ASCII utilizeaz 7 bii pentru a codifica 128 de caractere. Din cele 128 de caractere, 94 sunt caractere care pot fi tiprite, iar 34 sunt caractere utilizate pentru diferite funcii de control. n Tabelul 2.4 se prezint codurile ASCII. Cei 7 bii ai codului sunt notai cu b0 pn la b7, b7 fiind bitul c.m.s. De notat c cei trei bii mai semnificativi ai codului determin coloana din tabel, iar cei patru bii mai puin semnificativi determin linia din tabel. De exemplu, litera A este reprezentat n ASCII prin codul binar 100 0001 (coloana 100, linia 0001).
Tabelul 2.4. Codurile ASCII.
b6b5b4 b3b2b1b0 0000 0001 0010 0011 0100 0101 0110 0111 1000 000 NULL SOH STX ETX EOT ENQ ACK BEL BS 001 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN ! " # $ % & ' ( 010 011 0 1 2 3 4 5 6 7 8 100 @ A B C D E F G H 101 P Q R S T U V W X 110 ` a b c d e f g h 111 p q r s t u v w x

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

11

b6b5b4 b3b2b1b0 1001 1010 1011 1100 1101 1110 1111 000 HT LF VT FF CR SO SI 001 EM SUB ESC FS GS RS US 010 ) * + , . / 011 9 : ; < = > ? 100 I J K L M N O 101 Y Z [ \ ] ^ _ 110 i j k l m n o 111 y z { | } ~ DEL

Cele 34 de caractere de control sunt desemnate n tabelul caracterelor ASCII prin nume abreviate. Caracterele de control se utilizeaz pentru transmisia datelor i pentru aranjarea textului ntr-un anumit format. Exist trei tipuri de caractere de control: de formatare, de separare a informaiei i de control al comunicaiei. Dintre caracterele de formatare a textului menionm cele pentru deplasare napoi BS (Backspace), retur de car CR (Carriage Return) i tabulare orizontal HT (Horizontal Tabulation). Separatorii de informaii se utilizeaz pentru separarea datelor n seciuni, de exemplu n paragrafe i pagini. Acestea cuprind caractere cum sunt separatorul de nregistrare RS (Record Separator) i separatorul de fiier FS (File Separator). Caracterele de control al comunicaiei se utilizeaz la transmisia textului. Exemple de asemenea caractere sunt STX (Start of Text) i ETX (End of Text), care se pot utiliza pentru ncadrarea unui mesaj transmis pe liniile de comunicaie. 2.5.2. Unicode i ISO/IEC 10646 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. ncepnd cu versiunea 1.1, Unicode este compatibil cu standardul 10646, a crui prim versiune a fost elaborat n 1993 de organizaiile ISO (International Standards Organization) i IEC International Electrotechnical Commission). Numele standardului este Universal Multiple-Octet Coded Character Set, ntlnit i sub forma acronimului UCS (Universal Character Set). Versiunea curent a standardului 10646 este 3.0. 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. n versiunile uzuale ale UCS, codul unui caracter este reprezentat prin patru cifre hexazecimale; aceasta corespunde formei pe doi octei, denumit UCS-2. A fost definit de asemenea i o form pe 4 octei, UCS-4, pentru a garanta faptul c spaiul de codificare va fi suficient i n viitor. n forma pe 2 octei a UCS, cele 65536 coduri sunt mprite n 256 de linii de cte 256 de celule fiecare. Primul octet al codului unui caracter indic numrul liniei, iar al doilea numrul celulei. Primele 128 de caractere din linia 0 reprezint caracterele ASCII. ntreaga linie 0 conine aceleai caractere ca i cele definite de standardul ISO/IEC 8859-1. Octetul reprezentnd codul unui caracter ASCII sau ISO/IEC 8859-1 poate fi transformat simplu n reprezentarea sa UCS prin adugarea cifrelor 00 n faa acestuia. UCS cuprinde aceleai caractere de control ca i cele din setul ASCII. n forma pe 4 octei, pot fi reprezentate peste 2 miliarde de caractere diferite. Primul bit al primului octet trebuie s fie 0, astfel nct se utilizeaz numai 31 de bii din cei 32. Acest spaiu de codificare este mprit n 128 de grupe, fiecare coninnd 256 de planuri. Primul octet de cod indic numrul grupei, iar al doilea numrul planului. Al treilea i al patrulea octet indic numrul liniei, respectiv al celulei. Caracterele care pot fi reprezentate n forma UCS-2 aparin planului 0 din grupa 0, care este numit plan multilingv de baz sau BMP (Basic Multilingual Plane). nc nu au fost alocate caractere poziiilor n afara planului BMP, iar n practic se utilizeaz numai forma pe doi octei. n forma UCS-2, caracterele cu coduri cuprinse ntre 00A0h i 00FFh formeaz setul Latin-1. Aceste coduri conin litere suplimentare utilizate n principalele limbi din Europa de Vest, ca i semne matematice i de punctuaie. Codurile din setul Latin-1 se bazeaz pe standardul ISO/IEC 8859-1. Ta-

12

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

belul 2.5 prezint setul Latin-1. n acest tabel, primele trei cifre hexazecimale ale codului sunt cele care desemneaz coloana, iar ultima cifr a codului este cea care desemneaz linia.
Tabelul 2.5. Setul de caractere Latin-1.
00A 0 1 2 3 4 5 6 7 8 9 A B C D E F 00B 00C 00D 00E 00F

Exist patru zone principale pentru asignarea codurilor UCS-2. Zona A conine caractere alfabetice i simboluri, avnd primele dou cifre hexazecimale ale codului cuprinse ntre 00h i 4Dh. De exemplu, aceast zon cuprinde seturile Basic Latin, Latin-1, Latin Extended-A, Latin Extended-B; alfabetele grec, chirilic, armean, ebraic, arab, bengali, tamil, georgian; diferite simboluri, sgei, operatori matematici, forme geometrice etc. Literele , , , , , din limba romn fac parte din setul Latin Extended-A, n timp ce literele , , , fac parte din setul Latin-1. De menionat c toate aceste caractere fac parte din setul de caractere ISO/IEC 8859-2, care cuprinde caracterele speciale necesare pentru limbile rilor din Europa Central i de Est. n Tabelul 2.6 se prezint codurile ISO/IEC 10646 ale caracterelor speciale utilizate n limba romn.
Tabelul 2.6. Codurile ISO/IEC 10646 ale caracterelor speciale din limba romn.
Caracter Cod hexa 01 02 00 C2 00 CE 01 5E 01 62 Caracter Cod hexa 01 03 00 E2 00 EE 01 5F 01 63

Zona I conine caractere ideografice, avnd primele dou cifre hexazecimale ale codului cuprinse ntre 4Eh i 9Fh. Un caracter ideografic reprezint un cuvnt sau o unitate gramatical inseparabil. Exist un mare numr de caractere ideografice n diferite limbi. Ca un principiu general de codificare, pentru ca un nou caracter s fie inclus n setul UCS, acest caracter trebuie s difere de toate caracterele deja incluse, att n semnificaie, ct i ca form. Formele grafice alternative ale caracterelor existente (variante de fonturi, hieroglife) nu au deci coduri distincte. n limbile chinez, japonez i coreean exist un mare numr de caractere ideografice care au aceeai origine istoric i doar diferene minore ca form n cele trei limbi. Acestor variante naionale ale aceluiai caracter ideografic li s-a atribuit un cod UCS unificat, o soluie cunoscut sub numele de unificare CJK. Zona I conine asemenea caractere unificate.

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

13

Zona O, avnd primele dou cifre hexazecimale ale codului cuprinse ntre A0h i DFh, este rezervat pentru versiunile ulterioare ale standardului. Zona R este o zon pentru utilizare restrns, codurile avnd primele dou cifre hexazecimale cuprinse ntre E0h i FFh . Aceast zon este mprit la rndul ei n zona de utilizare privat, zona de compatibilitate a caracterelor ideografice CJK i zona caracterelor speciale. Zona de utilizare privat este disponibil pentru utilizatorii care necesit caractere speciale pentru programele lor de aplicaii. De exemple, icoanele utilizate n meniuri pot fi specificate prin coduri de caractere n aceast zon. Exist posibilitatea utilizrii unui numr de 6400 de caractere private, cu coduri avnd primele dou cifre hexazecimale cuprinse ntre E0h i F8h. Aceast zon nu va fi ocupat de versiunile viitoare ale standardului. Zona de compatibilitate conine caracterele care sunt mapate la alte zone n spaiul de codificare. Caracterele disponibile n aceast zon special au o utilizare larg, dar nu sunt direct compatibile cu modul de reprezentare a caracterelor UCS, astfel nct nu pot fi incluse direct n alte zone. Codurile FFFEh i FFFFh nu reprezint coduri de caractere, fiind excluse din UCS. Exist o problem de ordonare a octeilor din cadrul cuvintelor de 16 bii reprezentnd coduri de caractere n Unicode. n general, dac octetul 0 se afl n dreapta cuvntului (n partea mai puin semnificativ), iar octetul 1 se afl n stnga, ordonarea octeilor este numit little-endian. Dac octetul 0 se afl n stnga cuvntului (n partea mai semnificativ), iar octetul 1 se afl n dreapta, ordonarea octeilor este numit big-endian. Presupunem c un ir de 2n octei reprezentnd n caractere Unicode sunt transferate de la un calculator cu ordonarea little-endian la un calculator cu ordonarea big-endian. Ordinea octeilor din cuvintele de 16 bii va fi atunci schimbat. Dac la nceputul irului original se include codul FEFFh, care este un cod pentru marcajul ordinii octeilor (Byte Order Mark), atunci prin inversarea octeilor acesta va apare sub forma FFFEh, care este un cod invalid. Acest cod invalid indic faptul c ordinea octeilor din cadrul tuturor cuvintelor este incorect, i deci ordinea trebuie inversat naintea interpretrii cuvintelor ca i caractere. Astfel, prin plasarea codului FEFFh la nceputul unui ir de caractere, o aplicaie poate determina dac octeii trebuie inversai nainte de interpretarea codurilor. O situaie similar apare la transferul de la un calculator cu ordonarea big-endian la un calculator cu ordonarea little-endian.

3. Desfurarea lucrrii
3.1. Reprezentai n formatul IEEE 754 cu precizie simpl urmtoarele numere zecimale: a) 1; b) 1; c) 5; d) 5; e) 35,4; f) 35,4; g) 2,6; h) -192 Scriei rezultatele n hexazecimal. 3.2. Reprezentai n formatul IEEE 754 cu precizie dubl urmtoarele numere zecimale: a) 1; b) 1,5; c) 2,5; d) 5; e) 35,4; f) 35,4 3.3. Scriei numerele zecimale corespunztoare urmtoarelor reprezentri n formatul IEEE 754 cu precizie simpl: a) 41 8A 1E 94; b) 41 36 66 6A; c) BE CC CC CB; d) BD AB 40 C0 3.4. Deducei algoritmii pentru adunarea i scderea a dou cifre zecimale exprimate n codul Pentru deducerea algoritmului de adunare se va ntocmi un tabel cu toate sumele posibile care se pot obine prin adunarea a dou cifre zecimale i a unui eventual transport, indicnd pentru fiecare din acestea suma corect. Similar se va proceda pentru scdere, innd cont i de un eventual mprumut.
8421.

3.5. Deducei algoritmii pentru adunarea i scderea a dou cifre zecimale exprimate n codul Exces 3. 3.6. Deducei algoritmii pentru conversia din binar n codul Gray i din codul Gray n binar. 3.7. Construii codul Hamming pentru un cuvnt de 16 bii, considernd paritatea impar. Explicai modul n care funcioneaz corecia unei erori.

14

Arhitectura calculatoarelor Lucrarea de laborator Nr. 2.

3.8. Deducei regula de conversie a literelor mari codificate n ASCII n litere mici, i a literelor mici n litere mari. 3.9. Determinai cuvntul reprezentat de urmtorul ir Unicode specificat n hexazecimal:
FFFE, 4800, 6900, 7200, 6100, 6700, 6100, 6E00, 6100

3.10. Decodificai urmtorul ir Unicode specificat n hexazecimal:


FEFF, 0031, 00F7, 0034, 003D, 00BC, 0020, 0065, 0073, 0074, 0065, 0020, 006F, 0020, 0066, 0072, 0061, 0063, 0163, 0069, 0065, 002E