Sunteți pe pagina 1din 8

Bazele Informaticii Laborator nr.

Operaţii cu numere reprezentate în BCD

În codul BCD (denumirea improprie a codului NBCD) fiecare cifră zecimală a unui
număr este înlocuită cu tetrada corespunzătoare din codul 8421 (codul NBCD). Reamintim
că acest tip de reprezentare se mai numeşte şi zecimal codificat binar.
Prezentăm în continuare modalităţile în care se pot efectua calcule aritmetice cu
numere reprezentate în BCD de către o unitate aritmetică care lucrează în binar.

Adunarea în zecimal codificat binar presupune:


1. exprimarea fiecărei cifre zecimale printr-o tetradă binară;
2. efectuarea adunării poziţie cu poziţie, de la dreapta la stânga; pot să apară
următoarele situaţii:
 dacă rezultatul aparţine sistemului zecimal atunci suma din poziţia respectivă nu
necesită corecţii;
 dacă rezultatul sumei poziţiei respective este un număr situat în mulţimea
16,17,18,19 atunci:
 transportul generat se adună la poziţia următoare;
 se adună 6 (0110) la suma din poziţia respectivă, deoarece transportul
generat la poziţia următoare a însemnat practic transferul numărului 16
(10000) şi nu 10 cât era necesar;
 dacă rezultatul poziţiei respective este situat în intervalul 10,15, atunci:
 se adună 6 (0110) la suma din poziţia respectivă, pentru a forţa transportul
la poziţia următoare;
 se adună transportul generat la suma din poziţia următoare.

Exemplu: Să se efectueze în BCD suma 5683 + 2794.

5683 + 0101 + 0110 + 1000 + 0011 +


2794 0010 0111 1001 0100
8477 0001  0001   1 0001 + 0111
1000 1110 + 0110 7
8 0110 0111
 1 0100 7
4

Mai sus transportul apărut din tetrada anterioară este evidenţiat prin „  ”.

Exerciţii:
a) 567 + 856; b) 4319 + 7214; c) 6915 + 7298; d) 795 + 356; e) 1876 + 9545
Bazele Informaticii Laborator nr.5
Exemplu: Să se efectueze în BCD suma 1234 + 7899 = 9133.

1 1 1
0001 0010 0011 0100 +
0111 1000 1001 1001
_________________________
1001 1011 1101 1101+
0110 0110 0110
_________________________
1001 1 0001 1 0011 1 0011

Scăderea în zecimal codificat binar se efectuează astfel:


1. fiecare cifră zecimală se exprimă printr-o tetradă binară;
2. se efectuează scăderea poziţie cu poziţie; dacă pentru o poziţie nu este necesar
împrumutul de la poziţia următoare, atunci rezultatul este corect;
3. dacă este necesar un împrumut, acesta va declanşa execuţia următoarelor operaţiuni:
 se scade 1 de la poziţia următoare;
 se adună 16 (10000) la descăzutul operaţiei curente;
 se efectuează scăderea;
 se scade 6 (0110) din rezultat pentru corecţie, deoarece s-a împrumutat 16 şi nu
10 cât era necesar.

Exemplu: Să se efectueze în cod BCD diferenţa 539-175

539 - 0101 -  1 0011 - 1001 -


275 0001  0111 0101
264 0100 - 1100 - 0100
0010 0110 4
0010 0110
2 6

Împrumutul de la o tetradă din poziţia următoare a este evidenţiat prin „  ”.

Exerciţii:

a) 1234 – 765; b) 352 – 187; c) 4175 – 2497; e) 5432 – 2789; f) 6739 – 4869
Bazele Informaticii Laborator nr.5

Coduri detectoare şi corectoare de erori

Determinarea parităţii – paritate pară, paritate impară


Dacă reprezentarea binară a unei valori conţine un număr impar de valori de 1,
spunem ca avem paritate impară, iar dacă conţine un număr par de valori de 1, spune că
avem un număr cu paritate pară.

Atunci când este necesară transmiterea unei informaţii de la un dispozitiv la altul,


există posibilitatea modificării accidentale a valorii unui bit sau a unui grup de biţi din
reprezentare numărului. Spunem că a apărut o eroare de transfer. Detecţia bitului transmis
incorect poate fi detectată în cel mai simplu mod prin introducerea la sfârşitul secvenţei de
biţi ce urmează a fi transferată şi a bitului de paritate. Dacă atât dispozitivul care transmite
informaţia cât şi receptorul convin să folosească acelaşi mod de calcul asupra bitului de
paritate (pară sau impară), dispozitivul care emite poziţionează ultimul bit astfel încât
numărul total de biţi de 1 din reprezentarea informaţiei transmise (inclusiv bitul de
paritate) să fie par sau impar.

Exemplu :

I. paritate pară:

informaţia ce trebuie transmisă: 10110101


determinarea bitului de paritate: 1
informaţia ce va fi transmisă: 101101011

II. paritate impară:

informaţia ce trebuie transmisă: 10110101


determinarea bitului de paritate: 0
informaţia ce va fi transmisă: 101101010

Dispozitivul care va recepţiona informaţia va contoriza numărul de biţi de 1


recepţionaţi. Dacă ultimul bit din mesajul recepţionat diferă de cel calculat de receptor
conform parităţii stabilite, atunci se semnalează emiţătorul despre apariţia unei erori la
recepţie, cerând ca mesajul să fie retransmis.

Această metodă este utilă pentru transferuri de dimensiuni mici, unde retransmiterea
informaţiei nu prezintă un inconvenient atât de mare. Principalul neajuns al acestei metode
este că nu poate detecta prezenţa a mai mult de un bit eronat în mesajul recepţionat. Dacă
doi biţi din mesaj sunt incorecţi, bitul de paritate nu mai semnalează eroarea.
Bazele Informaticii Laborator nr.5

Coduri polinomiale ciclice

Codurile polinomiale ciclice sunt cele mai utilizate coduri pentru detectarea erorilor
dintr-un mesaj transmis. Ele mai sunt cunoscute şi sub numele de coduri cu redundanţă
ciclică sau coduri CRC (Cyclic Redundancy Code). Codurile polinomiale sunt bazate pe
tratarea şirurilor de biţi ca reprezentări de polinoame cu coeficienţii 0 sau 1. O secvenţă de
cod de n  1 biţi, M  an an 1  a0 , este văzută ca o listă de coeficienţi ai unui polinom de
grad n :
M ( x)  an x n  an 1 x n 1   a1 x  a0 , ai  0,1, i  0, n .
Codurile polinomiale ciclice au proprietatea: dacă M  an an 1  a0 este un cuvânt
cu sens, atunci orice permutare ciclică a simbolurilor sale este un cuvânt cu sens
M i  ai ai 1  a0 an an 1  ai 1 .
În cazul utilizării acestor coduri, mesajului M , ce trebuie transmis, i se asociază
polinomul M (x) . Apoi, printr-un algoritm de codificare, polinomul M (x) se transformă
într-un polinom T (x) , astfel încât T (x) să fie multiplu al unui polinom G (x) , numit
polinom de generare.
Pentru realizarea codificării se poate utiliza algoritmul de înmulţire sau algoritmul
de împărţire a polinoamelor. Operaţiile aritmetice asupra coeficienţilor polinoamelor se
fac în modulo 2 şi deci nu există transport la adunare sau împrumut la scădere.
Folosind algoritmul de înmulţire: T ( x)  M ( x)G ( x) nu se obţine o separare a
simbolurilor redundante de cele informaţionale, aceasta fiind principalul motiv pentru care
se preferă algoritmul de împărţire, deşi este mai complicat.
Considerăm că polinomul de generare este de grad r :
G ( x)  br x r  br 1 x r 1    b0 , bi  0,1, i  0, r .

Algoritmul de codificare prin împărţire este următorul:


 se înmulţeşte polinomul M (x) cu x r obţinându-se M ( x)  x r M ( x) ;
 se împarte M (x ) la G (x) :
M ( x) R( x)
 C ( x) 
G ( x) G ( x)
Gradul polinomului R (x) va fi cel mult egal cu r  1 . Coeficienţii polinomului
R (x ) , considerat de grad r  1 (eventual completând cu coeficienţi nuli), constituie
simbolurile de control asociate mesajului informaţional.
 se adună (modulo 2) R (x) cu M (x ) , obţinându-se polinomul
T ( x)  M ( x)  R( x) . Coeficienţii polinomului T (x) constituie mesajul ce se va
transmite: T  an an 1  a0 cr 1  c0 , care conţine în poziţiile semnificative cele n  1
simboluri informaţionale, iar în poziţiile mai puţin semnificative cele r simboluri de
control.
Bazele Informaticii Laborator nr.5
Polinomul ataşat mesajului transmis este un multiplu al polinomului de generare.
Într-adevăr:
T ( x) M ( x)  R( x) M ( x) R( x)
  
G ( x) G ( x) G ( x) G ( x)
se obţine:
T ( x) R( x) R( x)
 C ( x)    C ( x) .
G ( x) G ( x) G ( x)
  
0
Polinomul T (x) este divizibil cu G (x) . Această proprietate este folosită drept
criteriu pentru detecţia erorilor.
Fie mesajul recepţionat T  , căruia i se asociază polinomul T (x) . Se poate scrie că
T ( x)  T ( x)  E ( x) , unde E (x) este polinomul erorilor. Aplicând criteriul de detecţie a
erorilor, obţinem:
T ( x) T ( x) E ( x) E ( x)
   C ( x)  .
G ( x) G ( x) G ( x) G ( x)
Se observă că dacă E (x) este multiplu al lui G (x) , mesajul recepţionat este validat,
deşi conţine erori. Dacă E (x) nu este multiplu al lui G (x) , atunci eroarea este sesizată.
Prin această metodă sunt determinate toate pachetele de erori de lungime mai mică
decât gradul lui G ( x)  1 . Prin pachet de erori se înţelege o succesiune de simboluri,
corecte sau eronate, în care primul şi ultimul simbol sunt eronate. În transmisia datelor se
folosesc trei polinoame generatoare, considerate standarde internaţionale:
CRC - 12  x12  x11  x 3  x 2  x  1 ,
CRC - 16  x16  x15  x 2  1 ,
CRC - CCITT 16  x16  x12  x 5  1 .
CRC - 32  x 32  x 26  x 23  x 22  x16  x12  x11  x10  x 8  x 7  x 5   x 4  x 2  x  1

Exemplu 1:
Să se determine mesajul transmis ştiind că mesajul de transmis este M  11001001
şi polinomul de generare este G ( x)  x 4  x 2  1 .
Rezolvare:
 M ( x)  x 7  x 6  x 3  1;
 M ( x)  x 4 M ( x) , deoarece gradul lui G (x) este 4;
 M ( x)  x11  x10  x 7  x 4 ;
 se împarte M (x ) la G (x) :

Observaţie. Adunarea şi scăderea în modulo 2 sunt echivalente.


Bazele Informaticii Laborator nr.5

Rezultă că R( x)  x 3 .
 Polinomul transmis este T ( x)  M ( x)  R( x) :
T ( x)  x11  x10  x 7  x 4  x  1 .
Coeficienţii acestui polinom reprezintă mesajul ce se va transmite:
T  11001001
  1000 .
simboluri simboluri de
informatio nale control

Exerciţii:
Care va fi mesajul transferat daca mesajul util este:
a) 10101010; b) 11001101; c) 10010110; d) 10000011

Exemplul 2:
Ştiind că s-a recepţionat mesajul T   1010101011, să se verifice corectitudinea lui.

Rezolvare:
Mesajului recepţionat i se asociază polinomul T ( x)  x 9  x 7  x 5  x 3  x  1 .
Aplicăm criteriul de detecţie a erorilor şi împărţind polinomul T (x) la G (x) obţinem
câtul C ( x)  x 6  x 3  x 2  x  1 şi restul E ( x)  x . Deoarece E ( x)  0 rezultă că mesajul
recepţionat este eronat.

Exerciţii:
Care a fost mesajul util, daca la receptie s-a primit mesajul T, ştiind că polinomul de
generare a fost CRC – 12. Verificati daca transmisia a fost afectată de erori.

a) T = 110011001010100111
b) T = 111100001111000011
Bazele Informaticii Laborator nr.5

Codul Hamming

Richard Hamming a propus o metodă inovatoare de alcătuire a mesajului care va fi


transmis, prin includerea mai multor biţi de paritate, astfel încât receptorul să poată detecta
prezenţa unui bit eronat care să poată fi corectat.

Plasarea biţilor de paritate

Plasarea biţilor de paritate sunt locaţiile având ca indici puteri ale lui 2: {1, 2, 4, 8,
16, 32...}. Celelalte poziţii din mesaj sunt reprezentarea binară a informaţiei utile.

Vom considera în continuare că se foloseşte codificarea în paritate pară.

Pentru un mesaj util reprezentat pe 4 biţi sunt necesari încă 3 biţi de paritate:

1 2 3 4 5 6 7
P P P

Calcularea biţilor de paritate se face astfel:


p1  a3  a5  a7 ; p2  a3  a6  a7 ; p4  a5  a6  a7 .

Dacă presupunem că informaţia utilă ce trebuie transmisă are reprezentarea 1101,


mesajul final va arăta astfel:

1 2 3 4 5 6 7
1 0 1 0 1 0 1
Receptorul va calcula valorile biților de paritate și va identifica biții greșiți astfel:

Să presupunem ca a fost transmis mesajul de mai sus T=1010101 dar s-a recepționat
mesajul T’= 1010111
1 2 3 4 5 6 7
1 0 1 0 1 1 1

În această situație receptorul calculează valorile:


p1 '  p1  a3  a5  a7 ; p2 '  p2  a3  a6  a7 ; p4 '  p4  a5  a6  a7

Apoi bitul greșit este dat de numărul în baza doi dat de p4 p2 p1 = 110(2)=6(10). Deci
bitul 6 este greșit și va fi corectat(din 1 în 0). Adică mesajul corectat va fi:

1 2 3 4 5 6 7
1 0 1 0 1 0 1
Bazele Informaticii Laborator nr.5
Dacă se foloseşte codificarea în paritate impară, calculele se vor face după
formulele:

Pentru transmițător: p1  a3  a5  a7  1 ; p2  a3  a6  a7  1 ; p4  a5  a6  a7  1
Pentru receptor: p1 '  p1  a3  a5  a7  1 ; p2 '  p2  a3  a6  a7  1 ; p4 '  p4  a5  a6  a7  1

Exerciţii:

Codificaţi Hamming mesajele paritate pară: 1011; 1100; 1001; 1010.

Observaţie:

În cazul în care doi biţi din reprezentare sunt afectaţi de eroare, se poate detecta
prezenţa erorii, dar nu se poate specifica care a fost valoarea iniţială a celor doi biţi.

S-ar putea să vă placă și