Documente Academic
Documente Profesional
Documente Cultură
5 Coduri binar-zecimale
3.5.1 Generalitati
Cod binar-zecimal = un cod la care fiecare cifra zecimala este reprezentata ca si o combinatie de
cifre binare.
In cadrul codului, se asociaza o combinatie binara unica fiecarei cifre zecimale pentru a obtine o
codificare corecta => pentru a codifica toate cele 10 cifre zecimale sunt necesare 10 combinatii
binare distincte. Se va considera cazul cand toate combinatiile binare dintr-un anumit cod binar-
zecimal au aceeasi lungime n (numar identic de biti).
Deoarece se pot genera 2n combinatii distincte atunci cand se utilizeaza n biti, trebuie sa fie
indeplinita urmatoarea conditie atunci cand se genereaza un cod binar-zecimal :
2n>10 (3.35) => n>log210 (3.36)
Inseamna ca valoarea minima este n=4 => lungimea minima admisa pentru combinatiile
corespunzand unui cod binar zecimal este 4.
Se pot genera multe coduri binar-zecimale distincte pentru n=4 (C 1610), dar in practica se
considera doar un numar redus de coduri datorita trasaturilor lor specifice utile.
Se considera o cifra zecimala c ∈{0,1,2,3,4,5,6,7,8,9} , reprezentata intr-un cod binar-zecimal ca
c=bn-1...bk...b0 si pk ponderea asociata bitului bk.
Un cod binar-zecimal este ponderat daca:
(3.37)
n 1
Def. Un cod binar-zecimal ponderat este auto-complementar daca:
p
k 0
k
9
Teorema:
Consideram reprezentarea unei cifre zecimale c intr-un cod binar-zecimal c=bn-1...bk...b0 Spunem
ca cifra c este reprezentata in cod auto-complementar daca reprezentarea cifrei c*, unde c*=9-
c este obtinuta prin complementarea bitilor sai din reprezentarea lui c. Inseamna ca:
(3.39)
unde
(3.40)
Demonstratie:
Daca c=bn-1...bk...b0 si codul utilizat este auto-complementar, din (3.39) se obtine:
9-c= (3.41)
Codul este ponderat, deci, considerind relatiile (3.37) si (3.41) se obtine:
9-c= (3.42)
9-c= =>
Reciprocitate
Valoarea numarului se poate reprezenta folosind 3 coduri diferite: : (a) cod direct; (b)
cod complementar; (c) cod invers.
+105 -105
3.6.2 Reprezentarea in cod complementar
3.6.2.1 Complementul fata de 1 al unui numar binar
Se considera N, un numar binar reprezentat pe n ranguri intregi si m ranguri fractionare:
N = bn-12n-1+bn-22n-2+...+b121+b0+b-12-1+...+b-m2-m
adica
n 1
N b 2
i m
i
i (3.48)
n 1 n 1 n 1 n 1
Rezulta ca: N bi 2
im
i
( 1-bi )2
im
i
2
im
i
i
b 2
im
i
2 n
2 m
N
Atunci: N 2 n N 2 m (3.50)
Fig. 3.1
Fig. 3.2
3.6.2.2 Complementul fata de 2 al unui numar binar
Complementul fata de 2 al unui numar binar N (notat prin N ) , se poate reprezenta in
acelasi format ca si numarul N si se poate calcula cu :
N 2n N (3.52)
Proprietatea 1 :( N ) N (3.53)
Fig. 3.4
Fig. 3.3
Pentru oameni calculul complementului fata de 2 se obtine mai simplu considerand
urmatorul algoritm:
- Se analizeaza toti bitii, plecand de la dreapta la stanga. Primii biti egali cu 0 si respectiv
primul egal cu 1 se pastreaza in forma initiala.
- Dupa aceea toti bitii catre stanga se complementeaza.
Atunci cand se reprezinta bitul de semn in cod complementar, acesta are ponderea -2n
si de aceea se plaseaza in mod obligatoriu ca cel mai semnificativ bit al numarului.
Reprezentarea unui numar in cod complementar se face conform regulii:
(3.55)
In cele ce urmeaza se vor studia numai numere binare intregi, si de aceea se vor face
urmatoarele observatii:
1. Bitul de semn are ponderea -2n
2. Se accepta o singura reprezentare pentru 0 , si anume
000 …0.
3. Prin conventie, combinatia 100 …0 se foloseste pentru a reprezenta intregul - 2n.
4. Reprezentarea unui numar negativ in cod complementar se poate face imediat
daca se cunoaste reprezentarea valorii sale absolute (numarul pozitiv corespunzator) in
acelasi format, extinzand complementul fata de 2 si la bitul de semn (complement extins
fata de 2).
Exemplu: Sa consideram urmatoarele nr. intregi binare cu semn: N1= +595, respectiv
N2= -595 . Vrem sa determinam reprezentarea in cod complementar in format cu virgula
fixa 1+15.
Deoarece |N1|=|N2|=1001010011, reprezentarile obtinute vor fi cele din Fig. 3.5.
3.7. Coduri alfanumerice
Simbol alfanumeric = orice simbol utilizat pentru a edita texte formate din litere,
cifre, semne de punctuatie si controale folosite pentru a controla afisarea.
Cod alfanumeric = un cod la care fiecare simbol alfanumeric este reprezentat prin
intermediul unei combinatii binare.
Chiar daca actual nu exista niciun standard unanim acceptat relativ la reprezentarea
informatiei alfanumerice, exista cateva coduri alfanumerice larg utilizate. Acestea pot fi
considerate ca si standarde in domeniu intr-un anume sens.
Numarul de simboluri codificate este mare (x 100), de aceea combinatiile codului au
lungimi de cel putin 7 biti.
Codul ASCII (American Standard Code for Information Interchange) este printre cele mai
populare coduri alfanumerice .
In tabelul ASCII, primele doua coloane (combinatiile de cod 00000000…00001111) sunt
rezervate pentru a reprezenta comenzi specifice operatiilor de transmitere a datelor si
afisare.
Urmatoarele combinatii sunt mai populare:
NUL (00H) - nicio operatie;
BEL (07H) - activeaza un “beep”;
HT (09H) - activeaza tabulatorul orizontal;
LF (0AH) - permite pozitionarea cursorului capului de imprimare pe linia urmatoare
(line feed)
CR (0DH) - permite pozitionarea cursorului capului de imprimare la inceputul liniei
(carriage return);
ESC (1BH) - se foloseste uzual pentru abandorarea operatiei curente si atunci cand
apare o eroare, dar se poate utiliza si pentru alte scopuri.
Modul de codificare al literelor permite realizarea intr-un mod simplu al unor operatii cum
ar fi compararea si sortarea informatiei alfabetice ( de ex. nume, prenume etc. ) De ex.
"AB"<"AC“ deoarece 0x4142<0x4143 (0x apare ca prefix pentru reprez. hexazecimala).
Observatie
Daca se doreste realizarea unei sortari, trebuie tinut cont de codurile folosite pentru
litere mari care sunt mai mici decat cele folosite pentru literele mici! (de ex. "POPA" <
"popa" deoarece 0x504F5041<0x706F7061).
De aceea, inainte de realizarea unei sortari, toate caracterele trebuiesc reprezentate intr-
o maniera unitara (fie se folosesc doar literere mici, fie se folosesc doar literere mari). In
acest scop limbajele moderne de programare furnizeaza functii (de ex. in MATLAB
upper(‘x’)=X).
Considerand ceea s-a prezentat in paragrafele anterioare, se poate observa ca exista o
gama larga de posibilitati disponibile pentru reprezentarea binara a informatiei numerice:
codul binar, coduri binar-zecimale, coduri alfanumerice.
Exemplu: Consideram numarul zecimal 46. Se prezinta cateva dintre reprezentarile
binare posibile ale sale: (a) cod binar : 101110; (b) cod 8421: 01000110; (c) cod
Johnson: 0111111110; (d) cod ASCII: (4 are codul zec. 52, 6 ->54) =>
0011010000110110
Pentru a determina valoarea corecta a unui numar, trebuie deci sa se cunoasca in ce
cod este reprezentat.
De exemplu, se considera combinatia 01000011 . Aceasta se poate interpreta ca:
•numarul 67 in cod binar (64+2+1);
•numarul 43 in codul 8421;
•numarul 10 in codul binar-zecimal Exces 3;
Cand se foloseste Unicod (Universal code), se pot reprezenta mai multe simboluri
alfanumerice, deoarece se utilizeaza 16 biti in loc de 8. Astfel a devenit posibila
reprezentarea simbolurilor din Asia, Rusia etc.
http://unicod-table.com/en pentru caractere englezesti
http://unicod-table.com/en/#greek-coptic pentru caractere grecesti etc.
http://unicod.org/standard/WhatIsUnicod.html
Standardul Unicod a fost adoptat de lideri industriali ca de ex. Apple, HP, IBM,
JustSystems, Microsoft, Oracle, SAP, Sun, Sybase, Unisys si multi altii. Unicod este o
cerinta pentru standarde moderne ca XML, Java, ECMAScript (JavaScript), LDAP,
CORBA 3.0, WML etc. si reprezinta modalitatea oficiala de implementare pentru
ISO/IEC 10646. I se ofera suport pentru multe sisteme de operare moderne, toate
browserele moderne si multe alte produse. Aparitia standardului Unicod precum si
disponibilitatea tool-urilor care ii ofera suport reprezinta una dintre cele mai semnificative
tendinte in tehnologiile SW globale actuale.
Fig. 3.6.
Sursa de informatii produce un mesaj sau o secventa de mesaje care trebuie sa ajunga
la destinatie.
Mesajul este preluat de transmitator , care il transforma in semnale (ii realizeaza
codificarea). Semnalele obtinute vor fi transmise catre receptor prin intermediul unui
canal de comunicatie .
Receptorul preia semnalele primite (realizeaza decodificarea lor) si le transmite la
destinatie. Destinatia poate fi o persoana sau un alt sistem care este capabil sa
interpreteze mesajul.
In timpul transmisiei semnalului codificat prin canal pot apare perturbatii (zgomot) .
Acestea pot modifica semnalul initial => pot apare diferente intre semnalul transmis si
cel receptionat.
In multe situatii acest tip de distorsiuni nu prezinta importanta. De ex. – pentru o
imagine, alterarea culorii unui pixel sau a unei intregi zone nu este nici macar observata
de receptor. Pe de alta parte, precizia altor informatii (de ex. note sau valori din conturi
bancare) sunt considerate ca si erori inacceptabile din punct de vedere moral si legal.
De aceea trebuiesc luate masuri speciale, pentru a permite cel putin detectarea erorilor
de transmisie a datelor si uneori corectarea lor.
S-a demonstrat ca nu exista nicio metoda capabila sa detecteze toate erorile posibile.
Se pot insa depune eforturi pentru a mari cat se poate de mult probabilitatea ca o eroare
sa ramana nedetectata.
Mesajul detectat ca avand erori iremediabile va fi rejectat si, in acest caz, se pot efectua
doua actiuni la receptor:
- Se va trimite o avertizare (warning) care anunta rejectarea mesajului primit SAU ;
-Detectorul de erori va solicita sursei informatiei sa retransmita mesajul (eventual sa il
corecteze).
Observatie: Teoria lui Shannon nu face nicio presupunere relativ la proprietatea de tip
„adevarat / fals” a informatiei transmise. Ea se axeaza numai pe studiul transmisiei
semnalelor si al (de)codificarii lor.
Scopul ei este de a reduce influenta zgomotului care afecteaza transmiterea mesajelor
la nivelul canalului.
Acest model este acceptabil pentru modele tehnice, dar la sisteme implicand
comunicarea interumana lucrurile sunt mult mai complicate datorita aspectelor
psihologice care trebuiesc luate in considerare.
Se reamintesc informatii din prezentarea 2: in principiu codificarea redundanta
presupune doua tipuri de simboluri:
- simboluri utile (denumite si simboluri informationale), care transporta informatia cu
semnificatie utila;
-simboluri de control, care se afla in relatii predeterminate cu simbolurile informationale.
Daca se detecteaza o incalcare a acestor reguli la receptor, se pot detecta erorile si
uneori se pot face corectii. Cel mai popular exemplu in acest sens= bitul de paritate (de
control) . Acesta este ales a.i. sa se obtina acelasi tip de paritate (par/impar) pentru
toate grupurile de biti care compun mesajul.
Exemplu:
pentru n=4 24-10=6 combinatii redundante;
pentru n=5 25-10=22 combinatii redundante;
pentru n=7 27-10=118 combinatii redundante etc.
numarul de combinatii redundante creste semnificativ pentru valori mai mari ale lui n.
E 1000101 1
X 1011000 1
A 1000001 0
M 1001101 0
E 1000101 1
N 1001110 0
Teoretic bitul de paritate se poate plasa in orice pozitie din interiorul grupului protejat,
dar in practica se plaseaza la una dintre margini.
In continuare se va considera ca bitul de paritate se plaseaza in pozitia cea mai putin
semnificativa (bitul b7). Considerand ca bitii caracterului se transmit plecand de la bitul
cel mai putin semnificativ, sirul de biti folosit la transmiterea cuvantului EXAMEN va fi:
1000101
101000110001101110000010101100101010001101110010