Logica matematica. Algebra booleana propoziţii şi valori de adevăr conectori (operatori) logici (negaţia, conjuncţia, disjuncţia, implicaţia, echivalenţa logică, incompatibilitatea) expresii în calculul propoziţiilor (predicat, cuantificatori) axiome şi teoreme booleene funcţii logice (reprezentarea prin tabela de adevăr şi digrame Karnaugh, reprezentarea prin echivalenţi zecimali ai mintermilor, expresii analitice (constituient al unităţii, constituient al lui zero), implementarea funcţiilor logice cu NAND şi NOR, funcţii incomplet definite, minimizarea funcţiilor logice (metoda analitică metoda Veitch-Karnaugh, metoda Quine-McClusey)) Codificare. Coduri codificarea coduri numerice: - coduri binare reprezentarea numerelor fără semn reprezentarea numerelor cu semn în cod direct, cod invers şi cod complementar faţă de 2 reprezentarea numerelor în virgulă flotantă - coduri zecimal-binare coduri ponderate (NBCD) coduri neponderate (binar reflectat, Gray, exces 3, 2 din 5) - coduri ponderate particulare coduri alfanumerice coduri numerice : decimal, hexadecimal, binar, octal, ASCII
Elemente de logica matematica si algebra booleana 1 În teoria circuitelor numerice şi în electronica digitală în general, semnalele electrice pot lua numai valori discrete, în majoritatea cazurilor aceste valori fiind asociate convenţional lui 0 " logic şi 1" logic. În limbaj tehnic ne vom referi la aceste două valori cu noţiunea de "bit" (binary digit ). Bitul se defineşte în teoria informaţiei şi este o unitate de măsură a acesteia, echivalentă cu informaţia transmisă prin furnizarea unui mesaj din două egal probabile. Se numeşte propoziţie un enunţ despre care se poate spune că este adevărat sau fals, dar nu şi adevărat şi fals simultan. O propoziţie se notează cu p, q, P, Q. Dacă o propoziţie p este adevărată, se spune că are valoarea logică sau de adevăr adevărul; această valoare de adevăr se notează cu simbolul 1 sau a şi scriem v ( p) = 1 sau ( p) a v =. Dacă o propoziţie p este falsă, se spune că are valoarea logică sau de adevăr falsul; această valoare de adevăr se notează cu simbolul 0 sau f şi scriem v ( p) = 0 sau ( p) f v =. Conectori (operatori) logici Negaţia unei propoziţii p falsă. Se notează non p, p, p. este propoziţia care este falsă când p este adevărată şi este adevărată când p este Conjuncţia a două propoziţii p şi q este propoziţia care este adevărată dacă şi numai dacă fiecare propoziţie p şi q este adevărată. Se notează p q, p & q. Disjuncţia a două propoziţii p şi q este propoziţia care este adevărată dacă şi numai cel puţin una din propoziţiile p şi q este adevărată. Se notează p q, p sau q. Implicaţia propoziţiilor p şi q este propoziţia care este falsă dacă şi numai dacă propoziţia p este adevărată şi propoziţia q este falsă. Se notează p q. Echivalenţa logică propoziţiile adevărate sau false simultan. Se notează p şi q sunt echivalente logic dacă şi numai dacă propoziţiele p şi q sunt p q. Incompatibilitatea a două propoziţii p şi q este propoziţia care este adevărată când cel puţin una dintre propoziţiele p şi q este falsă şi este falsă când p şi q sunt adevărate. Se notează p q. p q p p q p q p q q p p q p q 0 0 1 0 0 1 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 0
Elemente de logica matematica si algebra booleana 2 Expresii în calculul propoziţiilor Propoziţiile p, q, r,... fiind date cu ajutorul conectorilor logici,,,,, putem forma diferite α. Înlocuind în α pe p, q, r,... cu diferite propoziţii, obţinem o altă propoziţie, adevărată sau nu, a cărei valoare de adevăr se numeşte valoarea de adevăr a expresiei α obţinută pentru propoziţiile p, q, r,... respective. asamblaje care se numesc formule ale calcului cu propoziţii sau expresii logice. Ele se notează cu α sau ( p, q, r,... ) Asupra unei expresii logice se pot efectua transformări logice, cum sunt: transformarea prin inversiune, reciprocitatea, corelaţia sau transformarea identică. Noţiunea de predicat Se numeşte predicat sau propoziţie cu variabile un enunţ care depinde de o variabilă sau de mai multe variabile şi are proprietatea că pentru orice valori date variabilelor se obţine o propoziţie adevărată sau o propoziţie falsă. Predicatele se notează p( x, y, z,...) şi pot fi unare (de o variabilă), binare (de două variabile), ternare (de trei variabile),..., variabilele x, y, z,... luând valori în mulţimi date. Predicatele p ( x, y, z,...), q ( x, y, z,...) sunt echivalente, dacă, oricare ar fi valorile pe care le iau x, y, z,... în unul şi acelaşi domeniu, propoziţiile corespunzătoare au aceleaşi valori de adevăr. Se noteaza p x, y, z,... q x, y, z,.... ( ) ( ) Cuantificatori Fie p(x), cu x M un predicat. Dacă există cel puţin un element x M astfel încât propoziţia p(x) este adevărată, atunci scriem xp( x), ( x) p( x), ( x M ) p( x). Simbolul se numeşte cuantificator existenţial şi se numeşte există. Fie p (x), cu x M un predicat. Dacă propoziţia p (x) este adevărată pentru orice element x M, atunci xp x x p x x M p x. Simbolul se numeşte cuantificator universal şi se numeşte oricare ar fi. scriem ( ), ( ) ( ), ( ) ( ) Axiome şi teoreme booleene Algebra booleană operează pe o mulţime B = { x x { 0,1 }. În această mulţime binară se definesc trei legi de compoziţie: complementarea (negare, " NU ", "NOT", inversare logică); disjuncţia (suma logică, " + ", "SAU", "OR"); conjuncţia (produs logic, " ", "SI", "AND" ) pentru care se dau în continuare tabelele de adevăr, simbolurile grafice şi implementarea prin contacte. x y x x+y x*y 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 Toate relaţiile definite pe B au un caracter dual, adică relaţiile rămân valabile dacă se fac schimbările: + " cu " şi respectiv 0 " cu 1" (teorema dualităţii). În mulţimea B se poate alege o structură de şase axiome duale pe baza cărora se definesc teoremele şi proprietăţile care stau la baza algebrei boolene.
Elemente de logica matematica si algebra booleana 3 Axiome 1. Mulţimea B este o mulţime închisă: dacă X şi Y aparţin mulţimii B atunci X + Y şi X Y aparţin mulţimii B ; 2. Asociativitatea: X + ( Y + Z ) = ( X + Y ) + Z şi X ( Y Z ) = ( X Y ) Z ; 3. Comutativitatea: X + Y = Y + X şi X Y = Y X ; 4. Distributivitatea: X + Y Z = ( X + Y ) ( X + Z ) şi X ( Y + Z ) = X Y + X Z ; 5. Element neutru: X + 0 = 0 + X = X şi X 1 = 1 X = X ; 6. Complementul: X + X '= 1 şi X X '= 0 ; Teoreme (proprietăţi) 7. Idempotenţa: X + X +... + X = X şi X X... X = X ; 8. Elemente neutre: X +1 = 1 şi X 0 = 0 ; 9. Involuţia: X '' = X ; 10. Absorbţia: X + X Y = X şi X ( X + Y ) = X ; 11. Relaţiile lui De Morgan: ( X + Y )' = X ' Y ' şi ( X Y )' = X ' + Y ' sau x = x n = 1 n = 1 şi n = 1 n x = x = 1 Perechile de operatori NOT şi AND, respectiv NOT şi OR formează fiecare câte un sistem complet, adică orice relaţie definită pe B poate fi exprimată folosind numai operatorii unei singure perechi. Circuitul fizic care implementează un operator logic se numeşte poartă logică. Sistemele complete prezentate au fost realizate cu câte o singură poartă: SI-NU (NAND, Scheffer) şi SAU-NU (NOR, funcţie nici" sau funcţie Pierce). Un sistem complet de operatori poate exprima orice relaţie logică : Funcţii logice O funcţie f : B n B se numeşte funcţie booleana. Altfel spus, o funcţie booleană de n variabile y = f ( x1, x2,..., x n ), unde x i sunt variabile de intrare, se caracterizează prin faptul că atât funcţia cât şi variabilele nu pot lua decât două valori distincte, 0 şi 1. Reprezentarea funcţiilor logice Reprezentare prin tabela de adevăr Această reprezentare presupune marcarea, într-un tabel, a corespondenţei dintre valorile de adevăr ale variabilelor de intrare şi valoarea de adevăr a funcţiei în fiecare punct al domeniului de definiţie.
Elemente de logica matematica si algebra booleana 4 Reprezentarea prin diagrame Karnaugh Reprezentarea prin diagrame Karnaugh constă în a marca punctele domeniului de definiţie într-o diagramă plană şi a preciza valoarea funcţiei în fiecare din aceste puncte. Dacă luăm în considerare vârful cubului caracterizat prin coordonatele 000, constatăm că acest vârf este vecin cu vârfurile 001, 010, 100. În diagrama Karnaugh constatăm că 000 este vecin doar cu 001 şi 100. Pentru ca diagrama Karnaugh să fie echivalentă cu reprezentarea prin cub, ea trebuie să păstreze acelaşi vecinătăţi, lucru ce devine posibil doar dacă ne imaginăm latura din stânga a diagramei Karnaugh în continuarea celei din dreapta, iar latura de sus în continuarea celei de jos. În acest fel, punctul 000 devine vecin şi cu punctul 010. Reprezentarea prin echivalenţi zecimali ai mintermilor Reprezentarea prin echivalenţi zecimali ai mintermilor constă în indicarea echivalenţilor zecimali ai conjuncţiilor pentru care valoarea funcţiei este 1 sau a echivalenţilor zecimali corespunzători valorii 0 ale funcţiei. Expresii analitice ale funcţiilor logice În majoritatea aplicaţiilor practice este necesară utilizarea formei analitice a funcţiilor booleene. În acest scop se utilizează două forme de dezvoltare: - forma canonică disjunctivă (FCD) care presupune utilizarea unor funcţii elementare numite constituenţi ai unităţii (termeni minimali sau mintermi); <=> NAND; - forma canonică conjunctivă (FCC) care presupune utilizarea unor funcţii elementare numite constituenţi ai lui zero (termeni maximali sau maxtermi). <=> NOR. Constituent al unităţii Se numeşte constituent al unităţii funcţia elementară Q caracterizată prin faptul că ia valoarea 1 logic întrun un singur punct al domeniului de definiţie. Constituentul unităţii va fi produsul logic al tuturor variabilelor negate sau nenegate. Pentru ca Q să fie 1 într-un anumit punct al domeniului de definiţie este necesar ca toţi termenii produsului să fie 1 logic. Aşadar rezultă următoarea regulă de scriere a mintermenilor Q în conjuncţia variabilelor, variabilele care iau valoarea 0 în în punctul respectiv al domeniului de definiţie se vor lua negate, iar cele care iau valoarea 1 se vor lua nenegate. Numim conjuncţii vecine două conjuncţii care sunt constituite din aceleaşi variabile şi diferă doar prin comlementarea uneia singure. Prin sumarea a două conjuncţii vecine se obţine o conjuncţie cu un număr de variabile mai mic cu 1, lipsind variabila a cărei complementaritate diferă. Constituent al lui zero Se numeşte constituent al lui zero funcţia elementară D care ia valoarea 0 logic într-un singur punct al domeniului de definiţie. Constituentul lui 0 va fi suma logică a tuturor variabilelor negate sau nenegate. Pentru ca să fie 0 într-un un anumit punct al domeniului de definiţie este necesar ca toţi termenii sumei să fie 0. Prin urmare rezultă următoarea regulă de scriere a maxtermului D în disjuncţia variabilelor, variabilele care iau valoarea 0 în punctul respectiv al domeniului de definiţie se vor lua nenegate, iar cele care iau valoarea 1 se vor lua negate. D
Elemente de logica matematica si algebra booleana 5 Disjuncţiile vecine se definesc în mod similar cu conjuncţiile vecine. Prin înmulţirea a două disjuncţii vecine se obţine o disjuncţie având o variabilă mai puţin (dispare acea variabilă care îşi modifică complementaritatea). Implementarea functiilor logice Implementarea unei funcţii logice înseamnă realizarea ei cu ajutorul circuitelor (porţilor) fundamentale. Se defineşte cost al unei implementări numărul de intrări în circuitele fundamentale care realizează funcţia dată. Nivelul unei implementări logice se defineşte ca fiind numărul maxim de circuite pe care le străbate un semnal de la intrare către ieşire. În cazurile precedente s-au considerat structuri logice cu două nivele. Implementarea cu NAND Realizând Q cu circuite NAND, funcţia f se obţine prin cuplarea ieşirilor circuitelor NAND precedente la intrările unui alt circuit NAND. Costul implementării din figura este: C 1 ( f ) = 3 ' 4 + 4 = 16 Implementarea cu NOR Funcţia f se obţine prin cuplarea ieşirilor circuitelor NOR ce implementează la intrările unui alt circuit NOR. Costul implementării din figura este: C 2 ( f ) = 3 ' 4 + 4 = 16 D Funcţii incomplet definite În unele cazuri, pentru anumite combinaţii de variabile de intrare nu este precizată valoarea funcţiei sau aceste combinaţii nu apar niciodată în sistemul fizic ce materializează funcţia. Astfel de funcţii se numesc funcţii incomplet definite şi prezintă valori indiferente, pe care în tabelul de adevăr le vom nota cu x. Minimizarea funcţiilor logice În proiectarea sistemelor digitale, analiza şi sinteza circuitelor numerice se bazează pe algebra booleană. Rezultă o legătura firească între gradul de complexitate al circuitului care se obţine şi gradul de complexitate al funcţiei care îl descrie. Din acest motiv, pentru sinteza circuitelor numerice (circuite funcţionând în regim de comutaţie), după etapa de definire a funcţiei, urmează obligatoriu etapa de minimizare a funcţiei în scopul obţinerii unei forme simplificate (forma minimă). Minimizarea unei funcţii este procedeul prin care, pentru un nivel dat, se obţine o expresie care generează un cost minim pentru un număr dat de nivele logice. Implementarea practică a circuitului se realizează pe baza formei minimizate, ceea ce conduce la configuraţia optimă de circuit. Există mai multe metode de minimizare, câteva dintre acestea fiind: - Metoda analitică se bazează pe simplificarea expresiei unei funcţii pe baza axiomelor şi teoremelor algebrei booleene; - Metoda Veitch - Karnaugh transpune axiomele şi teoremele algebrei booleene pe reprezentarea funcţiei cu diagrame Karnaugh. O diagramă Karnaugh poate fi privită ca o reprezentare a funcţiei booleene, dacă se au în vedere produsele logice ale coordonatelor, prin mintermi, aşa cum se observa în reprezentarea care urmează. x2 \ x 1 x0 00 01 11 10 0 x 2 'x 1 'x 0 ' x2'x 1 'x0 x2'x 1 x0 x2'x 1 x 0 ' 1 x 2 x 1 'x 0 ' x2x 1 'x0 x2x 1 x0 x2x 1 x 0 ' Fiecare celulă din diagramă conţine un minterm. Două celule vecine conţin mintermi care diferă prin valoarea unei singure variabile. Prin adunarea mintermilor din două celule vecine se elimină variabila care îşi schimbă valoarea. Aceasta permite simplificarea expresiei funcţiei care se obţine şi implicit simplificarea structurii logice corespunzătoare. FCD se obţine prin sumarea mintermilor pentru care funcţia ia valoarea 1. Prin gruparea celulelor vecine pentru care valoarea funcţiei este 1 se obţin x 2 x 1, x 2 x 0, x 1 x 0 (prin eliminarea variabilelor care îşi schimbă valoarea în cadrul aceleiaşi grupări). Fiecare celulă ocupată de valoarea 1 trebuie să facă parte din cel puţin o grupare, dar poate fi inclusă în
Elemente de logica matematica si algebra booleana 6 mai multe grupări. Dacă un grup de două celule vecine este vecin la rândul sau cu un alt grup de două celule vecine, acestea se pot contopi într-un singur grup de patru celule vecine, ceea ce va permite eliminarea a două variabile. În general, un grup de 2 m celule vecine ocupate de unităţi permite eliminarea a m variabile. Cel mai avansat grad de simplificare se obţine dacă valorile 1 dintr-o diagramă Karnaugh sunt grupate într-un număr minim de grupuri, fiecare grup conţinând un număr maxim de unităţi. Pentru minimizarea funcţiilor scrise sub formă conjunctivă, în diagrama Karnaugh se vor considera disjuncţiile corespunzătoare valorilor 0 ale funcţiei şi se va urma o procedură asemănătoare cu cea folosită la forma disjunctivă. Metoda constă în cuplarea de disjuncţii vecine din care va dispărea termenul corespunzător bitului ce se modifică, în echivalenţii binari. În cazul funcţiilor incomplet definite, valorile indiferente ale funcţiei se iau 1 pentru forma disjunctivă şi 0 pentru forma conjunctivă dacă aceste valori participă la minimizare. Valorile indiferente care nu sunt cuplate devin 0 pentru forma disjunctivă şi 1 pentru forma conjunctivă. Considerarea valorilor indiferente determină simplificarea formei funcţiei care se obţine în sensul reducerii numărului de variabile. - Metoda Quine McClusey se foloseşte pentru funcţii care depind de multe variabile; pentru funcţii ce depind de mai mult de 5 variabile, metoda Veitch - Karnaugh devine greoaie şi se preferă metoda Quine - McClusey. În cazul formei disjunctive, minimizarea prin această metodă presupune parcurgerea etapelor prezentate în continuare: 1) Ordonarea echivalenţilor binari ai conjuncţiilor corespunzătoare valorilor 1 ale funcţiei după pondere. Lemă: Pentru două conjuncţii vecine ponderile diferă cu o unitate. 2) Determinarea implicanţilor primi prin comparaţii succesive ale echivalenţilor binari. Se numeşte implicant prim al unei funcţii un termen al acesteia care nu se mai poate reduce. Pentru determinarea implicanţilor primi se cuplează echivalenţii binari care diferă doar printr-o cifră din acelaţi rang. Se obţine astfel primul tabel de comparaţii în care dispariţia variabilei corespunzătoare cifrei care se modifică se notează cu -". În continuare, se pot cupla două conjuncţii din grupe vecine dacă simbolul -" se afla în acelaşi rang şi echivalenţii binari diferă doar printr-o cifră din acelaşi rang. Rezultă al doilea tabel de comparare şi procedura se repetă. Conjuncţia care nu se mai poate cupla cu nici o altă conjuncţie din tabel este un implicant prim al funcţiei date. 3) Determinarea tabelului de acoperire al funcţiei Tabelul de acoperire este un tablou rectangular, la care liniile corespund implicanţilor primi, iar coloanele corespund echivalenţilor zecimali ai conjuncţiilor pentru care funcţia ia valoarea 1. Tabloul se completează cu 1 în poziţiile pentru care conjuncţiile de pe coloane realizează implicanţii primi de pe linii. 4) Calculul formal de determinare a tuturor soluţiilor funcţiei Fiecărui implicant prim X i se ataşează o variabilă logică F x care ia valoarea 1 când implicantul prim este realizat (conform tabelului de acoperire). Pentru realizarea funcţiei este necesar ca în expresia ei să existe toate conjuncţiile corespunzătoare valorilor 1 ale funcţiei. Pentru determinarea tuturor soluţiilor funcţiei, se exprimă această cerinţă cu ajutorul variabilelor F x. În cazul formei conjunctive a funcţiilor, procedura este similară, dar se vor considera valorile 0 ale funcţiei şi disjuncţiile corespunzătoare. Metoda Quine McClusey se pretează implementării automate a sistemelor numerice. Algoritmul bazat pe această metodă poate fi transpus în aplicaţii software care determină automat structura logică a circuitului.
Codificare 1 Prin codificare se realizează o schimbare a formei de exprimare a unei informaţii. Dacă X { x,..., } = este mulţimea simbolurilor primare care urmează a fi codificate prin intermediul unor simboluri elementare aparţinând unei mulţimi de elemente B = { b1,..., b n }, prin codificare se asociază fiecărui element x i X o secvenţă de simboluri b j B astfel încât modelul de codificare va fi reprezentat de corespondenţa biunivocă: x 1 <-> b 1 b 2 b 3 = S 1 x 1 <-> b 2 b 5 b 6 b 7 = S 2... x p <-> b 1 b 3 b 1 = S p Cuvintele de cod formează o mulţime S = { s1,..., s p }. Codificarea este o aplicaţie de forma f : X S. Codul se numeşte uniform dacă toate cuvintele si s i care aparţin mulţimii S au aceeaşi lungime. În electronica digitală, B = { 0,1}, deci cuvintele mulţimii S sunt cuvinte binare de o anumită lungime, în general 8 (octet sau byte), 16, 24, 32 sau 64 de biţi. Informaţia primară poate fi compusă numai din simboluri numerice, sau atât din simboluri numerice, cât şi simboluri literale şi semne de ortografie. Se obţin astfel două tipuri de coduri: coduri numerice, respectiv coduri alfanumerice. Coduri numerice Prin intermediul cuvintelor binare se pot codifica numere din sistemele de numeraţie binar, zecimal, octal, hexazecimal etc., rezultând coduri binare, zecimal - binare, octal - binare, hexazecimal - binare etc. Coduri binare I. Reprezentarea numerelor fără semn Corespondenţa între un număr binar şi un cuvânt de cod binar poate fi chiar identitate, deci cuvântul de cod este chiar numărul respectiv. Virgula nu se reprezintă fizic, dar utilizatorul trebuie să n m ştie între ce biţi ai cuvântului este localizată. Gama numerelor reprezentate este x = [ 0,2 2 ]. În multe cazuri, n numerele din acest domeniu se scalează prin împărţire la 2 ; virgula binară va fi poziţionată în faţa bitului cel mai n semnificativ, iar gama reprezentabilă va deveni: x = [ 0,1 2 ]. Aceste reprezentări se numesc numere fracţionare în virgulă fixă. II. Reprezentarea numerelor cu semn Prin convenţie, + " se reprezintă prin 0, iar " prin 1. Din cei n biţi folosiţi pentru partea întreagă, primul (bitul b ) va fi folosit pentru reprezentarea semnului. Există trei forme uzuale pentru reprezentarea numerelor cu semn, forme descrise în continuare. a) cod direct (în modul şi semn) 1 x p Gama de reprezentare: x[ ( 2 2 ),2 2 ]. Prin scalare (împărţire la ( ) ( ) bitul de semn, iar gama de reprezentare va deveni: x[ ( 2 ),1 2 ] b) cod invers (în complement faţă de 1) 1. 2 n 1 ), virgula se va situa imediat după Regula de inversare a unui număr negativ este următoarea: se complementează toti biţii din reprezentarea în valoare absolută şi se ataşează 1 în rangul semn:
Gama de reprezentare: x[ ( 2 2 ),2 2 ] c) cod complementar faţă de 2 Codificare 2 ( ). Prin scalare: x 1 2 ( ) [ ( ),1 2 ] Regula de complementare a unui număr negativ este următoarea: se inversează cifrele binare ale numărului în valoare absolută, se sumează valoarea 1 la rangul -m şi se ataşează 1 în rangul semn: O altă regulă de complementare este şi cea care urmează: codul complementar al unui număr negativ se obţine prin inversarea biţilor din reprezentarea în valoare absolută începând cu primul bit 1 (exclusiv) întâlnit prin parcurgerea numărului de la dreapta la stânga, ataşându-se apoi 1 în rangul semn. Gama de reprezentare este x[ 2,2 2 ], ( ) iar prin scalare gama de reprezentare va fi: x 1,1 2. [ ] Exemple: x = -1011,1100 x d = 11011,1100 x i = 10100,0011 x c = 10100,0100 Toate codificările scalate, cu virgula binară situată imediat după bitul de semn, se numesc reprezentări în virgulă fixă. III. Reprezentarea numerelor în virgulă flotantă Un numar rational x se reprezinta prin doua numere binare: x = M 2 E, unde: M - mantisă (număr fracţionar cu semn; m biţi) şi E - exponent (număr întreg cu semn; n biţi). Dacă m are 2 1 2 1 numai parte fracţionară, gama de reprezentare este: x[ 2,2 ], unde s-a presupus E reprezentat în complement faţă de 2. Pentru mărirea preciziei calculelor, mantisa se normează după fiecare operaţie aritmetică, astfel încât cifra binară de după virgulă a modulului mantisei să fie nenulă. Exemplu: 0,001011 2 10 = 0,1011 2 8. Coduri zecimal - binare În cadrul acestei clase, X = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }. Mulţimea S trebuie să conţină 10 cuvinte distincte, deci pentru codificare sunt necesari minimum 4 biţi (2 3 <10<2 4 ). Cu aceşti 4 biţi se pot forma 16 cuvinte de cod distincte, deci există posibilităţi de codificare. În practică se folosesc anumite variante, cele mai importante fiind prezentate în continuare. I. Coduri ponderate Un cod ponderat asociază fiecarei cifre zecimale o tetradă binară, ponderea fiecarui bit din tetradă fiind egală cu valoarea cifrei din denumirea codului. Fie X 0, 1,., 9 si z (x) = (y 3 y 2 y 1 y 0 ) (2). Fiecarei cifre binare (bit) y j, j = 1, 2, 3, i se ataşează o pondere p j astfel încât: x = y p. Câteva coduri ponderate sunt 8421, 2421, 4221, 3 7421. În codul 8421, cuvintele de cod sunt numere succesive în sistemul binar natural şi din acest motiv, codul se mai numeşte cod zecimal-binar natural (NBCD). Codurile 2421 şi 4221 au pentru primele 4 cifre zecimale aceeaşi exprimare ca şi codul 8421. Codul pentru 5 se obţine inversând codul pentru 4; la fel se obţine 6 din 3, 7 din 2, 8 din 1 şi 9 din 0. Codurile cu această proprietate se numesc coduri autocomplementare. II. Coduri neponderate Exemple de coduri neponderate sunt: codul binar reflectat, codul 8421 cu bit de paritate, codul exces 3, codul 2 din 5. Codul "binar reflectat" se obţine prin "reflectări repetate" a codurilor pe n-1 ranguri, adăugând biţi 0 într-unul din domenii şi biţi 1 în celălalt domeniu (cele 2 domenii sunt separate prin planul de oglindire). Exemple de coduri "binar reflectate" sunt codul Gray si codul Gray închis. = 0
Codificare 3 Codul Gray prezintă proprietatea de adiacenţă: trecerea de la o cifră zecimală la urmatoarea se face prin modificarea unui singur bit din cuvântul de cod. Acest cod este util în cazul mărimilor ce cresc succesiv. În mediile puternic influenţate de zgomot, verificarea transmiterii corecte a informaţiilor se face prin folosirea codurilor detectoare de erori. În codul 8421 cu bit de paritate, fiecare cuvânt de cod are un număr par sau impar de biţi 1. La emisie se adaugă un bit 1 sau un bit 0 astfel încât numărul de biţi 1 să fie par sau impar. La recepţie se numără biţii 1, numărul acestora putând indica dacă au apărut erori constând în modificarea unui număr impar de biţi din structura cuntului binar. Codul exces 3 se obţine din codul 8421 la care se adună 3 = 0011. În acest fel se poate face distincţie între 0 şi lipsa informaţiei (zero este codificat prin 0011 şi nu prin 0000, fiind numit uneori zero viu"). Codul 2 din 5 se caracterizează printr-un cuvânt de cod de 5 biţi, din care numai doi biţi sunt 1. Se realizează astfel o unicitate a reprezentării deoarece numai 10 din cele 32 de configuraţii posibile pe 5 biţi satisfac această condiţie. Prin folosirea acestui cod se pot detecta erorile multiple apărute la transmiterea informaţiei. Coduri ponderate particulare Codul ponderat 8421 este cel mai răspândit fiind particularizat pentru reprezentarea cifrelor in diverse baze de numeraţie. Deoarece fiecare bit are ponderea numărului în binar şi cuvintele de cod sunt chiar numerele succesive în sistemul binar natural, acest cod se mai numeşte cod zecimal binar natural (NBCD, Natural Binary Coded Decimal). El cuprinde cifrele binare de la 0 la 10. Atunci cand codifica toate combinatiile binare pe 4 biti este numit cod BCD (Binary Coded Decimal). În funcţie de baza de numeraţie a numărului care trebuie codificat putem avea şi alte tipuri de coduri (octal-binar, hexazecimal-binar). Codul octal-binar realizează corespondenţa biunivocă între cifrele sistemului de numeraţie în baza 8 şi triadele binare succesive. Codul hexazecimal - binar realizează corespondenţa biunivocă între cifrele sistemului de numeraţie în baza 16 şi tetradele binare succesive corespunzătoare. Coduri alfanumerice În cazul acestor coduri, mulţimea X informaţiilor primare este formată din cifre, litere, semne ortografice, comenzi speciale, denumite în general caractere. Codificarea datelor alfanumerice este necesară pentru vehicularea diferitelor mesaje. Trebuie codificate minim 88 caractere distincte (2 x 6 litere, 10 cifre, 26 de caractere speciale), deci sunt necesari minimum 7 biţi. Cel mai răspândit cod alfanumeric este codul ASCII ( American Standard Code for Information Interchange). Codul ASCII codifică 128 de caractere (cele 52 de litere, majuscule şi minuscule, ale alfabetului englez, cele 10 cifre zecimale, caractere speciale şi caractere de comandă). Codul EBCDIC (Extended Binary Coded Decimal Interchange Code) codifică 136 de caractere. Există caractere ASCII care nu au corespondent EBCDIC şi invers. Codul ASCII, datorită succesiunii caracterelor majuscule şi minuscule, poate fi utilizat pentru ordonări alfabetice. Exemplu: caracterul?" în ASCII are codul 3F, iar în EBCDIC are codul 6F. Deasemenea, caracterele 0", A", a" au reprezentările ASCII 30, 41, 61 iar cele EBCDIC F0, C1, 81.
Dec Hex Binar Octal ASCII Dec Hex Binar Octal ASCII 0 00 0000.0000 000 NULL char 51 33 0011.0011 063 3 1 01 0000.0001 001 Start Of Heading 52 34 0011.0100 064 4 2 02 0000.0010 002 Start of TeXt 53 35 0011.0101 065 5 3 03 0000.0011 003 End of TeXt 54 36 0011.0110 066 6 4 04 0000.0100 004 End Of Transmission 55 37 0011.0111 067 7 5 05 0000.0101 005 ENQuiry 56 38 0011.1000 070 8 6 06 0000.0110 006 ACKnowledgement 57 39 0011.1001 071 9 7 07 0000.0111 007 BELL 58 3A 0011.1010 072 : 8 08 0000.1000 010 BacSpace 59 3B 0011.1011 073 ; 9 09 0000.1001 011 HorizontalTab 60 3C 0011.1100 074 < 10 0A 0000.1010 012 LineFeed 61 3D 0011.1101 075 = 11 0B 0000.1011 013 VerticalTab 62 3E 0011.1110 076 > 12 0C 0000.1100 014 FormFeed 63 3F 0011.1111 077? 13 0D 0000.1101 015 CarriageReturn 64 40 0100.0000 100 @ 14 0E 0000.1110 016 ShiftOut / x-on 65 41 0100.0001 101 A 15 0F 0000.1111 017 ShihtIn / x-off 66 42 0100.0010 102 B 16 10 0001.0000 020 DataLineEscape 67 43 0100.0011 103 C 17 11 0001.0001 021 DeviceControl1 68 44 0100.0100 104 D 18 12 0001.0010 022 DeviceControl2 69 45 0100.0101 105 E 19 13 0001.0011 023 DeviceControl3 70 46 0100.0110 106 F 20 14 0001.0100 024 DeviceControl4 71 47 0100.0111 107 G 21 15 0001.0101 025 NegativeAcKnowledgement 72 48 0100.1000 110 H 22 16 0001.0110 026 SYNchronous idle 73 49 0100.1001 111 I 23 17 0001.0111 027 EndOfTransmitBloc 74 4A 0100.1010 112 J 24 18 0001.1000 030 CANcel 75 4B 0100.1011 113 K 25 19 0001.1001 031 EndOfMedium 76 4C 0100.1100 114 L 26 1A 0001.1010 032 SUBstitute 77 4D 0100.1101 115 M 27 1B 0001.1011 033 ESCape 78 4E 0100.1110 116 N 28 1C 0001.1100 034 FileSeparator 79 4F 0100.1111 117 O 29 1D 0001.1101 035 GroupSeprator 80 50 0101.0000 120 P 30 1E 0001.1110 036 RecordSeparator 81 51 0101.0001 121 Q 31 1F 0001.1111 037 UnitSeparator 82 52 0101.0010 122 R 32 20 0010.0000 040 83 53 0101.0011 123 S 33 21 0010.0001 041! 84 54 0101.0100 124 T 34 22 0010.0010 042 " 85 55 0101.0101 125 U 35 23 0010.0011 043 # 86 56 0101.0110 126 V 36 24 0010.0100 044 $ 87 57 0101.0111 127 W 37 25 0010.0101 045 % 88 58 0101.1000 130 X 38 26 0010.0110 046 & 89 59 0101.1001 131 Y 39 27 0010.0111 047 ' 90 5A 0101.1010 132 Z 40 28 0010.1000 050 ( 91 5B 0101.1011 133 [ 41 29 0010.1001 051 ) 92 5C 0101.1100 134 \ 42 2A 0010.1010 052 * 93 5D 0101.1101 135 ] 43 2B 0010.1011 053 + 94 5E 0101.1110 136 ^ 44 2C 0010.1100 054, 95 5F 0101.1111 137 _ 45 2D 0010.1101 055-96 60 0110.0000 140 ` 46 2E 0010.1110 056. 97 61 0110.0001 141 a 47 2F 0010.1111 057 / 98 62 0110.0010 142 b 48 30 0011.0000 060 0 99 63 0110.0011 143 c 49 31 0011.0001 061 1 100 64 0110.0100 144 d 50 32 0011.0010 062 2 101 65 0110.0101 145 e
Dec Hex Binar Octal ASCII Dec Hex Binar Octal ASCII Dec Hex Binar Octal ASCII 102 66 0110.0110 146 f 154 9A 1001.1010 232 š 206 CE 1100.1110 316 Î 103 67 0110.0111 147 g 155 9B 1001.1011 233 207 CF 1100.1111 317 Ï 104 68 0110.1000 150 h 156 9C 1001.1100 234 œ 208 D0 1101.0000 320 Ð 105 69 0110.1001 151 i 157 9D 1001.1101 235 209 D1 1101.0001 321 Ñ 106 6A 0110.1010 152 j 158 9E 1001.1110 236 ž 210 D2 1101.0010 322 Ò 107 6B 0110.1011 153 159 9F 1001.1111 237 Ÿ 211 D3 1101.0011 323 Ó 108 6C 0110.1100 154 l 160 A0 1010.0000 240 212 D4 1101.0100 324 Ô 109 6D 0110.1101 155 m 161 A1 1010.0001 241 213 D5 1101.0101 325 Õ 110 6E 0110.1110 156 n 162 A2 1010.0010 242 214 D6 1101.0110 326 Ö 111 6F 0110.1111 157 o 163 A3 1010.0011 243 215 D7 1101.0111 327 112 70 0111.0000 160 p 164 A4 1010.0100 244 216 D8 1101.1000 330 Ø 113 71 0111.0001 161 q 165 A5 1010.0101 245 217 D9 1101.1001 331 Ù 114 72 0111.0010 162 r 166 A6 1010.0110 246 218 DA 1101.1010 332 Ú 115 73 0111.0011 163 s 167 A7 1010.0111 247 219 DB 1101.1011 333 Û 116 74 0111.0100 164 t 168 A8 1010.1000 250 220 DC 1101.1100 334 Ü 117 75 0111.0101 165 u 169 A9 1010.1001 251 221 DD 1101.1101 335 Ý 118 76 0111.0110 166 v 170 AA 1010.1010 252 ª 222 DE 1101.1110 336 Þ 119 77 0111.0111 167 w 171 AB 1010.1011 253 «223 DF 1101.1111 337 ß 120 78 0111.1000 170 x 172 AC 1010.1100 254 224 E0 1110.0000 340 à 121 79 0111.1001 171 y 173 AD 1010.1101 255-225 E1 1110.0001 341 á 122 7A 0111.1010 172 z 174 AE 1010.1110 256 226 E2 1110.0010 342 â 123 7B 0111.1011 173 { 175 AF 1010.1111 257 227 E3 1110.0011 343 ã 124 7C 0111.1100 174 176 B0 1011.0000 260 228 E4 1110.0100 344 ä 125 7D 0111.1101 175 } 177 B1 1011.0001 261 ± 229 E5 1110.0101 345 å 126 7E 0111.1110 176 ~ 178 B2 1011.0010 262 ² 230 E6 1110.0110 346 æ 127 7F 0111.1111 177 DELete 179 B3 1011.0011 263 ³ 231 E7 1110.0111 347 ç 128 80 1000.0000 200 180 B4 1011.0100 264 232 E8 1110.1000 350 è 129 81 1000.0001 201 181 B5 1011.0101 265 µ 233 E9 1110.1001 351 é 130 82 1000.0010 202 182 B6 1011.0110 266 234 EA 1110.1010 352 ê 131 83 1000.0011 203 ƒ 183 B7 1011.0111 267 235 EB 1110.1011 353 ë 132 84 1000.0100 204 184 B8 1011.1000 270 236 EC 1110.1100 354 ì 133 85 1000.0101 205 185 B9 1011.1001 271 ¹ 237 ED 1110.1101 355 í 134 86 1000.0110 206 186 BA 1011.1010 272 º 238 EE 1110.1110 356 î 135 87 1000.0111 207 187 BB 1011.1011 273» 239 EF 1110.1111 357 ï 136 88 1000.1000 210 ˆ 188 BC 1011.1100 274 ¼ 240 F0 1111.0000 360 ð 137 89 1000.1001 211 189 BD 1011.1101 275 ½ 241 F1 1111.0001 361 ñ 138 8A 1000.1010 212 Š 190 BE 1011.1110 276 ¾ 242 F2 1111.0010 362 ò 139 8B 1000.1011 213 191 BF 1011.1111 277 243 F3 1111.0011 363 ó 140 8C 1000.1100 214 Œ 192 C0 1100.0000 300 À 244 F4 1111.0100 364 ô 141 8D 1000.1101 215 193 C1 1100.0001 301 Á 245 F5 1111.0101 365 õ 142 8E 1000.1110 216 Ž 194 C2 1100.0010 302  246 F6 1111.0110 366 ö 143 8F 1000.1111 217 195 C3 1100.0011 303 à 247 F7 1111.0111 367 144 90 1001.0000 220 196 C4 1100.0100 304 Ä 248 F8 1111.1000 370 ø 145 91 1001.0001 221 197 C5 1100.0101 305 Å 249 F9 1111.1001 371 ù 146 92 1001.0010 222 198 C6 1100.0110 306 Æ 250 FA 1111.1010 372 ú 147 93 1001.0011 223 199 C7 1100.0111 307 Ç 251 FB 1111.1011 373 û 148 94 1001.0100 224 200 C8 1100.1000 310 È 252 FC 1111.1100 374 ü 149 95 1001.0101 225 201 C9 1100.1001 311 É 253 FD 1111.1101 375 ý 150 96 1001.0110 226 202 CA 1100.1010 312 Ê 254 FE 1111.1110 376 þ 151 97 1001.0111 227 203 CB 1100.1011 313 Ë 255 FF 1111.1111 377 ÿ 152 98 1001.1000 230 204 CC 1100.1100 314 Ì 153 99 1001.1001 231 205 CD 1100.1101 315 Í