4 sisteme de numeratie

30
Introducere în Informatică Capitolul 4. Sisteme de numeraţie 4.1. Introducere Prin definiţie un sistem de numeraţie este format din totalitatea regulilor de reprezentare a numerelor prin simboluri numite cifre ale sistemului de numeraţie. Sistemele de numeraţie sunt de două feluri: 1. sisteme numerice poziţionale; 2. sisteme numerice nepoziţionale. Exemple de sisteme poziţionale sunt sistemul zecimal, sistemul binar, sistemul hexazecimal iar ca exemplu de sistem de numeraţie nepoziţional îl putem aminti pe sistemul de numeraţie roman. În cadrul unui sistem poziţional fiecare cifră semnificativă a numărului are o anumită pondere care este dictată de poziţia cifrei în cadrul numărului. De exemplu în cazul numărului 1996 scris în sistemul de numeraţie zecimal, 1 care se află pe prima poziţie este de ponderea miilor (reprezintă poziţia miilor), primul 9 este de ponderea sutelor (reprezintă poziţia sutelor), al doilea 9 este de ponderea zecilor (reprezintă poziţia zecilor) iar 6 este de ponderea unităţilor (reprezintă unităţile). Sistemul de numeraţie roman avea un set de simboluri de bază: I (1 în zecimal), X (10), C (100), M (100); şi trei simboluri auxiliare: V (5 în zecimal), L (50), D (500). Un exemplu de număr exprimat în sistemul de numeraţie roman este MM (în sistemul de numeraţie zecimal reprezintă 2000). Poziţia cifrele semnificative ale acestui număr nu au o anumită pondere în valoarea numărului. Este cunoscut că acest sistem a dispărut datorită faptului că 25

Upload: anca-mirela-giurgiu

Post on 17-Jan-2016

34 views

Category:

Documents


0 download

DESCRIPTION

sisteme de numeratie

TRANSCRIPT

Page 1: 4 Sisteme de Numeratie

Introducere în Informatică

Capitolul 4. Sisteme de numeraţie

4.1. Introducere

Prin definiţie un sistem de numeraţie este format din totalitatea regulilor de reprezentare a numerelor prin simboluri numite cifre ale sistemului de numeraţie. Sistemele de numeraţie sunt de două feluri:

1. sisteme numerice poziţionale;2. sisteme numerice nepoziţionale.

Exemple de sisteme poziţionale sunt sistemul zecimal, sistemul binar, sistemul hexazecimal iar ca exemplu de sistem de numeraţie nepoziţional îl putem aminti pe sistemul de numeraţie roman.

În cadrul unui sistem poziţional fiecare cifră semnificativă a numărului are o anumită pondere care este dictată de poziţia cifrei în cadrul numărului. De exemplu în cazul numărului 1996 scris în sistemul de numeraţie zecimal, 1 care se află pe prima poziţie este de ponderea miilor (reprezintă poziţia miilor), primul 9 este de ponderea sutelor (reprezintă poziţia sutelor), al doilea 9 este de ponderea zecilor (reprezintă poziţia zecilor) iar 6 este de ponderea unităţilor (reprezintă unităţile).

Sistemul de numeraţie roman avea un set de simboluri de bază: I (1 în zecimal), X (10), C (100), M (100); şi trei simboluri auxiliare: V (5 în zecimal), L (50), D (500). Un exemplu de număr exprimat în sistemul de numeraţie roman este MM (în sistemul de numeraţie zecimal reprezintă 2000). Poziţia cifrele semnificative ale acestui număr nu au o anumită pondere în valoarea numărului. Este cunoscut că acest sistem a dispărut datorită faptului că era extrem de greu de lucrat cu el, chiar şi în cazul celor mai simple operaţii aritmetice, este suficient să ne închipuim chinul care trebuie străbătut pentru adunarea, de exemplu, a numărului MDCCLXVIII (1768 în zecimal) cu numărul MCMLIX (1959 în zecimal). Pentru eventualii sceptici, îi invităm să efectueze produsul celor două numere (tot în sistemul de numeraţie roman).

La calculatoarele electronice se utilizează numai sistemele de numeraţie poziţionale, datorită simplităţii în reprezentarea diverselor numere şi a uşurinţei în efectuarea calculelor aritmetice. Un număr N format din parte întreagă şi parte fracţionară, scris în baza de numeraţie b, se poate utiliza una din următoarele trei forme de exprimare:

25

Page 2: 4 Sisteme de Numeratie

Introducere în Informatică

Facem convenţia ca în cele ce urmează în loc de virgula zecimală să folosim punctul zecimal anglo-saxon. Deci în scrierea curentă a numerelor care au şi parte fracţionară în loc de virgulă vom folosi punctul.

În general un număr conţine atât parte întreagă cât şi parte fracţionară:

N = Î + 0.F

unde: Î reprezintă partea întreagă a numărului şi F este partea fracţionară a acestui număr. Această observaţie este importantă deoarece ne permite conversia separată a părţii întregi şi separat a părţii fracţionare, iar în final se adună (cadrat la punctul zecimal) cele două numere obişnuite în urma conversiei într-o anumită bază de numeraţie.

În scrierea oricărui număr se disting următoarele cifre:a) Cifra cea mai semnificativă a numărului (CCMS);b) Cifrele numărului;c) Cifra cea mai puţin semnificativă a numărului (CCMPS).De exemplu în scrierea zecimală a numărului: 1996, 1 este CCMS,

6 este CCMPS, iar 1, 9, 9 şi 6 sunt cifrele cu care se reprezintă numărul.Trebuie reamintit că în sistemul de numeraţie zecimal avem

următoarele cifre semnificative (CS) cu care putem scrie orice număr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

Convenţie: Pentru a putea deosebi numerele scrise în diverse sisteme de numeraţie, vom scrie numărul în paranteză rotundă şi vom prezenta sub formă de indice baza în care este scris numărul respectiv.Exemple:

(1996)10 = este un număr scris în baza 10 (zecimal);(1100101011)2 = este un număr scris în baza 2 (binar);(17756734)8 = este un număr scris în baza 8 (octal);(1ABCDF2)16 = este un număr scris în baza 16 (hexazecimal).

Având în vedere că în viaţa de toate zilele folosim sistemul de numeraţie zecimal, în toate cazurile vom raporta numerele scrise în diverse baze, la sistemul de numeraţie zecimal.

Trecerea unui număr N dintr-o bază b1 în altă bază b2 se numeşte conversie. Astfel dacă avem numărul N scris în baza b1 ăi vrem să-l trecem în baza b2, spunem că facem conversia numărului N din baza b1 în baza b2.

26

Page 3: 4 Sisteme de Numeratie

Introducere în Informatică

4.2. Sistemul de numeraţie binar

Sistemul de numeraţie binar are baza de numeraţie b = 2. Aceste sistem de numeraţie are următoarele cifre semnificative (sau cifre binare): 0 şi 1. În literatura de specialitate cifra binară 0 se mai numeşte bitul 0, iar cifra binară 1 se mai numeşte bitul 1.

4.2.1. Conversia zecimal-binară

Conversia unui număr din baza de numeraţie 10 în baza 2 se numeşte conversie zecimal-binară. Regulile de conversie diferă după cum se face conversia părţii întregi sau a părţii fracţionare a numărului.

4.2.1.1. Conversia zecimal-binară a numerelor întregi

Regula de conversie este: pentru conversia zecimal-binară a numerelor întregi se va împărţirii numărul întreg la 2, restul acestei împărţirii va reprezenta cea mai puţin semnificativă cifră (CCMPS) a numărului binar; câtul obţinut se va împărţirii din nou la 2, restul reprezentând penultima cifră semnificativă ş.a.m.d.; procesul se încheie în momentul când câtul obţinut este 0 şi restul 1, această ultimă valoare considerându-se cea mai semnificativă cifră (CCMS) a numărului. Această regulă ne conduce la concluzia că numărul binar este reprezentat de reţinerea clasei de resturi modulo 2 pentru numărul dat.

Exemplul 1: Să se convertească numărul (261)10 în binar.

Respectând regula anterioară avem succesiv:

261 : 2 = 130 şi rest 1130 : 2 = 65 şi rest 065 : 2 = 32 şi rest 132 : 2 = 16 şi rest 016 : 2 = 8 şi rest 08 : 2 = 4 şi rest 04 : 2 = 2 şi rest 02 : 2 = 1 şi rest 0

1 : 2 = 0 şi rest 1 - sensul de citire al cifrelor semnificative.

Deci se poate scrie: (261)10 = (100000101)2.

Pentru o mai uşoară scriere se poate folosi următoarea dispunere a conversiei sub formă de tablou:

27

Page 4: 4 Sisteme de Numeratie

Introducere în Informatică

- Sensul descrescător pentru câturi

0 1 2 4 8 16 32 65 130 261

1 0 0 0 1 1 1 0 1

- Sensul de citire a numărului binar.

Exemplul 2: Să se convertească în binar numărul (1996)10.

0 1 3 7 15 31 62 124 249 499 998 1996

1 1 1 1 1 0 0 1 1 0 0

Deci (1996)10 = (11111001100)2.

Exemplul 3: Să se convertească primele 16 numere întregi din baza 10 în baza 2. Conversiile se dau sub formă de tabel.

Tabelul 1.ZECIMAL BINAR

0 0000

1 0001

2 0010

3 0011

4 0100

5 0101

6 0110

7 0111

8 1000

9 1001

10 1010

11 1011

12 1100

13 1101

14 1110

15 1111

28

Page 5: 4 Sisteme de Numeratie

Introducere în Informatică

4.2.1.2. Conversia numerelor fracţionare din baza 10 în binar

Conversia se face respectând regula: pentru conversia unui număr fracţionar din baza 10 în baza 2 se înmulţeşte numărul fracţionar cu 2 şi partea întreagă se reţine ca reprezentând prima cifră semnificativă de după punctul zecimal. Partea fracţionară rămasă se înmulţeşte din nou cu doi ş.a.m.d. Procesul de calcul se poate opri la atingerea unei precizii dorite de utilizator.

Exemplul 1: Să se convertească numărul fracţionar (0.125)10 din baza 10 în baza 2. Pentru conversie procedăm astfel:

0.125 x 2 = 0.250 partea întreagă = 00.250 x 2 = 0.5 partea întreagă = 00.5 x 2 = 1.0 partea întreagă = 1

şi se citeşte de dinspre dinspre prima operaţie spre ultima.Se obţine : (0.125)10 = (0.001)2.

Exemplul 2: Să se convertească (0.625)10 în binar. Operaţiile necesare pentru această conversie sunt:

0.625 x 2 = 1.250 partea întreagă = 10.250 x 2 = 0.5 partea întreagă = 00.5 x 2 = 1.0 partea întreagă = 1

şi obţinem rezultatul : (0.625)10 = (0.101)2.

Exemplul 3: Să se efectueze conversia numărului (0.1359)10

în binar. Procedând conform regulii enunţate avem:

0.1359 x 2 = 0.2718 partea întreagă = 00.2718 x 2 = 0.5436 partea întreagă = 00.5436 x 2 = 1.0872 partea întreagă = 10.0872 x 2 = 0.1744 partea întreagă = 00.1744 x 2 = 0.3488 partea întreagă = 00.3488 x 2 = 0.6976 partea întreagă = 00.6976 x 2 = 1.3952 partea întreagă = 10.3952 x 2 = 0.7904 partea întreagă = 00.7904 x 2 = 1.5808 partea întreagă = 10.5808 x 2 = 1.1616 partea întreagă = 1

şi deci rezultatul obţinut: (0.1359)10 = (0.0010001011)2, care este desigur un rezultat aproximativ, deoarece procesul de calcul putea fi continuat, dar pe noi ne mulţumeşte aproximaţia. În multe situaţii acest proces de calcul poate fi lung, ca în exemplul următor, dar el poate fi oprit la atingerea unei aproximaţii acceptabile.

29

Page 6: 4 Sisteme de Numeratie

Introducere în Informatică

Exemplul 4: Să se convertească în binar numărul fracţionar (0.9425)10. Avem următoarea succesiune de calcule:

0.9425 x 2 = 1.8850 partea întreagă = 10.8850 x 2 = 1.770 partea întreagă = 10.77 x 2 = 1.44 partea întreagă = 10.44 x 2 = 0.88 partea întreagă = 00.88 x 2 = 1.76 partea întreagă = 10.76 x 2 = 1.52 partea întreagă = 10.52 x 2 = 1.04 partea întreagă = 10.04 x 2 = 0.08 partea întreagă = 00.08 x 2 = 0.16 partea întreagă = 00.16 x 2 = 0.32 partea întreagă = 00.32 x 2 = 0.64 partea întreagă = 00.64 x 2 = 1.28 partea întreagă = 10.28 x 2 = 0.56 partea întreagă = 00.56 x 2 = 1.12 partea întreagă = 10.24 x 2 = 0.48 partea întreagă = 00.48 x 2 = 0.96 partea întreagă = 00.96 x 2 = 1.92 partea întreagă = 10.92 x 2 = 1.84 partea întreagă = 10.84 x 2 = 1.68 partea întreagă = 10.68 x 2 = 1.36 partea întreagă = 10.36 x 2 = 0.72 partea întreagă = 00.72 x 2 = 1.44 partea întreagă = 1

şi obţinem : (0.9425)10 = (0.11101110000101000111101)2.

4.2.2. Conversia binar-zecimală

Conversia unui număr din baza de numeraţie 2 în baza 10 se numeşte conversie binar-zecimală. Regulile după care se face conversia diferă de la partea întreagă la cea fracţionară.

4.2.2.1. Conversia binar-zecimală a numerelor întregi

Conversia binar-zecimală se efectuează conform regulii: pentru conversia unui număr binar întreg în baza 10 se înmulţesc cifrele semnificative ale numărului binar cu ponderile corespunzătoare pe care le ocupă cifrele în numărul binar, astfel:- ultima cifră (CCMPS) se înmulţeşte cu 20

- penultima cifră se înmulţeşte cu 21 - ..................................

Tabelul 2.

30

Page 7: 4 Sisteme de Numeratie

Introducere în Informatică

N 2n

0 1

31

Page 8: 4 Sisteme de Numeratie

Introducere în Informatică

N 2n

1 2

2 4

3 8

4 16

5 32

6 64

7 128

8 256

9 512

10 1 024

11 2 048

12 4 096

13 8 192

14 16 384

15 32 768

16 65 536

17 131 072

18 262 144

19 524 288

20 1 048 576

21 2 097 152

22 4 194 304

23 8 388 608

24 16 777 216

25 33 544 432

-cea mai semnificativă (CCMS) se înmulţeşte cu 2n-1

unde: n este numărul total de cifre semnificative ale numărului final; produsele intermediare se însumează rezultând valoarea numărului în zecimal.

Pentru realizarea rapidă a conversiei se utilizează de obicei tabelul puterilor lui 2 (tabelul 2).

32

Page 9: 4 Sisteme de Numeratie

Introducere în Informatică

Exemplul 1: Să se convertească numărul binar (110101)2 în zecimal. Şi aici se poate folosi un tablou:

ponderi 25 24 23 22 21 20

1 1 0 1 0 1

cifrele numărului binar

deci: (110101)2 = 1*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20 = (53)10.

Exemplul 2: Să se convertească numărul binar (111101101)2 în baza 10. După efectuarea calculelor avem: (111101101)2 = 1*28 + 1*27 + 1*26 + 1*25 + 1*23 + 1*22 + 1*20 = (493)10.

4.2.2.2. Conversia binar-zecimală a numerelor binare fracţionare

Regula de conversie este următoarea: pentru a converti un număr binar fracţionar din baza 2 în baza 10 se înmulţeşte fiecare cifră cu ponderea sa "negativă" şi se adună produsele intermediare.

Tabelul 3.n 2-n

1 0.5

2 0.25

3 0.125

4 0.0625

5 0.03125

6 0.015625

7 0.0078125

8 0.00390625

9 0.001953125

10 0.0009765625

Reţinem că şi în acest caz pentru realizarea rapidă a conversiei se utilizează de obicei tabelul puterilor "negative" ale lui 2 (tabelul 3).

Exemplul 1: Să se convertească numărul (0.1101)2 în baza 10. Şi în acest caz se poate completa un tablou:

ponderi

33

Page 10: 4 Sisteme de Numeratie

Introducere în Informatică

2-1 2-2 2-3 2-4

0 . 1 1 0 1

cifrele numărului binar

deci: (0.1101)2 = 1*2-1 + 1*2-2 + 0*2-3 + 1*2-4 = (0.8125)10.Exemplul 2: Să se convertească numărul (0.111011)2 în baza 10.

Procedând ca în cazul anterior avem: (0.111011)2 = 1*2-1 + 1*2-2 + 1*2-3 + 1*2-5 + 1*2-6 = (0.921875)10.

4.2.3. Operaţii aritmetice în binar

Indiferent în ce sistem de numeraţie se face o operaţie aritmetică, rezultatul este acelaşi, cu condiţia să fi fost executată corect.

4.2.3.1. Adunarea în sistemul de numeraţie binar

Pentru a se efectua adunarea a două numere în binar, trebuie să se ţină seama de o tabelă numită şi "tabla adunării în binar":

0 + 0 = 0

1 + 0 = 1

0 + 1 = 1

1 + 1 = 10

sau:

+ 0 1

0 0 1

1 1 10

De remarcat că 1 + 1 = 0 şi un 1 care se transferă la rangul imediat superior. Exemplul 1: Care este rezultatul adunării: (110110)2 + (100111)2 = ? Procedăm ca la o adunare clasică, dar ţinând cont de tabla adunării în binar:

34

Page 11: 4 Sisteme de Numeratie

Introducere în Informatică

Deci: (110110)2 + (100111)2 = (1011101)2. Dacă convertim numerele, constatăm că: (110110)2 = (54)10, (100111)2 = (39)10 şi (1011101)2

= (93)10. Într-adevăr (54)10 + (39)10 = (93)10, ceea ce dovedeşte că adunarea în binar s-a efectuat corect.

Exemplul 2: Care este rezultatul adunării: (11101111)2 + (111011001)2 = ? Procedăm ca la o adunare clasică, dar ţinând cont de tabla adunării în binar:

Deci: (11101111)2 + (111011001)2 = (1011001000)2. Dacă convertim numerele, constatăm că: (11101111)2 = (239)10, (111011001)2 = (473)10 şi (1011001000)2 = (712)10. Într-adevăr (239)10 + (473)10 = (712)10, ceea ce dovedeşte că adunarea în binar s-a efectuat corect.

4.2.3.2. Scăderea în sistemul de numeraţie binar

Scăderea se face respectând tabla scăderii în binar:

0 - 0 = 0

1 - 0 = 1

10 - 1 = 1

1 - 1 = 0

sau:

- 0 1

0 0 1

1 0 0

35

Page 12: 4 Sisteme de Numeratie

Introducere în Informatică

De remarcat că în cazul scăderii 0 - 1 trebuie efectuat un împrumut de la rangul superior, obţinându-se rezultatul 1.

Exemplul 1: Care este rezultatul scăderii: (1110110)2 - (101011)2

= ? Procedăm ca la o scădere clasică, dar ţinând cont de tabla scăderii în binar:

Deci: (1110110)2 - (101011)2 = (1001011)2. Dacă convertim numerele, constatăm că: (1110110)2 = (118)10, (101011)2 = (43)10 şi (1001011)2 = (75)10. Într-adevăr (118)10 - (43)10 = (75)10, ceea ce dovedeşte că scăderea în binar s-a efectuat corect.

Exemplul 2: Care este rezultatul scăderii: (1111111)2 - (111110)2

= ? Procedăm ca la o scădere clasică, dar ţinând cont de tabla scăderii în binar:

Deci: (1111111)2 - (111110)2 = (1000001)2. Dacă convertim numerele, constatăm că: (1111111)2 = (127)10, (111110)2 = (62)10 şi (1000001)2 = (65)10. Într-adevăr (127)10 - (62)10 = (65)10, ceea ce dovedeşte că scăderea în binar s-a efectuat corect.

4.2.3.3. Înmulţirea în sistemul de numeraţie binar

Pentru înmulţire se foloseşte tabla înmulţirii în binar:

0 x 0 = 0

1 x 0 = 0

0 x 1 = 0

1 x 1 = 1

36

Page 13: 4 Sisteme de Numeratie

Introducere în Informatică

sau:

x 0 1

0 0 0

1 0 1

Exemplul 1: Care este rezultatul înmulţirii binare: (111011)2 x (11)2 = ? Procedăm ca la o înmulţire clasică, dar ţinând cont de tabla înmulţirii în binar:

111011x 11111011

111011 10110001

Deci: (111011)2 x (11)2 = (10110001)2. Dacă convertim numerele, constatăm că: (111011)2 = (59)10, (11)2 = (3)10 şi (10110001)2 = (177)10. Într-adevăr (59)10 x (3)10 = (177)10, ceea ce dovedeşte că înmulţirea în binar s-a efectuat corect.

Exemplul 2: Care este rezultatul înmulţirii binare: (111011)2 x (101)2 = ? Procedăm ca la o înmulţirea clasică, dar ţinând cont de tabla înmulţirii în binar:

111011x 101 111011 000000

111011 100100111

Deci: (111011)2 x (101)2 = (100100111)2. Dacă convertim numerele, constatăm că: (111011)2 = (59)10, (101)2 = (5)10 şi (100100111)2 = (295)10. Într-adevăr (59)10 x (5)10 = (295)10, ceea ce dovedeşte că înmulţirea în binar s-a efectuat corect.

4.2.3.4. Împărţirea în sistemul de numeraţie binar

Pentru efectuarea împărţirii se foloseşte tabla împărţirii în binar:

0 : 0 = nedeterminare

37

Page 14: 4 Sisteme de Numeratie

Introducere în Informatică

0 : 1 = 0

1 : 0 = imposibil

1 : 1 = 1

sau:

: 0 1

0 \\\\ 0

1 //// 1

De remarcat faptul că 0 : 0 este o nedeterminare (motiv pentru care se exclude din tabla împărţirii) iar 1 : 0 este o imposibilitate (exclusă şi ea).

Exemplul 1: Care este rezultatul împărţirii binare: (1011111)2 : (10)2 = ? Procedăm ca la o împărţire clasică, dar ţinând cont de tabla împărţirii în binar:

1011111 : 10 = 101111.1 10

= =11 10

=11 10 =11 10 =10 10 = =

Deci: (1011111)2 : (10)2 = (101111.1)2. Dacă convertim numerele, constatăm că: (1011111)2 = (95)10, (10)2 = (2)10 şi (101111.1)2 = (47.5)10. Într-adevăr (95)10 : (2)10 = (47.5)10, ceea ce dovedeşte că împărţirea în binar s-a efectuat corect.

Exemplul 2: Care este rezultatul împărţirii binare: (1011111)2 : (11)2 = ? Procedăm ca la o înmulţirea clasică, dar ţinând cont de tabla împărţirii în binar:

1011111 : 11 = 11111.10101… 11 101

11

38

Page 15: 4 Sisteme de Numeratie

Introducere în Informatică

101 11 101 11 100

11 =100

11 =100 …

Deci: (1011111)2 : (11)2 = (11111.10101...)2. Dacă convertim numerele, constatăm că: (1011111)2 = (95)10, (11)2 = (3)10 şi (11111.10101...)2 = (31.666...)10. Într-adevăr (95)10 : (3)10 = (31.666...)10, ceea ce dovedeşte că împărţirea în binar s-a efectuat corect.

4.3. Sistemul de numeraţie hexazecimal

Sistemul de numeraţie care are baza egală cu 16 se numeşte sistemul de numeraţie hexazecimal. În acest sistem de numeraţie, cifrele semnificative utilizate pentru scrierea unui număr, sunt următoarele:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E şi F.

Conversia în sistemul hexazecimal este mult uşurată de următoarea observaţie: deoarece baza sistemului hexazecimal 16 este agală cu 24 putem să grupăm câte patru poziţii binare într-o singură poziţie hexazecimală.

Tabelul 4.Zecimal Binar Hexazecimal

0 0000 0

1 0001 1

2 0010 2

3 0011 3

4 0100 4

5 0101 5

39

Page 16: 4 Sisteme de Numeratie

Introducere în Informatică

6 0110 6

7 0111 7

8 1000 8

9 1001 9

10 1010 A

11 1011 B

12 1100 C

13 1101 D

14 1110 E

15 1111 F

16 1 0000 10

Tabelul 4 dă posibilitatea conversiei rapide din binar în hexazecimal. În practică se utilizează, aproape exclusiv, conversia mai întâi în binar şi apoi în hexazecimal, conform conversiei date de tabelul anterior. Trebuie reţinut că regulile de conversie zecimal-hexazecimal (pentru întregi şi părţi fracţionare) sunt extrem de asemănătoare cu cele din binar, însă se foloseşte mai mult conversia intermediară în baza 2 urmată de conversia rapidă în baza 16.

4.3.1. Conversia zecimal-hexazecimală

4.3.1.1. Conversia numerelor întregi

Pentru conversia numerelor întregi rămâne valabilă regula împărţirii succesive cu 16, dar este ceva mai complicat de aplicat, aşa că vom folosi observaţia cu gruparea celor patru poziţii binare. De aceea vom converti mai întâi numărul din baza 10 în baza 2 şi apoi grupăm câte patru poziţii binare, dinspre cea mai puţin semnificativă, înspre cea mai semnificativă şi vom trece fiecare grup în baza 16.

Exemplul 1: (261)10 =(100000101)2 trebuie trecut în baza 16.Gruparea se face astfel : (0001 0000 0101)2 pentru care avem

următoarele egalităţi:- grupul: (0101)2 = (5)16 ;- grupul: (0000)2 = (0)16 ;- grupul: (0001)2 = (1)16 .Prin urmare avem: (261)10 = (105)16.Exemplul 2: (1996)10 = (11111001100)2 trebuie trecut în baza 16.

40

Page 17: 4 Sisteme de Numeratie

Introducere în Informatică

Gruparea se face astfel : (0111 1100 1100)2 pentru care avem următoarele egalităţi:

- grupul: (1100)2 = (C)16 ;- grupul: (0111)2 = (7)16 .Prin urmare avem: (1996)10 = (7CC)16.

4.3.1.2. Conversia numerelor fracţionare

Şi aici este valabilă regula cu înmulţirile repetate, dar vom folosi metoda mai simplă a grupărilor, începând de la prima cifră de după punctul zecimal.

Exemplul 1: (0.125)10 =(0.001)2 trebuie trecut în baza 16.Gruparea se face astfel : (0. 0010)2 pentru care avem următoarea

egalitate:- grupul: (0010)2 = (2)16 .Prin urmare avem: (0.125)10 = (0.2)16.Exemplul 2: (0.9425)10 = (0.1110111000010)2 trebuie trecut în

baza 16.Gruparea se face astfel : (0. 1110 1110 0001)2 pentru care avem

următoarele egalităţi:- grupul: (1110)2 = (E)16 ;- grupul: (0001)2 = (1)16 .Prin urmare avem: (0.9425)10 = (0.EE1)16.

4.3.2. Conversia hexazecimal-zecimală

Conversia unui număr hexazecimal în număr zecimal se face ca şi în binar, numai că aici vom înmulţii cu ponderi de forma 16 0, 161, 162, ... , sau cu 16-1, 16-2, 16-3, ... .

4.3.2.1. Conversia numerelor întregi

Exemplul 1: Să se treacă numărul (3AC)16 în baza 10.(3AC)16 = 3x162 + Ax16 + Cx160 = 3x256 + 10x16 + 12 = (940)10.

Exemplul 2: Să se treacă numărul (7BAB)16 în baza 10.(7BAB)16 = 7x163 + Bx162 + Ax16 + Bx160 = (31659)10.

4.3.2.2. Conversia numerelor fracţionare

Pentru acest tip de conversie trebuie să ţinem seama că:16-1 = 0.062516-2 = 0.00390625

41

Page 18: 4 Sisteme de Numeratie

Introducere în Informatică

16-3 = 0.00024414062516-4 = 0.000152998776009816-5 = 0.0000009536743164062

Exemplul 1: Să se treacă numărul (0.A)16 în baza 10.(0.A)16 = Ax16-1 = 10x0.0625 = (0.625)10.

Exemplul 2: Să se treacă numărul (0.6)16 în baza 10.(0.6)16 = 6x16-1 = (0.375)10.

4.3.2.3. Adunarea în hexazecimal

Pentru efectuarea adunării în hexazecimal se ţine seama de "tabla adunării în hexazecimal".

Exemplu: Să se adune numerele hexazecimale (1ABC)16 + (3ABEF)16.

1ABC + 3ABEF 3C6AB

Deci: (1ABC)16 + (3ABEF)16 = (3C6AB)16.

4.3.2.4. Înmulţirea în hexazecimal

Pentru efectuarea înmulţirii în hexazecimal se ţine seama de "tabla înmulţirii în hexazecimal".

Exemplu: Să se înmulţească numerele hexazecimale (DACA)16 x (ADA)16.

DACA x ADA

88BE4 B1C42

88BE4 9463404

Deci: (DACA)16 x (ADA)16 = (9463404)16.Pentru conversiile în octal, lăsăm cititorului curiozitatea de a-şi

verifica cunoştinţele dobândite până aici. Încercaţi, vă asigur că nu este timp pierdut.

Pentru verificarea cunoştinţelor vă propun mai multe exemple împreună cu rezolvările lor.

+ 0 1 2 3 4 5 6 7 8 9 A B C D E F

42

Page 19: 4 Sisteme de Numeratie

Introducere în Informatică

0 0 1 2 3 4 5 6 7 8 9 A B C D E F

1 1 2 3 4 5 6 7 8 9 A B C D E F 10

2 2 3 4 5 6 7 8 9 A B C D E F 10 11

3 3 4 5 6 7 8 9 A B C D E F 10 11 12

4 4 5 6 7 8 9 A B C D E F 10 11 12 13

5 5 6 7 8 9 A B C D E F 10 11 12 13 14

6 6 7 8 9 A B C D E F 10 11 12 13 14 15

7 7 8 9 A B C D E F 10 11 12 13 14 15 16

8 8 9 A B C D E F 10 11 12 13 14 15 16 17

9 9 A B C D E F 10 11 12 13 14 15 16 17 18

A A B C D E F 10 11 12 13 14 15 16 17 18 19

B B C D E F 10 11 12 13 14 15 16 17 18 19 1A

C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B

D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C

E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D

F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E

4.3.2.5. Exemple de transformări

1). (1993)10=(11111001001)2=(3711)8=(7C9)16

2). (11732)10=(10110111010100)2=(26724)8=(2DD4)16

3). (1949)10=(11110011101)2=(3635)8=(79D)16

4). (9631)10=(10010110011111)2=(22637)8=(259F)16

X 0 1 2 3 4 5 6 7 8 9 A B C D E F

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 0 1 2 3 4 5 6 7 8 9 A B C D E F

2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E

3 0 3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D

4 0 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C

5 0 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B

6 0 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A

43

Page 20: 4 Sisteme de Numeratie

Introducere în Informatică

7 0 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69

8 0 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78

9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87

A 0 A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96

B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5

C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4

D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3

E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2

F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1

5). (107327)10=(11010001100111111)2=(321477)8=(1A33F)16

6). (118328)10=(11100111000111000)2=(347070)8=(1CE38)16

7). (36874)10=(1001000000001010)2=(110012)8=(900A)16

8). (96873)10=(10111101001101001)2=(275151)8=(17A69)16

9). (898763)10=(11011011011011001011)2=(3333313)8=(DB6CB)16

10). (887733)10=(11011000101110110101)2=(3305665)8=(D8BB5)16

11). (558762)10=(10001000011010101010)2=(2103252)8=(886AA)16

12). (338693)10=(1010010101100000101)2=(1225405)8=(52B05)16

13). (85732)10=(10100111011100100)2=(247344)8=(14EE4)16

14). (198765)10=(110000100001101101)2=(604155)8=(3086D)16

15). (518324)10=(1111110100010110100)2=(1764264)8=(7E8B4)16

16). (968735)10=(11101100100000011111)2=(3544037)8=(EC81F)16

17). (131379)10=(100000000100110011)2=(400463)8=(20133)16

18). (151687)10=(100101000010000111)2=(450207)8=(25087)16

19). (875311)10=(11010101101100101111)2=(3255457)8=(D5B2F)16

20). (9116382)10=(1101111110111011110)2=(3375636)8=(DFB9E)16

4.4. Utilizarea codurilor cu bare (bar code)

Dicţionarul explicativ de calculatoare defineşte codul de bare ca: "un model de tipărire cu bare late şi înguste, folosit la reprezentarea codurilor numerice din etichete ce pot fi citite cu un aparat"1, numit cititor de coduri de bare (bar code reader).

De la cele mai mari magazine din lume până la cele mai modeste, se utilizează aceste coduri de bare, pe fiecare produs oferit spre vânzare. Acest cod este realizat în conformitate cu specificaţiile UPC (Universal Product Code) şi el poate fi citit cu ajutorul unui cititor optic. Trenul de

1 B. Pfaffenberg, rev. J. Petersen - Dicţionar explicativ de calculatoare, Editura TEORA, Bucureşti, 1996, p. 58.

44

Page 21: 4 Sisteme de Numeratie

Introducere în Informatică

impulsuri care rezultă în urma citirii, se transmite (de la punctul de vânzare) până la calculatorul electronic care conţine o bază de date, care recunoaşte aceste coduri. Calculatorul va retransmite preţul produsului la punctul de vânzare şi face calcului sumei (parţiale şi/sau totale), în cazul în care clientul cumpără mai multe produse de la respectivul magazin. Desigur că în acest mod se ţine evidenţa tuturor vânzărilor din magazin în timp real.

În unele ţări ale lumii se folosesc coduri de bare şi pentru serviciile poştale, cum ar fi codurile poştale ZIP (folosite pe teritoriul SUA) utilizate pentru identificarea destinatarilor, sau codul POSTNET, coduri care se tipăresc deasupra sau dedesubtul adresei poştale. Produse software precum WordPerfect şi Word sub Windows, includ opţiuni de tipărire a codurilor cu bare POSTNET pe plicurile ce se doresc a fi expediate de utilizator. În acest mod expeditorii îşi pot tipări chiar ei codurile de bare POSTNET pe plicurile care vor să le expedieze. Aceste coduri sunt deosebit de utile atât la identificarea destinatarului, cât şi pentru eventualele returnări la expeditor.

Cele mai răspândite sunt codurile de bare care sunt tipărite pe etichete autocolante, direct pe mărfurile de larg consum etc.

Fig. 4. 3. Exemplu de cod cu bareMarele avantaj al utilizării codului de bare constă în faptul că se

oferă o metodă rapidă şi comodă, fără erori şi mult mai sigură decât introducerea datelor de la tastatură (sau în general de la o claviatură).

Cel mai utilizat cod de bare este cel cunoscut sub denumirea de "codul 2 din 5". Denumirea derivă din faptul că din 5 bare succesive, două bare sunt de lăţime mai mare (mai groase). De obicei barele înguste au lăţimea tipică de 0,2 mm, iar barele mai late au dimensiunea de trei ori mai mare. Barele înguste sunt asociate logicului binar "0", iar cele late sunt asociate logicului binar "1". Absolut fiecare cifră zecimală (de la 0 la 9) este reprezentată de două bare late şi trei înguste, conform tabelului de codificare x1. În plus fiecare cod are două combinaţii de 3 bare (2 late şi una îngustă), una care marchează începutul codului (combinaţia START) şi alta care marchează sfârşitul codului (combinaţia STOP).

45

Page 22: 4 Sisteme de Numeratie

Introducere în Informatică

Tabelul x1

Nr.crt.

Cifra zecimală sau codul special

Reprezentarea binară

Reprezentarea în codul de bare

1 START - - 1 1 0

2 0 0 0 1 1 0

3 1 1 0 0 0 1

4 2 0 1 0 0 1

5 3 1 1 0 0 0

6 4 0 0 1 0 1

7 5 1 0 1 0 0

8 6 0 1 1 0 0

9 7 0 0 0 1 1

10 8 1 0 0 1 0

11 9 0 1 0 1 0

12 STOP - - 1 0 1

În constituirea unui cod cu bare, pe lângă codurile de START şi STOP, se obişnuieşte a se folosi o cifră zecimală de control. Această cifră se utilizează pentru verificarea corectitudinii citirii celorlalte cifre zecimale semnificative ale codului. Cifra de control poate fi de pildă: ultima cifră a rezultatului adunării celorlalte cifre semnificative ale codului. Aşa de exemplu dacă codul trebuie să reprezinte combinaţia 06061949, atunci cifra de control este 5, deoarece 0+6+0+6+1+9+4+9=35. Aşadar codul de bare pentru acest exemplu este dat în figura anterioară.

Produsele software care beneficiază de citirea codului de bare, trebuie să efectueze următoarele verificări:- să verifice dacă numărul de biţi citiţi (a barelor citite) este egal cu 5*n+2*3, adică dacă au fost citite "n" cifre semnificative, un START şi un STOP;- să controleze dacă mesajul începe cu un START şi se termină cu un STOP;

46

Page 23: 4 Sisteme de Numeratie

Introducere în Informatică

- să verifice dacă grupurile de câte cinci bare, care au fost cuprinse între START şi STOP, au câte doi biţi de "1" şi trei biţi de "0" fiecare (adică dacă sunt prezente două bare late şi trei înguste, în fiecare grup);- să verifice dacă suma de control citită corespunde cu cea calculată.

Dacă cel puţin una din aceste verificări nu este corectă, atunci produsul software trebuie să returneze un mesaj de eroare. Dacă totul a fost corect, atunci se va însuma preţul produsului respectiv (corectat cu eventualele fluctuaţii valutare ale zilei respective) şi se va afişa, la locul de desfacere a mărfii, totalul de plată. Dacă vânzătorul tastează suma plătită de cumpărător, calculatorul va indica şi restul care trebuie returnat cumpărătorului, sau dacă plăteşte cu carte de credit se vor efectua operaţiunile bancare legate de acest lucru. În acest mod se poate ţine evidenţa automată a întregii gestiuni a magazinului, făcându-se automat şi statistici ale vânzărilor curente şi necesarul de aprovizionat, în conformitate cu teoria stocurilor.

Cititoarele de coduri de bare pot fi de două feluri:- portabile, utilizate în general în comerţ;- fixe, utilizate atât în comerţ cât şi pe liniile automate din industrie.

Cititoarele funcţionează pe principiul absorbţiei luminii, în proporţie mai mare la barele late şi în proporţie mai mică la barele înguste. Parcurgerea codului de bare cu viteză constantă, duce la apariţia unui tren de impulsuri, tren care poate fi utilizat în achiziţia de date la calculator. Pentru detalii de ordin tehnic în realizarea unui cititor de coduri de bare, recomandăm parcurgerea articolului lui P. Nicolae "Coduri de dungi; Bar-Graf", din revista "Electronistul" nr.2/1990 pagina 10.

47