12
Curs 2 1.6.3. Operații cu numere reprezentate în virgulă fixă In exemplele care urmează vom considera numai cazul numerelor repre- zentate în C2. Metodele de adunare și scădere a numerelor reprezentate în C2 demonstrează avantajele acestei reprezentări. Aceste operaț ii se pot efectua ca și în cazul numerelor fără semn. 1.6.3.1 Adunarea numerelor reprezentate în C2 Considerăm câteva exemple de adunare a unor numere reprezentate pe 4+1 bi ț i. In primele exemple, numerele sunt de același semn. 9 + 01001 5 00101 14 01110 Rezultatul este corect. 9 + 01001 11 01011 20 10100 După cum se constată se obține un număr negativ, deci rezultatul este incorect deoarece se depășește capacitatea de reprezentare a rezultatu- lui: 20 16 2 4 . 9 + 10111 5 11011 14 10010 Rezultatul este corect. Apare un transport de la cifra de semn, care se neglijează. 9 + 10111 11 10101 20 01100 Se obține un număr pozitiv, deci rezultatul este incorect deoarece, din nou, s-a depășit capacitatea de reprezentare pe 4 cifre binare (biți). In exemplele următoare adunăm numere de semne contrare. 7 + 00111 4 11100 3 00011 7 + 11001 4 00100 3 11101 In cazul numerelor de semne contrare, rezultatul este întotdeauna corect, deoarece nu poate apare depășire de capacitate. Din exemplele de mai sus rezultă următoare regulă generală de adunare a două numere reprezentate în C2: Se adună numerele bit cu bit, inclusiv biț ii de semn, care sunt trataț i la fel cu bi ții de mărime și se ignoră eventualul transport de la bitul de semn. Dacă rezultatul este mai mare în valoare absolută decât valoarea maximă care poate fi reprezentată în registru, apare o depășire, deci rezultatul este in-

Curs 2.15 Bazele Aritmetice Ale Calculatoarelor (II)

  • Upload
    stefan

  • View
    58

  • Download
    0

Embed Size (px)

DESCRIPTION

c

Citation preview

  • Curs 2 1.6.3. Operaii cu numere reprezentate n virgul fix In exemplele care urmeaz vom considera numai cazul numerelor repre-

    zentate n C2. Metodele de adunare i scdere a numerelor reprezentate n C2 demonstreaz avantajele acestei reprezentri. Aceste operaii se pot efectua ca i n cazul numerelor fr semn.

    1.6.3.1 Adunarea numerelor reprezentate n C2 Considerm cteva exemple de adunare a unor numere reprezentate pe

    4+1 bii. In primele exemple, numerele sunt de acelai semn. 9 + 01001 5 00101

    14 01110 Rezultatul este corect. 9 + 01001

    11 01011

    20 10100 Dup cum se constat se obine un numr negativ, deci rezultatul este

    incorect deoarece se depete capacitatea de reprezentare a rezultatu-lui: 201624 .

    9 + 10111 5 11011

    14 10010 Rezultatul este corect. Apare un transport de la cifra de semn, care se

    neglijeaz. 9 + 10111 11 10101

    20 01100 Se obine un numr pozitiv, deci rezultatul este incorect deoarece, din

    nou, s-a depit capacitatea de reprezentare pe 4 cifre binare (bii). In exemplele urmtoare adunm numere de semne contrare.

    7 + 00111 4 11100

    3 00011

    7 + 11001 4 00100

    3 11101 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 re-zultatul s nu fie utilizat.

    Se observ c depirea poate apare indiferent dac exist sau nu tran-sport de la cifra de semn. Pentru detectarea apariiei depirii, se poate aplica ur-mtoarea 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 su-matoare elementare. Deoarece, n general, unitatea de calcul nu dispune de sc-ztoare elementare, la scdere se aplica urmtoarea regul: Pentru scderea unui numr (scztor) dintr-un altul (desczut), se calculeaz n primul rnd com-plementul scztorului (care se obine prin schimbarea semnului scztorului) du-p 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.

    D 7 00111 S 4 00100 S 4 11100 D +7 + 00111 +

    S 4 11100

    3 00011 Rezultatul este corect. D 11+ 01011 S -9 10111 S 9+ 01001 D 11+ + 01011 S 9+ 01001

    20+ 10100 Rezultatul este incorect deoarece s-a depit capacitatea de reprezen-

    tare 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).

    1.7. Reprezentarea numerelor n virgul mobil In multe aplicaii se utilizeaz numere care nu sunt ntregi. Exist mai

    multe posibiliti pentru reprezentarea acestor numere. O posibilitate este repre-zentarea n virgul fix. In acest caz, se poate utiliza aritmetica pentru numere n-tregi, iar apoi se plaseaz virgula binar n poziia predefinit, de exemplu, dup bitul de semn. Adunarea a dou numere reprezentate ntr-un asemenea format poate fi realizat cu un sumator pentru numere ntregi n timp ce nmulirea necesi-t operaii suplimentare de deplasare. In cazul reprezentrii numerelor n virgul fix, dei virgula nu mai este reprezentat fizic n calculator, poziia virgulei bina-

  • re, stabilit prin proiectare, nu mai poate fi schimbat. Pentru transformarea tutu-ror numerelor n acest format, trebuie executate o serie de operaii de scalare sau de deplasare, atand numerelor factori de scal. Evidena acestora trebuie rea-lizat 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 ( yx, ) pentru a re-

    prezenta fracia yx / .

    O soluie mai avantajoas este utilizarea unei tehnici de scalare automat, cunoscut sub numele de reprezentare n virgul mobil - VM (numit i repre-zentare 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. EBMN (1.19)

    Un numr reprezentat n format tiinific are dou componente. Prima com-ponent 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 687523, poate fi reprezentat n format ti-inific prin una din urmtoarele posibiliti:

    -10 10875,236106875,23 = 210236875,0

    In binar numrul corespunztor este 10111,1011 care, n format tiini-fic poate reprezentat astfel:

    4-3 ,,, 2011110111=2110111101=2101110111 0

    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 operai-ilor 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 reprezenta-rea 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 microcalcula-toarelor, 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 cu-vnt de memorie (patru octei), care este divizat n trei cmpuri, cte unul pentru fiecare dintre urmtoarele elemente: semn, mantis i exponent. Baza este con-

  • siderat ca fiind, n mod implicit, egal cu 2 i deci nu mai trebuie memorat. In cmpul de semn se memoreaz semnul numrului (mantisei). Pentru memora-rea semnului se utilizeaz un singur bit, denumit bit de semn acesta avnd va-loarea 0 pentru numerele pozitive i 1 pentru numerele negative.

    In funcie de numrul de bii alocai pentru memorarea mantisei i a exponen-tului standardul IEEE 754 definete urmtoarele formate sau precizii: precizie simpl, precizie dubl. Parametrii principali ai acestor formate sunt prezentai n tabelul 1.7.

    In conformitate cu standardul IEEE 754, n cmpul rezervat exponentului nu se memoreaz de fapt exponentul E al numrului ci un numr C , denumit caracteristic, care se calculeaz cu relaia

    DEC += unde D , numit deplasament, este un numr constant, astfel ales nct caracteris-tica C s rezulte ntotdeauna pozitiv. In aceste condiii, nu este necesar s se rezerve un cmp separat pentru semnul exponentului.

    Conform standardului IEEE 754 n formatul simpl precizie pentru caracte-ristic se aloc 8 bii i n aceste condiii deplasamentul este 127D . Astfel da-c exponentul numrului este 0E , atunci caracteristica sa este

    1271270 C In binar caracteristica unui numr de exponent nul este deci: 0111 1271111 Numerele cu exponent pozitiv vor avea caracteristica mai mare dect

    127, iar cele cu exponent negativ vor avea caracteristica mai mic de 127. Conform standardului caracteristica cea mai mare este

    1111C 2541110 astfel nct exponentul cel mai mare este

    127127254 DCE Caracteristica cea mai mic este

    0000C 10001 deci exponentul cel mai mic este dat de

    1261271 DCE Mantisa se reprezint ntotdeauna sub form normalizat, n care virgula

    zecimal este adus dup prima cifr semnificativ a numrului. In sistemul de numeraie binar prima cifr a oricrui numr este ntotdeauna 1, deci mantisa poa-te fi scris sub forma

    F,M 1=

    unde F reprezint partea fracionar a numrului. In aceste condiii 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. (1,111111.) Deci:

    .....1111111,10,1 M

    In formatul simpl precizie pentru mantis se aloc 23 bii. Reamintindu-ne c un cuvnt de memorie este format din 4 octei (32 bii), un numr n virgul mobil - simpl precizie - este memorat n modul urmtor:

    31 30 23 22 0

    s Caracteristica Parte fracionar Deoarece primul bit al mantisei este ntotdeauna 1 acesta nu se mai

    memoreaz, motiv pentru care acesta se numete bit ascuns. Astfel, n cei 23

  • de bii disponibili pentru mantis se memoreaz numai partea fracionar F .

    In simpl precizie numrul zecimal 410 201111011,16875,23 va avea

    deci urmtoarea reprezentare:

    0 10000011 011 1101 1000 0000 0000 0000

    Caracteristica a fost calculat cu relaia C=E+D care n cazul nostru de-

    vine:

    01111111127 000001004

    10000011131 Tabelul 1.8

    Simpl precizie

    Dubl pre-cizie

    Nr. bii mantis 23 52 Exponent maxim +127 +1023

    Exponent minim -126 -1022

    Deplasament 127 1023

    Standardul IEEE 754 rezerv dou valori ale caracteristicii pentru cazuri

    speciale. Aceste valori sunt 1111255 1111

    i 00000 0000

    In tabelul 1.9 se prezint semnificaia acestor valori n funcie de valoa-rea mantisei.

    Tabelul 1.9 Caracteristica Mantisa Semnificaie 0=0000 0000 0 0 0=0000 0000 0 nr. denormalizat

    255=1111 1111 0 255=1111 1111 0 NaN

    1

  • nite de forma / , , 0 , /0 , 0/0 , sau extragerea rdcinii ptrate dintr-un numr negativ, s-a prevzut un format special, care nu reprezint un nu-mr obinuit, fiind numit NaN (Not a Number). In acest caz exponentul are valoarea maxim posibil iar mantisa este diferit de 0 . Astfel, exist o clas ntreag de valori NaN.

    Standardul IEEE 754 specific faptul c atunci cnd operandul unei operaii este NaN, rezultatul trebuie s fie NaN. Datorit regulilor de execuie a operaiilor aritmetice cu valori NaN, la scrierea subrutinelor de calcul n VM care accept o va-loare NaN ca argument, nu sunt necesare verificri speciale.

    Reprezentarea numerelor denormalizate Dup cum s-a artat anterior, un numr normalizat are mantisa reprezentat

    sub forma M=1,F

    iar exponentul acestuia poate avea valori cuprinse ntre -126 i +127. In cazul obi-nerii unui rezultat cu o valoare mai mic dect numrul normalizat cel mai mic po-sibil, standardul permite utilizarea numerelor care nu sunt normalizate, acestea fiind numite numere denormalizate.

    Un numr denormalizat are exponentul mai mic de -126. innd seama c faptul c caracteristica minim este C=0, rezult c exponentul minim este

    E = C D = 0 127 = -127 Dac exponentului numrului este mai mic dect aceast valoare mantisa

    nu mai poate fi normalizat i deci va fi reprezentat sub forma M = 0,F In aceast situaie exponentul minim al unui numr denormalizat devine 1,0 x 2-127 = 0,1 x 2-126

    Considerm urmtorul exemplu: 0.10110101 x 2-135 = 0.10110101 x 2-126 x 2-9 = = 0.000 000 000 101 101 01 x 2-126

    Reprezentarea n virgul mobil a acestui numr este

    1.7.2 Gama numerelor reprezentate n VM Numrul cel mai mare, n valoare absolut, care poate fi reprezentat

    simpl precizie, trebuie s aib exponentul cel mai mare i mantisa cea mai mare, deci este urmtorul:

    0 1111 1110 111 1111 1111 1111 1111 1111

    Caracteristica fiind 254 exponentul acestui numr este +127, iar, innd

    seama de bitul ascuns, mantisa este M=1,111 1111 1111 1111 1111 1111=

    = 2 - 0,000 0000 0000 0000 0000 0001 = )22( 23

    Numrul reprezentat este deci 3812723 104,32)22( N

    Numrul cel mai mic, n valoare absolut care poate fi reprezentat n simpl precizie, trebuie s aib exponentul i mantisa cele mai mici, deci:

    0 0000 0000 000 0000 0010 1101 0100 0000

  • 0 0000 0001 000 0000 0000 0000 0000 0000

    Exponentul este -126, iar mantisa este M=1,000...0000=1

    deci

    N=38126 1018,121

    In concluzie virgula mobil, simpl precizie permite reprezentarea nu-merelor normalizate n gama de valori

    3838 104,31018,1 N

    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=2321

    Numrul corespunztor va fi deci: 3812623 1018,12)21( N

    Cel mai mic numrul denormalizat va fi

    0 0000 0000 000 0000 0000 0000 0000 0001

    Acesta va avea deci mantisa

    M=2321

    iar numrul va fi

    N=4514912623 104,121221

    Punnd cap la cap toate aceste date rezult gama numerelor repreze-tabile n VM (fig. 1.1)

    0

    -1 ,4x10-4 5

    + 1,4x10+ 45

    -1 ,18x10-3 8

    + 1,18x10-3 8

    -3 ,4x10+ 38

    + 3 ,4x10+ 38

    De pas ire infe rioa ra

    n eg ativ a

    De pas ire infe rioa ra

    p oz itiva

    De pas ire s up erio ara

    ne ga tiv a

    De pas ire s up erio ara

    p oz itiva

    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 op-ta 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 3081023,2 i 3081079,1 .

    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 rotunji-re: rotunjire spre 0 , rotunjire spre , rotunjire spre i rotunjire la cel mai apropiat numr reprezentabil. Ultimul mod de rotunjire este cel implicit i este pre-vzut pentru situaiile n care numrul se afl n intervalului dintre dou reprezen-tri 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 con-tinu. 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 ine-xact 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 da-

    c 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 ne-ponderate.

    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 3210

    ,,, pppp . Codul format din

    biii 3210

    ,,, bbbb va reprezenta o cifr zecimal a crei valoare este dat de re-

    laia

    00112233bpbpbpbpN (1.24)

    Codul care are ponderile prezentate mai sus se numete 0123 pppp . In

    tabelul 1.10 se prezint exemple de coduri ponderate de 4 bii mai des utiliza-te.

    Tabelul 1.10. Coduri binar-zecimale ponderate de 4 bii. Nr. zeci-mal

    8421

    2421

    3642

    2184

    0 0000 0000 0000 0000

    1 0001 0001 0101 0111

    2 0010 0010 0010 0110

    3 0011 0011 1001 0101

    4 0100 0100 0100 0100

    5 0101 1011 1011 1011

  • 6 0110 1100 0110 1010

    7 0111 1101 1101 1001

    8 1000 1110 1010 1000

    9 1001 1111 1111 1111

    Exemple

    91102041810018421

    71)1(0)2(041810012184

    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 fie-cruia din cei 4 bii. De exemplu, codul 8421 nu este autocomplementar, iar

    codurile ,2421 3642 , 2184 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 co-respunztor, iar dac acesta reprezint un ir de caractere alfanumerice vor avea alt reprezentare. Astfel numrul 13 este codificat sub forma

    131101 dac reprezint numr i sub forma

    130001 0011 dac reprezint o informaie alfanumeric. In acest caz s-a utilizat pentru codifica-re 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 Exces 3 2 din 5 Gray

    0 0011 00011 0000

    1 0100 00101 0001

    2 0101 00110 0011

    3 0110 01001 0010

    4 0111 01010 0110

    5 1000 01100 0111

    6 1001 10001 0101

    7 1010 10010 0100

    8 1011 10100 1100

    9 1100 11000 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 codifi-carea cifrei zero.

  • Codul 2 din 5 se utilizeaz pentru reprezentarea numerelor zecimale printr-un grup de 5 bii. Denumirea acestui cod deriv din faptul c fiecare ci-fr 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 se realizeaz prin modificarea unui singur bit.

    1.8.2. Coduri detectoare de erori In procesul de transmitere a informaiilor acestea pot fi alterate de diver-

    se zgomote. Preluarea unor informaii alterate trebuie evitat i pentru acest motiv receptorul realizeaz o verificare a informaiilor primite. Verificarea transmiterii corecte a informaiilor se poate realiza cu ajutorul unor coduri speciale numite coduri detectoare de erori.

    Una din metodele de detectare a unei erori o constituie detectarea com-binaiilor interzise. In 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. Da-c, de exemplu, n codul 1000 (BCD) 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 res-pective 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.

    Au existat mai multe metode care i propuneau verificarea informaiilor dar metoda care s-a impus datorit simplitii ei este cea a controlului de pari-tate. Aceast metod const n adugare unui bit suplimentar numit bit de pa-ritate la biii semnalului util. Bitul de paritate va avea o astfel de valoare nct numrul tuturor biilor de valoare 1 s fie par. De exemplu dac codul 8421 al unui numr zecimal este 0101 atunci bitul de paritate va avea valoarea 0 iar semnalul transmis va fi 00101. In tabelul 1.12 codurile celor 10 cifre zecimale.

    Tabelul 1.12. Codul 8421 cu paritate par. Nr. zecimal Cod

    0 0 0000

    1 1 0001

    2 1 0010

    3 0 0011

    4 1 0100

    5 0 0101

    6 0 0110

    7 1 0111

    8 1 1000

    9 0 1001

    Dac n timpul transmisiei un bit a fost alterat, bitul de paritate nu mai

    corespunde fapt care determin receptorul s cear retransmiterea informai-

  • 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 co-duri 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 Ham-ming 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, cei-lali fiind biii semnalului util.

    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. Bi-

    tul 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 bi-tul 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.

    7 6 5 4 3 2 1

    0 0 1 1 0 1 0

  • 1.8.4. Coduri alfanumerice Datele alfanumerice conin caractere care pot fi cifre, litere sau semne spe-

    ciale. Codurile care reprezent asemenea caractere se numesc coduri alfanumeri-ce.

    1.8.4.1. Codul 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 carac-tere, 94 sunt caractere care pot fi tiprite, iar 34 sunt caractere utilizate pentru diferite funcii de control.

    In tabelul 1.13 se prezint codurile ASCII. Cei 7 bii ai codului sunt notai cu

    0b pn la 7b . De exemplu, litera A este reprezentat n ASCII prin codul binar

    100 0001 (coloana 100, linia 0001).

    Tabelul 1.13. Codurile ASCII.

    0123 bbbb 456 bbb

    000 001 010 011 100 101 110 111

    0000 NULL DLE 0 @ p p

    0001 SOH DC1 ! 1 A Q a q

    0010 STX DC2 " 2 B R b r

    0011 ETX DC3 # 3 C S c s

    0100 EOT DC4 $ 4 D T d t

    0101 ENQ NAK % 5 E U e u

    0110 ACK SYN & 6 F V f v

    0111 BEL ETB 7 G W g w

    1000 BS CAN ( 8 H X h x

    1001 HT EM ) 9 I Y i y

    1010 LF SUB * : J Z i z

    1011 VT ESC + ; K [ k {

    1100 FF FS < L \ 1 I

    1101 CR GS - = M ] m }

    1110 SO RS . > N ^ n -

    1111 SI US / ? O _ o DEL

    1.8.4.2. Unicode Unicode este un set de caractere specificat de un consoriu de produc-

    tori importani de calculatoare din SUA, definit cu scopul de a elimina dificul-tile 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 inter-n a datelor n sistemele de calcul, ct i pentru comunicaiile de date.