Vous êtes sur la page 1sur 25

2 BAZELE MATEMATICE ALE CALCULATOARELOR 2.

1 Reprezentarea informa\iei Informa\iile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt reprezentate la nivel elementar sub form[ binar[. O informa\ie elementar[ corespunde deci unei cifre binare (0 sau 1) numit[ bit. O informa\ie mai complex[ (un caracter, un num[r etc.) se exprim[ printr -o mul\ime de bi\i. Codificarea unei informa\ii const[ @n a stabili o coresponden\[ @ntre reprezentarea extern[ a informa\iei (caracterul A sau num[rul 33, de exemplu) ]i reprezentarea sa intern[, care este o secven\[ de bi\i. Avantajele reprezent[rii binare se refer[ @n special la facilitatea de realizare tehnic[ cu ajutorul elementelor bistabile (sisteme cu 2 st[ri de echilibru) precum ]i la simplitatea efectu[rii opera\iilor fundamentale sub forma unor circuite logice, utiliz`nd logica simbolic[ cu dou[ st[ri (0, 1). Informa\iile prelucrate @n sistemele de calcul sunt de dou[ tipuri: instruc\iuni ]i date. Instruc\iunile, scrise @n limbaj ma]in[, reprezint[ opera\iile efectuate @n sistemul de calcul ]i ele sunt compuse din mai multe c`mpuri: codul opera\iei de efectuat; operanzii implica\i @n opera\ie. Codul opera\iei trebuie s[ suporte o opera\ie de decodificare (transformare invers[ codific[rii) pentru a se putea efectiv executa. Datele sunt operanzii asupra c[rora ac\ioneaz[ opera\iile (prelucr[rile), sau sunt produse de c[tre acestea. O adunare, de exemplu, se aplic[ la doi operanzi, furniz`nd un rezultat care este suma acestora. Se pot distinge datele numerice, rezultat al unei opera\ii aritmetice, sau date nenumerice, de exemplu simbolurile care constituie un text. Date nenumerice Datele nenumerice corespund caracterelor alfanumerice: A, B, ..., Z, a, b, ..., z, 0, 1, 2, ..., 9 ]i caracterelor speciale: ?, !, , $, ;, ... Codificarea se realizeaz[ pe baza unei tabele de coresponden\[ specific[ fiec[rui cod utilizat. Printre cele mai cunoscute coduri putem enumera: BCD [Binary Coded Decimal] prin care un caracter este codificat pe 6 bi\i;

ASCII [American Standard Code for Information Interchange ] (7 bi\i); EBCDIC [Extended Binary Coded Decimal Internal Code] (8 bi\i). Figura urm[toare prezint[ coresponden\a dintre diferite coduri. Figura 2.1 Tabela de coresponden\[ @ntre coduri caracter 0 1 2 ... ... 9 A B C BCD 000000 000001 000010 ... 001001 010001 010010 010011 (6 bi\i) ASCII 0110000 0110001 0110010 0111001 1000001 1000010 1000011 (7 bi\i) EBCDIC 11110000 11110001 11110010 11111001 11000001 11000010 11000011 (8 bi\i)

...

Codificarea se realizeaz[ cu ajutorul unui algoritm de conversie asociat tipului de dat[ corespunz[tor. Opera\iile aritmetice (adunare, sc[dere, @nmul\ire, @mp[r\ire) care se pot aplica asupra acestor date se efectueaz[ de regul[ @n aritmetica binar[. Figura de mai jos arat[ regulile opera\iilor binare.
0+0=0 0+1=1 1+0=1 1 + 1 = 10 00=0 01=0 10=0 11=1

Datele numerice Datele numerice sunt de urm[toarele tipuri: a) numere @ntregi pozitive sau nule: 0; 1; 315... b) numere intregi negative: -1; -155... c) numere frac\ionare: 3.1415; -0.5... d) numere @n nota\ie ]tiin\ific[: 4.9 107 ; 1023 ...

Numerele @ntregi pozitive sau nule cuprind: 0, 1, 2, ...,N, N + 1... Sisteme de numera\ie Un sistem de numera\ie face s[-i corespund[ unui num[r N, un anumit simbolism scris ]i oral. #ntr-un sistem de numera\ie cu baza p > 1, numerele 0, 1, 2, ..., p 1 sunt numite cifre. Orice num[r @ntreg pozitiv poate fi reprezentat astfel: N = anpn + an-1pn-1 + ... + a1p + a0 cu ai {0, 1, 2, p-1} ]i an 0. Se utilizeaz[ de asemenea nota\ia echivalent[ N = a nan-1...a1a0. Numerele scrise @n sistenul de numera\ie cu baza 2 (binar) sunt adesea compuse dintr-un mare num[r de bi\i, ]i de aceea se prefer[ exprimarea acestora @n sistemele octal (p = 8) ]i hexazecimal (p = 16), deoarece conversia cu sistemul binar este foarte simpl[. Schimb[ri de baz[ a) binar zecimal Conversia se realizeaz[ prin @nsumarea puterilor lui 2 corespunz[toare bi\ilor egali cu 1; Exemplu: 101012= 24 + 22 + 20 = 16 + 4 + 1 = 21 10 b) zecimal binar Conversia se efectueaz[ prin @mp[r\iri @ntregi succesive cu 2. Testul de oprire corespunde situa\iei c`tului nul. Num[rul binar este ob\inut consider`nd resturile @n ordinea invers[. Exemplu: Conversia lui 26: 26 : 2 = 13 rest 0 13 : 2 = 6 rest 1 6:2=3 rest 0 3:2=1 rest 1 1:2=0 rest 1 Se ob\ine (de jos @n sus): 26 10 = 110102. c) octal (hexazecimal) zecimal Conversia se reduce la @nsumarea puterilor lui 8 (16). d) zecimal octal (hexazecimal) Conversia se efectueaz[ prin @mp[r\iri @ntregi succesive prin 8 (16). Testul de oprire corespunde situa\iei c`tului nul. Num[rul octal

(hexazecimal) este ob\inut consider`nd resturile ob\inute de la ultimul c[tre primul. e) octal (hexazecimal) binar Conversia corespunde dezvolt[rii fiec[rei cifre octale (hexazecimale) @n echivalentul ei binar pe 3 (4) bi\i. Exemplu: 278 = 0101112 deoarece 28 = 0102 ]i 78 = 1112. 3A16 = 001110102 deoarece 3 16= 00112 ]i A16=10102. f) binar octal (hexazecimal) Conversia se realizeaz[ @nlocuind de la dreapta la st`nga, grupele de 3 (4) bi\i prin cifra octal[ (hexazecimal[) corespunz[toare. Dac[ num[rul de bi\i nu este multiplu de 3 (4) se completeaz[ configura\ia binar[ la st`nga cu zerouri. Exemplu: 101011 2= 538 = 2B16 . Numere @ntregi negative Numerele @ntregi negative pot fi codificate prin trei metode: semn ]i valoare absolut[ (SVA); complement logic sau restr`ns sau fa\[ de 1 (C1); complement aritmetic sau adev[rat sau fa\[ de 2 (C2); Prin metoda semn ]i valoare absolut[, numerele se codific[ sub forma: valoare absolut[. Prin aceast[ reprezentare se sacrific[ un bit pentru semn. #n mod normal, 0 este codul semnului +, iar 1 este codul semnului -. #n aceste condi\ii, pe un cuv`nt de k bi\i se pot reprezenta numere @ntregi pozitive ]i negative N, astfel @nc`t: - (2k-1- 1) N (2k-1- 1). Aceast[ metod[ de reprezentare prezint[ unele inconveniente: num[rul zero are dou[ reprezent[ri distincte: 000...0 ]i 100...0, adic[ +0 ]i - 0; tabelele de adunare ]i @nmul\ire sunt complicate din cauza bitului de semn care trebuie tratat separat. Complement logic ]i aritmetic Complementul logic (complement fa\[ de 1) se calculeaz[ @nlocuind, pentru valorile negative, fiecare bit 0 cu 1 ]i 1 cu 0. Complementul aritmetic (complement fa\[ de 2) este ob\inut adun`nd o unitate la valoarea complementului logic. Exemplu: Reprezentarea num[rului (-6) pe 4 bi\i: +6 = 0110

Semn ]i valoare absolut[: - 6 = 1110 Complement fa\[ de 1: - 6 = 1001 Complement fa\[ de 2: - 6 = 1010 Se poate u]or constata c[ intervalul numerelor @ntregi N care se pot reprezenta @n complement fa\[ de 1 este acela]i ca ]i pentru reprezentarea semn ]i valoare absolut[. Pentru reprezentarea @n complement fa\[ de 2 exist[ o valoare @n plus, deci pentru k bi\i vom avea: -2k-1 N (2k-1-1). Se poate remarca faptul c[ bitul cel mai din st`nga (bitul de semn) este @ntotdeauna 0 pentru numere pozitive ]i 1 pentru cele negative ]i aceasta pentru fiecare din cele trei reprezent[ri, conform tabelului urm[tor.

(16 bi\i 216 = 65536 = 2 32768 valori posibile) zecimal semn ]i valoare complement complement absolut[ fa\[ de 2 fa\[ de 1 +32767 0111...1...1111 0111...1...1111 0111...1...1111 +32766 0111...1...1110 0111...1...1110 0111...1...1110 ... ... ... ... +1 0000...0...0001 0000...0...0001 0000...0...0001 +0 0000...0...0000 0000...0...0000 0000...0...0000 -0 1000...0...0000 -----------------1111...1...1111 -1 1000...0...0001 1111...1...1111 1111...1...1111 ... ... ... ... -32766 1111...1...1110 1000...0...0010 1000...0...0001 -32767 1111...1...1111 1000...0...0001 1000...0...0000 -32768 -----------------1000...0...0000 -----------------Reprezentarea @n complement fa\[ de 1 recunoa]te dou[ zerouri (+0 ]i 0), dar este simetric[, deoarece acelea]i numere pozitive ]i negative sunt reprezentabile, iar aceast[ situa\ie se poate u]or realiza electronic. #n complement fa\[ de 1 sau fa\[ de 2, opera\iile aritmetice sunt avantajoase, deoarece opera\ia de sc[dere se realizeaz[ prin adunarea complementului. #ntr-o adunare @n complement fa\[ de 1, o cifr[ de transport c[tre ordinul superior generat[ de bitul de semn trebuie ad[ugat[ la rezultatul ob\inut,

spre deosebire de complementul fa\[ de 2, c`nd aceast[ cifr[ de transport se ignor[. #n complement fa\[ de 1 sau 2 nu se produce dep[]ire de capacitate dec`t @n cazul @n care cifrele de transport generate de bitul de semn ]i de bitul anterior acestuia sunt diferite. Numere frac\ionare Numerele frac\ionare sunt numerele subunitare. Schimb[ri de baz[ a) binar zecimal Conversia se face adun`nd puterile corespunz[toare ale lui 2. Exemplu: 0.012 = 0 2-1 + 1 2-2 = 0.2510. b) zecimal binar Conversia se efectueaz[ prin @nmul\iri succesive cu 2 a numerelor pur frac\ionare. Acest algoritm trebuie s[ se termine c`nd se ob\ine o parte frac\ionar[ nul[ sau c`nd num[rul de bi\i ob\inu\i corespunde m[rimii registrului sau a cuv`ntului de memorie @n care se va stoca valoarea. Num[rul binar se ob\ine citind p[r\ile @ntregi @n ordinea calcul[rii lor. Exemplu: 0.125 2 = 0.250 = 0 + 0.250 0.25 2 = 0.50 = 0 + 0.50 0.50 2 = 1.0 = 1 + 0.0 Vom considera p[r\ile @ntregi de sus @n jos, deci: 0.25 10= 0.0012. Pentru numerele frac\ionare se pot remarca reprezent[rile @n virgul[ fix[ ]i virgul[ mobil[. Virgula fix[ (VF) Sistemele de calcul nu posed[ virgula la nivelul ma]inii, deci reprezentarea numerelor frac\ionare se face ca ]i c`nd acestea ar fi @ntregi, cu o virgul[ virtual[ a c[rei pozi\ie este controlat[ de c[tre programator. Datorit[ dificult[\ii de gestionare a virgulei de c[tre programator (pot apare frecvent situa\ii de dep[]ire a capacit[\ii de memorare), se prefer[ solu\ia aritmeticii @n virgul[ mobil[. Virgula mobil[ (VM) Primele sisteme de calcul utilizau doar virgula fix[ pentru efectuarea opera\iilor aritmetice, iar c[tre sf`r]itul anilor 50, @n urma apari\iei logicii

cablate s-a introdus pe scar[ larg[ reprezentarea @n virgul[ mobil[ a numerelor frac\ionare. #n majoritatea sistemelor de calcul actuale destinate @n special aplica\iilor de natur[ tehnico-]tiin\ific[, cele dou[ metode de reprezentare (virgula fix[ ]i virgula mobil[) coexist[ ]i sunt foarte utile. Reprezentarea @n virgul[ mobil[ const[ @n a reprezenta numerele sub forma urm[toare:

N = M BE

cu:

B M E

= baza (2, 8, 10, 16...) = mantisa = exponentul

Exponentul este un num[r @ntreg, mantisa normalizat[ este un num[r pur frac\ionar (f[r[ cifre semnificative la partea @ntreag[). Cu excep\ia num[rului zero (@n general reprezentat prin cuv`ntul 000...0), vom avea @ntotdeauna: 0.1 2 M < 12 , sau 0.510 M < 110. Exponentul ]i mantisa trebuie s[ poat[ reprezenta at`t numere pozitive c`t ]i negative. Cel mai adesea, mantisa admite o reprezentare sub forma semn ]i valoare absolut[, iar exponentul este f[r[ semn, dar decalat. Exemplu SM ED M

unde SM este semnul mantisei, ED este exponentul decalat ]i M mantisa. Pentru nu num[r de k bi\i rezerva\i pentru ED se pot reprezenta f[r[ semn 2k valori, de la 0 la 2 k 1. Decalajul considerat este 2 k-1, ceea ce permite ca valorile de la 0 la 2 k-1-1 pentru ED s[ corespund[ unui exponent real (ER) negativ, iar valorile de la 2 k-1 la 2k 1 ale lui ED s[ corespund[ unui exponent real (ER) pozitiv. Deci domeniul de valori reprezentabile pentru exponentul real este de la 2k-1 la 2k-1-1. De exemplu, pentru k = 4, pe cei 4 bi\i putem reprezenta f[r[ semn numere de la 0 la 15 pentru ED. Decalajul considerat este 2 k-1 = 23 = 8, deci pentru exponentul real (ER) putem considera valori de la - 2k-1 = -23 = -8 ]i p`n[ la 2 k-1 1 = 23 1 = 7. Rela\ia existent[ se poate scrie astfel: ER = ED D.

Exponentul determin[ intervalul de numere reprezentabile @n sistemul de calcul, iar numerele prea mari pentru a putea fi reprezentate corespund unei dep[]iri superioare de capacitate de memorare [overflow], iar numerele prea mici corespund unei dep[]iri inferioare de capacitate de memorare [underflow]. M[rimea mantisei exprim[ precizia de reprezentare a numerelor. Avantajul utiliz[rii virgulei mobile fa\[ de virgula fix[ const[ @n intervalul mult mai extins al valorilor posibile de reprezentat. Figura urm[toare prezint[ schematic tipurile diverse de informa\ii prelucrate @n sistemele de calcul. INFORMA|II

INSTRUC|IUNI (diferite formate @n cod ma]in[) Cod op. Operanzi

DATE

Numerice

Nenumerice Codificare prin tabele BCD (6 bi\i) ASCII (7 bi\i) EBCDIC (8 bi\i)

Numere @ntregi pozitive (conversie direct[ zecimal binar)

Numere @ntregi negative

SVA Numere frac\ionare

C1

C2

VF

VM (mantis[, baz[, exponent)

Standardul IEEE 754 Standardul IEEE [Institute of Electrical and Electronics Engineers] define]te trei formate de reprezentare a numerelor @n virgul[ mobil[: a) simpl[ precizie pe 32 de bi\i (1 bit pentru SM, 8 bi\i pentru ED ]i 23 pentru M); b) dubl[ precizie pe 64 bi\i (1 bit pentru SM, 11 bi\i pentru ED ]i 52 bi\i pentru M); c) dubl[ precizie extins[ pe 96 bi\i (1 bit pentru SM, 15 bi\i pentru ED ]i 80 bi\i pentru M) . d) precizie cvadrupl[ pe 128 bi\i (1 bit pentru SM, 15 bi\i pentru ED ]i 112 bi\i pentru M) Exponentul este decalat cu 128 pentru reprezentarea @n simpl[ precizie ]i cu 1024 pentru reprezentarea @n dubl[ precizie. Mantisa fiind normalizat[, exist[ siguran\a c[ primul bit al mantisei are valoarea 1, ceea ce permite omiterea sa (bit ascuns) pentru cre]terea preciziei de reprezentare, dar complic[ prelucrarea informa\iei. Coduri zecimale codificate @n binar Dac[ aritmetica sistemelor de calcul este de regul[ binar[, ea poate fi de asemenea ]i zecimal[. #n cazul calculatoarelor de buzunar ]i de birou, @n sistemele de calcul specifice aplica\iilor comerciale, opera\iile se efectueaz[ direct asupra reprezent[rii zecimale a numerelor. Un num[r zecimal, care cuprinde una sau mai multe cifre (de la 0 la 9), este codificat cu ajutorul bi\ilor utiliz`nd anumite coduri. Tabela de mai jos prezint[ patru exemple de astfel de coduri.

zecimal BCD
0 1 2 3 4 5 6 7 8 9 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

excedent-3 2 din 5
0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 00011 00101 00110 01001 01010 01100 10001 10010 10100 11000

bicvintal
01 00001 01 00010 01 00100 01 01000 01 10000 10 00001 10 00010 10 00100 10 01000 10 10000

Exemplu:

zecimal :129 binar :10000001 = 2 7 +20 = 128 + 1 BCD :000100101001

Codul BCD Codul BCD [Binary Coded Decimal] este unul dintre cele mai r[sp`ndite coduri cu semnifica\ia zecimal codificat @n binar, @n care fiecare cifr[ zecimal[ este codificat[ @n mod individual @n echivalentul s[u binar pe patru bi\i. Orice cifr[ zecimal[ se poate reprezenta pe patru bi\i, dar valorile reprezentabile pe patru bi\i sunt @n num[r de 2 4 = 16, deci vor r[m`ne 6 configura\ii neutilizate, de care trebuie s[ se \in[ seama la efectuarea opera\iilor aritmetice. #n situa\ia opera\iei de adunare trebuie s[ se adauge 6 ori de c`te ori rezultatul este superior lui 9, iar pentru opera\ia de sc[dere se va extrage 6 dac[ rezultatul este negativ. Exemplu: zecimal binar BCD 15+ 01111+ 00010101+ 18 10010 00011000 --------------------33 100001 00101101 > 9 (= 33) 0110 +6 ------------00110011 (=33) Opera\iile aritmetice sunt deci destul de complicate, dar opera\iile de intrare / ie]ire sunt u]or de realizat deoarece fiecare entitate BCD este direct asociat[ unui caracter. Din aceste motive, codul BCD se g[se]te @n sistemele de calcul de gestiune, unde opera\iile aritmetice sunt mult mai pu\in numeroase dec`t opera\iile de intrare / ie]ire. Codul BCD este un cod ponderat 8 4 2 1, cei patru bi\i necesari pentru a codifica o cifr[ au o pondere corespunz[toare cu pozi\ia lor, respectiv 8 = 23 pentru bitul cu num[rul 3, 4 = 2 2 pentru bitul cu num[rul 2, 2 = 21 pentru bitul cu num[rul 1 ]i 1 = 2 0 pentru bitul cu num[rul 0. Codul excedent 3 Codul excedent - 3 nu este un cod ponderat, fiecare cifr[ zecimal[ este codificat[ separat @n echivalentul s[u binar + 3.

10

Exemplu: 12910 = 010001011100 excedent - 3 Avantajul acestui cod fa\[ de codul BCD este acela c[ opera\iile aritmetice sunt mai simple. De exemplu, complementarea fa\[ de 9 (similar[ @n sistemul zecimal cu complementarea fa\[ de 1 @n sistemul binar) este imediat[: este suficient[ complementarea fiec[rui bit. Codul 2 din 5 Codul 2 din 5 este un cod neponderat @n care fiecare cifr[ zecimal[ este codificat[ pe 5 bi\i, dintre care numai 2 au valoarea 1. Exemplu: 12910 = 001010011011000 cod 2 din 5 Avantajul acestui cod este acela de detectare (nu ]i corectare) a unei erori sau a unui num[r impar de erori. Codul bicvintal Codul bicvintal este un cod ponderat 5043210 care permite detectarea erorilor. O cifr[ zecimal[ este codificat[ printr-un num[r binar pe 7 bi\i, av`nd un singur bit egal cu 1 pe primele 2 pozi\ii din st`nga ]i un singur bit egal cu 1 pe 5 pozi\ii cele mai din dreapta. Exemplu: 12910 = 010001001001001010000 bicvintal. 2.2 Coduri de erori Informa\iile pot fi modificate involuntar @n timpul transmisiei sau stoc[rii lor @n memorie. Trebuie deci utilizate anumite coduri care permit detectarea sau chiar corectarea erorilor datorate acestor modific[ri. Aceste coduri se constituie pe un num[r de bi\i superior celui strict necesar pentru a codifica informa\ia. Astfel, celor m bi\i de date li se adaug[ k bi\i de control. Deci, @n memorie vor fi stoca\i n = m + k bi\i. Asemenea configura\ii definesc codurile redundante. Unele coduri nu permit dec`t detectarea erorilor (coduri autoverificatoare), altele permit detectarea ]i corectarea uneia sau mai multor erori (coduri autocorectoare). Controlul de paritate este codul autoverificator cel mai simplu. El se compune din m + 1 bi\i: cei m bi\i de informa\ie la care se adaug[ al (m + 1) lea bit numit bit de paritate. Valoarea sa este aleas[ astfel ca num[rul total de bi\i egali cu 1, calculat pe n + 1 bi\i s[ fie par (@n cazul unei parit[\i pare), sau impar (paritate impar[).

11

Exemplu: Transmiterea de caractere codificate @n ASCII pe 7 bi\i plus un bit de paritate @ntre un calculator ]i un terminal. A 1 1000001 B 1 1000010 E 0 1000101 bit de paritate impar[ Dac[ un bit este schimbat din eroare @n timpul transferului, paritatea nu mai este verificat[ ]i informa\ia trebuie retransmis[, deoarece eroarea nu poate fi localizat[ pentru a putea fi corectat[. #n general, controlul de paritate nu permite dec`t detectarea unui num[r impar de erori, @n cazul unui num[r par efectele se pot anula. Controlul de paritate nu poate fi utilizat dec`t pentru transmisii @n care posibilitatea apari\iei erorilor este sc[zut[ (de exemplu, @n interiorul unui calculator sau @ntre calculator ]i perifericele sale). Codul dublei parit[\i Codificare: consider[m exemplul unui cod ASCII (7 bi\i); fiecare caracter este codificat pe o linie a unui tablou; un cod de paritate este efectuat pe fiecare linie (transversal); un cod de paritate este efectuat pe fiecare coloan[ (longitudinal); Decodificare controlul transversal permite detectarea erorilor pe linie; controlul longitudinal permite detectarea erorilor pe coloan[; Exemplu: Se dore]te transmiterea mesajului 1968 cu paritate impar[; se detecteaz[ o eroare la intersec\ia primei linii cu coloana a 4 -a. 1 1 9 6 8 bit paritate contr. transv. 2 3 4 5 6 7 bit control paritate longitudinal 0 1 1 0 F A A A

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

A A A

F A

A A

12

Dubla paritate permite corectarea unei erori, sau @n anumite cazuri a unui num[r impar de erori (ca de exemplu un num[r impar de bi\i erona\i pe aceea]i linie, coloan[ sau repartiza\i pe linii ]i coloane diferite). Principiul dublei parit[\i este adesea utilizat @n stocarea pe band[ magnetic[ a informa\iilor. Astfel, pentru o band[ cu n piste: fiecare caracter este stocat transversal pe n 1 piste; un bit de paritate transversal este stocat pe a n-a pist[; un bloc de caractere suport[ un control longitudinal de paritate. Codul lui Hamming Codul lui Hamming este un cod autocorector bazat pe teste de paritate. Versiunea cea mai simpl[ permite corectarea unui bit eronat. Celor m bi\i de informa\ie li se adaug[ k bi\i de control al parit[\ii. Vom avea n = m+k bi\i necesari pentru transmiterea informa\iei. Deoarece trebuie indicate n + 1 posibilit[\i de eroare (inclusiv absen\a erorii) prin cei k bi\i de control, trebuie ca 2k n + 1. Cele 2k posibilit[\i de de codificare pe k bi\i servesc la determinarea pozi\iei erorii, apoi se poate corecta bitul eronat. Tabelul urm[tor permite determinarea lui k c`nd se cunoa]te n: m 0 0 1 1 2 3 4 4 5 6 7 8 9 10 ... 120 k 1 2 2 3 3 3 3 4 4 4 4 4 4 4 ... 8 n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ... 128 De obicei se ia n = 2k 1 @n loc de n < 2k 1. Dac[ se numeroteaz[ bi\ii de la dreapta spre st`nga pornind de la 1, bi\ii de control (sau de paritate) sunt plasa\i pe pozi\ia puterilor lui 2 (bi\ii cu num[rul 1, 2, 4, 8, 16, ...). Fiecare bit de control efectueaz[ control de paritate (par[ sau impar[) asupra unui anumit num[r de bi\i de date. Se determin[ astfel cei n bi\i de transmis sau de stocat. Exemplu: Dac[ m = 4 se poate construi un cod Hamming (CH) pe 7 bi\i (n = 7), ad[ug`nd 3 bi\i de control (k = 3). 7 6 5 4 3 2 1 m4 m3 m2 k3 m1 k2 k1 Cei trei bi\i de control sunt plasa\i pe pozi\ia puterilor lui 2: k1 1; k2 2; k3 4. Vom vedea acum, pentru fiecare bit al mesajului care sunt bi\ii de control care permit verificarea parit[\ii sale. 7 = (0111)2 = 4 + 2 + 1 7 este controlat de k 3, k2, k1; 6 = (0110)2 = 4 + 2 6 este controlat de k 3, k2;

13

5 = (0101)2 = 4 +1 5 este controlat de k 3, k1; 4 = (0100)2 = 4 4 este controlat de k 3; 3 = (0011)2 = 2+1 3 este controlat de k 2, k1; 2 = (0010)2 = 2 2 este controlat de k 2; 1 = (0001)2 = 1 1 este controlat de k 1; Problema se pune ]i invers: care sunt pozi\iile binare controlate de c[tre fiecare cod? R[spunsul este urm[torul: k1 controleaz[ bi\ii cu numerele 1, 3, 5, 7; k2 controleaz[ bi\ii cu numerele 2, 3, 6, 7; k3 controleaz[ bi\ii cu numerele 4, 5, 6, 7. C`nd se recep\ioneaz[ informa\ia, se efectueaz[ controlul de paritate. Pentru fiecare bit de control se compar[ valoarea transmis[ cu cea recalculat[. Dac[ cele dou[ valori sunt identice, se atribuie valoarea 0 unei variabile binare A i asociat[ bitului de control k i, altfel, Ai prime]te valoarea 1. Valoarea zecimal[ a configura\iei binare format[ din variabilele Ak, Ak-1, ..., A1 furnizeaz[ pozi\ia bitului eronat, care se poate corecta. Relu[m exemplul precedent: Presupunem c[: pentru k 1, A1 = 1, pentru k 2, A2 = 1, iar pentru k 3, A3 = 0. Eroarea se g[se]te @n pozi\ia (A 3A2A1)2 = (011)2 = 3. #ntr-adev[r, k1 poate detecta o eroare @n pozi\iile 1, 3, 5, 7, k 2 poate detecta o eroare pe pozi\iile 2, 3, 6, 7, iar k 3 pe pozi\iile 4, 5, 6, 7. O eroare detectat[ de k 1 ]i k 2 nu ]i de k3 nu poate proveni dec`t din bitul 3. Exemple: (A3A2A1)2 = (000)2 indic[ absen\a unei erori; (A3A2A1)2 = (001)2 indic[ eroare pe bitul 1; (A3A2A1)2 = (110)2 indic[ eroare pe bitul 6. Exemplu de recep\ionare a unui mesaj: (1011100) 2. Dac[ s-a utilizat un CH cu paritate par[, s[ se reconstituie mesajul ini\ial (n = 7, k = 3, m = 4). num[r 7 6 5 4 3 2 1 tip m4 m3 m2 k3 m1 k2 k1 valoare 1 0 1 1 1 0 0 k1 = 0 controleaz[ pozi\iile 1, 3, 5, 7, nu se verific[, deci A 1 = 1; k2 = 0 controleaz[ pozi\iile 2, 3, 6, 7, se verific[, deci A 2 = 0; k3 = 0 controleaz[ pozi\iile 4, 5, 6, 7, nu se verific[, deci A 3 = 1; Adresa erorii (A3A2A1)2 = (101)2 = 5. Bitul num[rul 5, care este egal cu 1 este eronat. Mesajul ini\ial corectat ]i f[r[ bi\ii de control este: (1001) 2.

14

Calculul simplificat al codului lui Hamming (CHS) Metoda Hamming poate simplifica calculul bi\ilor de control, astfel: se transform[ @n binar pozi\iile din mesaj care con\in valoarea 1; se @nsumeaz[ modulo 2, astfel: pentru paritate par[: un num[r par de 1 0, un num[r impar de 11 (sum[ modulo 2 direct[); pentru paritate impar[: un num[r par de 11, un num[r impar de 10 (sum[ modulo 2 inversat[). Exemplu: S[ codific[m mesajul (10101011001) 2 cu paritate par[: m = 11, deci k = 4 ]i n = 15. num[r 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 tip m 11 m10 m9 m8 m7 m6 m5 k4 m4 m3 m2 k3 m1 k2 k1 valoare 1 0 1 0 1 0 1 ? 1 0 0 ? 1 ? ? Bi\ii cu valoarea 1 se g[sesc pe pozi\iile 15, 13, 11, 9, 7, 3, deci: 15 = 1 1 1 1 13 = 1 1 0 1 11 = 1 0 1 1 9=1 0 0 1 7=0 1 1 1 3=0 0 1 1 ----------0 1 0 0 bi\i de paritate k 4 k3 k2 k1 Mesajul codificat este deci (101010101001100) 2. Exemplu de recep\ie a unui mesaj: S-a primit mesajul urm[tor: (101000101001100) 2, codificat cu paritate impar[. Bi\ii cu valoarea 1 se g[sesc pe pozi\iile 15, 13, 9, 7, 4, 3. 15 = 1 1 1 1 13 = 1 1 0 1 9=1 0 0 1 7=0 1 1 1 4=0 1 0 0 3=0 0 1 1 ---------- adunare modulo 2 inversat[. 0 1 0 0 A4A3A2A1 eroare pe pozi\ia 4.

15

Dup[ corectarea erorii ]i eliminarea codurilor de control, mesajul ini\ial este: (10100011001) 2. Codul lui Hamming ]i erorile grupate Metoda lui Hamming poate corecta @n general doar un bit eronat, dar se poate utiliza pentru detectarea ]i corectarea erorilor multiple pe o secven\[ de bi\i aranj`nd mesajul sub form[ matricial[, codific`nd pe linie dup[ metoda HC ]i transmi\`nd mesajul pe coloane. De exemplu, pentru transmiterea mesajului Hamming se codific[ pe o linie fiecare caracter @n cod ASCII, complet`nd cu bi\ii de control dup[ metoda CH. ASCII Cod Hamming (pentru fiecare liter[) 11 10 9 8 7 6 5 4 3 2 1 (num[r) H 1001000 1 0 0 1 1 0 0 1 0 0 0 a 1100001 1 1 0 0 0 0 0 0 1 1 0 m 1101101 1 1 0 0 1 1 0 0 1 1 1 m 1101101 1 1 0 0 1 1 0 0 1 1 1 i 1101001 1 1 0 0 1 0 0 1 1 0 1 n 1101110 1 1 0 0 1 1 1 1 0 0 1 g 1100111 1 1 0 0 0 1 1 0 1 0 1 Dac[ se produc erori grupate, pentru o secven\[ de bi\i suficient de scurt[, ( 7 pentru acest caz) atunci, efectu`nd transmisia pe coloan[ vom avea un singur bit eronat pe linie, pe care-l putem corecta datorit[ bi\ilor de control ad[uga\i potrivit metodei lui Hamming. #n ultimii ani, codurile autocorectoare sunt din ce @n ce mai utilizate pentru a asigura integritatea informa\iilor stocate @n memorie. Un cod autocorector permite cre]terea considerabil[ a timpului mediu @ntre dou[ defec\iuni care pot s[ apar[: erorile nu apar dec`t atunci c`nd num[rul lor dep[]e]te capacitatea de corectare a codului respectiv. Erorile care nu sunt corectate, cel pu\in se pot detecta. Detectarea erorilor grupate #n comunica\iile la distan\[, erorile sunt mult mai frecvente dec`t @n interiorul calculatorului. Erorile consecutive pot fi extinse adesea la un bloc @ntreg de bi\i de informa\ie. Se vor utiliza @n acest sens coduri care permit detectarea erorilor grupate, corectarea acestora fiind adesea prea costisitoare.

16

Metoda codurilor polinomiale (CRC) CRC [Cyclic Redondant Coding] este metoda cea mai folosit[ pentru detectarea erorilor grupate. #naintea transmiterii, informa\iei i se adaug[ bi\i de control, iar pe baza acestora, dac[ la recep\ionarea mesajului se detecteaz[ erori, atunci acesta trebuie retransmis. O informa\ie pe n bi\i poate fi considerat[ ca lista coeficien\ilor binari ai unui polinom cu n termeni, deci de grad n -1. Exemplu: 110001 x5 + x4 + 1; Pentru a calcula bi\ii de control se va efectua un anumit num[r de opera\ii cu aceste polinoame cu coeficien\i binari. Opera\iile se vor efectua modulo 2, adunarea ]i sc[derea nu va \ine seama de cifra de transport, deci toate opera\iile de adunare ]i sc[dere sunt identice cu opera\ia logic[ XOR. Pentru generarea ]i verificarea bi\ilor de control at`t sursa c`t ]i ddestina\ia mesajului utilizeaz[ un polinom generator G (x). Dac[ M (x) este polinomul corespunz[tor mesajului ini\ial (de transmis), iar r este gradul polinomului generator G (x), atunci algoritmul de construire ]i verificare a codurilor care se incorporeaz[ @n mesajul de transmis este urm[torul: 1) se @nmul\e]te M (x) cu x r (se adaug[ r zerouri la sf`r]itul mesajului ini\ial); 2) se efectueaz[ @mp[r\irea modulo 2: M(x)*x r/G(x)=Q(x)+R(x)/G(x); C`tul Q (x) se ignor[, iar restul R (x) con\ine r bi\i. Se efectueaz[ sc[derea modulo 2: M (x) * x r R (x) = T (x), iar T (x) este polinomul care reprezint[ mesajul de transmis. Polinomul ciclic T (x) = Q (x) * G (x) este un multiplu al polinomului generator. 4) La recep\ionarea mesajului se efectueaz[ @mp[r\irea T (x) /G (x): a) dac[ restul = 0 nu sunt erori de transmisie; b) altfel, s-au produs erori, deci mesajul trebuie retransmis. Exemplu de transmitere a unui mesaj. Se dore]te transmiterea mesajului 101101 (6 bi\i) M (x) =x5 + x3 + x2 + 1. Polinomul generator este: 1011 G (x) = x3 + x + 1 de grad r = 3. 1) Efectu[m @nmul\irea: M (x) x r = 101101000 (se adaug[ r = 3 zerouri la M (x). 2) Realiz[m @mp[r\irea modulo 2: M (x)*x r/G (x):

17

1 0 1 1 0 1 0 0 0 1 0 1 1 1011 ---------------1 0 0 0 0 1 c`tul Q(x) 000001000 1011 -------0 0 1 1 R (x) = 0 1 1 3) C`tul Q (x) este ignorat. Pentru a realiza diferen\a modulo 2 M (x) *xr R (x) este suficient[ ad[ugarea celor r bi\i din R (x) la sf`r]itul mesajului M (x) mesajul de transmis este T (x) = 101101011. Exemplu de recep\ionare a unui mesaj. S-a primit mesajul urm[tor: 11010101. G (x) = 1011 (4 bi\i) G (x) = x3 + x + 1 de grad r = 3. 4) Se efectueaz[ @mp[r\irea T (x) / G (x). 1 1 0 1 0 1 0 1 1 0 1 1 1011 ---------------11110 01100 1010 -------01111 1011 -------01000 1011 -------0 0 1 1 1 R (x) = 1 1 1 R (x) 0, s-au detectat erori de transmisie, mesajul se retransmite. Cele mai utilizate polinoame generatoare G (x) sunt: CRC 12 = x12 + x11 + x3 + x2 + x + 1; CRC 16 = x16+ x15 + x2 + 1; 16 12 CRC CCITT = x + x + x5+ 1.

18

2.3 Elemente de logic[ numeric[ Logica propozi\ional[ este o algebr[ al c[rei obiectiv ini\ial este modelarea ra\ionamentului. Mai recent aceast[ algebr[ ]i-a demonstrat utilitatea ca instrument de concep\ie (concep\ia circuitelor calculatorului). O a treia utilizare a logicii const[ @n a servi ca model de calcul pentru limbajele de programare (Prolog). Logica propozi\ional[ este un model matematic care ne permite s[ ra\ion[m asupra naturii adev[rate sau false a expresiilor logice. O propozi\ie este un enun\ care poate lua una din cele dou[ valori de adev[r: adev[rat sau fals. Simbolurile care pot reprezenta o propozi\ie se numesc variabile propozi\ionale. Expresii logice O prim[ mul\ime de expresii logice se define]te recursiv astfel: - sunt operanzi atomici: variabilele propozi\ionale; constantele logice true ]i false; - Orice operand atomic este expresie logic[; - Dac[ E ]i F sunt expresii logice atunci E and F este expresie logic[; - Dac[ E ]i F sunt expresii logice atunci E or F este expresie logic[; - Dac[ E este expresie logic[ atunci not E este expresie logic[; Prezent[m defini\ia operatorilor logici and, or ]i not. And 0 0 0 1 0 1 0 1 or 0 1 0 0 1 1 1 1 not 0 1

1 1

Func\ii booleene Semnifica\ia unei expresii logice poate fi descris[ formal ca o func\ie care d[ o valoare adev[rat sau fals pentru expresia @ntreag[ pornind de la valoarea argumentelor, numit[ func\ie logic[ sau boolean[ . Tabele de adev[r O func\ie boolean[ poate fi reprezentat[ @n practic[ printr -o tabel[ de adev[r ale c[rei linii corespund tuturor combina\iilor de valori de adev[r

19

pentru argumente. Exist[ o coloan[ pentru fiecare argument ]i una pentru valoarea func\iei. Figura urm[toare prezint[ tabelele de adev[r pentru opera\iile logice and, or, not, xor. p q p and q p q p or q p not p p q p xor q 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 Tabela de adev[r a unei func\ii cu k argumente posed[ 2 k linii. Fiecare linie asigneaz[ pentru func\ie valoarea 0 sau 1, deci exist[ 2 2k func\ii. Operatori logici suplimentari implica\ia dac[ p este adev[rat atunci q este adev[rat; echivalen\a dac[ ]i numai dac[; operatorul nonand not (p and q), notat p nand q; operatorul nonor not (p or q), notat p nor q. Figura urm[toare prezint[ tabelele de adev[r pentru , , nand, nor. p 0 0 1 1 q 0 1 0 1 pq 1 1 0 1 p 0 0 1 1 q pq 0 1 1 0 0 0 1 1 p 0 0 1 1 q p nand q 0 1 1 1 0 1 1 0 p 0 0 1 1 q 0 1 0 1 p nor q 1 0 0 0

Asociativitatea ]i preceden\a operatorilor logici Operatorii logici and ]i or sunt asociativi ]i comutativi ]i vor fi grupa\i de la st`nga la dreapta. Ceilal\i operatori nu sunt asociativi. Preceden\a operatorilor logici: not, nand, nor, and, or, , . Func\ii booleene ale expresiilor logice Vom construi expresii logice pornind de la tabelele de adev[r. De]i se pot defini o infinitate de expresii logice, de obicei, se va @ncerca pe c`t posibil s[ se g[seasc[ cea mai simpl[ expresie logic[. Nota\ii prescurtate and se reprezint[ prin juxtapunerea operanzilor;

20

or se reprezint[ prin +; not se reprezint[ prin sau prin bararea variabilei. Construc\ia unei expresii logice din tabela de adev[r Forma normal[ disjunctiv[ este o sum[ logic[ de mintermi pentru care func\ia ia valoarea logic[ adev[rat (1). Un minterm este un produs logic de literale (variabile propozi\ionale) ale unei linii, astfel: dac[ p are valoarea 0 @n coloana k, se utilizeaz[ p , altfel se utilizeaz[ p. Forma normal[ conjunctiv[ este un produs logic de maxtermi pentru care func\ia ia valoarea 0. Un maxterm este o sum[ logic[ de literale ale unei linii, astfel: dac[ p ia valoarea 0 se utilizeaz[ p, altfel p . Legi algebrice pentru expresii logice Legi ale echivalen\ei 1. Reflexivitate: ( p p ) ; 2. 3. 4.

Comutativitate: ( p q ) (q p ) ;

Tranzitivitate: ( p q ) and (q r ) ( p r ) ; Echivalen\a nega\iilor: ( p q ) ( p q ) ;

Legi similare aritmeticii 5. Comutativitate and: p q q p ; 6. 7. 8.

Asociativitate and: p (q r ) ( p q ) r ; Comutativitate or: ( p + q ) (q + p ) ; Asociativitate or: ( p + (q + r )) (( p + q ) + r ) ;

9. Distributivitate and fa\[ de or: p (q + r ) p q + p r ; 10. 1 (true) este identitate pentru and: p 1 p ; 11. 0 (false) este identitate pentru or: ( p + 0 ) p ; 12. 0 este adsorbant pentru and: p 0 0 ; 13. Eliminare duble nega\ii: p p . Diferen\e fa\[ de legile aritmeticii 14. Distributivitate or fa\[ de and: ( p + q r ) ( p + q ) ( p + r ) ; 15. 1 este adsorbant pentru or: 1 + p 1 ;

21

16. Idempoten\a operatorului and: p p p ; 17. Idempoten\a operatorului or: p + p p ; 18. Subsumarea: a) ( p + p q ) p ; b) p ( p + q ) p . 19. Eliminarea anumitor nega\ii: a) p ( p + q ) p q ; b) ( p + p q ) p + q . 20. Legile lui de Morgan: a) b) c) d) pq p + q ; p + q pq ; p1 p 2 ... p n p 1+ p 2+...+ p n; p1 + p2 + ... + pn p1 p2 ... pn .

Legi ale implica\iei 21. ( p q ) and (q p ) ( p q ) ; 22. 23. 24.

( p q) ( p q) ; ( p q ) and (q r ) ( p r ) ; ( p q) ( p + q).

26. Analiza de caz: ( p q ) and ( p q ) q ; 28. Reducere la absurd: ( p 0 ) p ; 27. Contrara reciprocei: ( p q ) (q p ) ;

Tautologii ]i metode de demonstra\ie 25. Legea ter\ului exclus: ( p + p ) 1 ;

29. Demonstra\ie prin reducere: ( p 1) p ; Exemple: 1) Func\ii de o variabil[ a: a z0 0 0 1 0 z1 0 1 z2 1 0 z3 1 1 z0 = 0 constant[; z1 = a identitate; z 2 = a nega\ie; z3 = 1 constant[;

22

2) Func\ii logice de 2 variabile a ]i b: 00 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 01 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 10 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 11 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ab F0 = 0 F1 = a b F2 = a b F3 = a F4 = a b F5 = b F6 = a b F7 = a + b F8 = a + b = a b F9 = a b F10 = b F11 = a + b F12 = a F13 = a + b F14 = (ab) = a+b F15 = 1

Tabelele Karnaugh (TK) Tabelele sau diagramele lui Karnaugh permit simplificarea func\iilor logice. Metoda se bazeaz[ pe inspectarea vizual[ a tabelelor judicios construite (metoda este util[ cu un num[r de variabile 6). TK se poate considera ca o transformare a tabelei de adev[r. TK cu 2 variabile Cele 4 c[su\e ale TK corespund celor 4 linii ale tabelei de adev[r: fiecare variabil[ logic[ completeaz[ o linie sau o coloan[; un produs de 2 variabile completeaz[ o c[su\[; Pentru a completa TK pornind de la tabela de adev[r se atribuie valoarea 1 c[su\elor corespunz[toare st[rilor din intrare @n care func\ia are valoarea 1. Metoda de simplificare const[ din a @ncadra c[su\ele ocupate, adiacente pe aceea]i linie sau coloan[ (suprapunerile sunt permise). Figura urm[toare prezint[ o TK cu 2 variabile.

23

a 0 0 1 1

b 0 1 0 1

z 0 1 1 1

1 1

0 1 1

#n urma reducerii avem vom ob\ine z = a+b. TK cu 3 variabile Tabela de adev[r a func\iei logice de 3 variabile se transform[ @ntr -o TK cu dou[ dimensiuni, grup`nd dou[ variabile pe linie sau coloan[. Trecerea de la o linie (coloan[) la alta difer[ printr-o singur[ variabil[ (se consider[ tabela ca @nf[]ur[toarea unui cilindru. Pentru construirea TK cu 3 variabile: fiecare variabil[ completeaz[ un bloc de 4 c[su\e; un produs logic de dou[ variabile completeaz[ un bloc de 2 c[su\e; un produs logic de 3 variabile completeaz[ o c[su\[. Exemplu: f (a, b, c) = abc+abc+abc+abc; b 0 1 #n urma reducerii se ob\ine z = ac+bc. TK cu 4 variabile Se construie]te TK, precum @nf[]ur[toarea unui cilindru, at`t orizontal c`t ]i vertical, astfel: fiecare variabil[ completeaz[ un bloc de 8 c[su\e; un produs logic de 2 variabile completeaz[ un bloc de 4 c[su\e; un produs logic de 3 variabile completeaz[ un bloc de 2 c[su\e; un produs logic de 4 variabile completeaz[ o c[su\[. Exemplu: z(a,b,c,d)=abcd+abcd+abcd+abcd+abcd+ abcd+abcd+abcd+abcd+abcd+abcd.
ac

00 1

01

11 1 1

10 1

24

cd ab 00 01 11 10

00 1 1 1

01

11

10 1

1 1 1

1 1

1 1

Expresia simplificat[ este z = d+bc+abc. #n general, metoda de simplificare a unei func\ii de 4 variabile prin TK este urm[toarea: @ncadrarea c[su\elor cu 1 care nu sunt adiacente altora cu 1 ]i deci nu pot forma blocuri de 2 c[su\e; @ncadrarea c[su\elor care pot forma grupe de 2 c[su\e dar nu pot forma blocuri de 4 c[su\e; @ncadrarea c[su\elor care pot forma grupe de 4 c[su\e dar nu pot forma blocuri de 8 c[su\e; @ncadrarea grupelor de 8 c[su\e adiacente; Pentru reducerea func\iilor logice cu mai mult de 4 variabile trebuie create mai multe tabele Karnaugh.

25

Vous aimerez peut-être aussi