Sunteți pe pagina 1din 4

Anexa A: Baze de numeraie

Metoda noastr pentru scrierea numerelor se bazeaz pe puterile lui 10. De exemplu, fie numrul 2468. 2 reprezint 2 mii, 4 reprezint 4 sute, 6 reprezint 6 zeci iar 8 reprezint 8 uniti: 2468 = 2 1000 + 4 100 + 6 10 + 8 1 O mie este 10*10*10, ceea ce poate fi scris 103, sau 10 la puterea a treia. Utiliznd aceast notaie, putem scrie relaia precedent astfel: 2468 = 2 103 + 4 102 + 6 101 + 8 100 Deoarece notaia este bazat pe puterile lui 10, o denumim notaie n baza 10 sau zecimal. Oricine poate alege un alt numr ca baz. n C++ vi se permite s notai numerele ntregi i n baza 8 (octal) sau n baza 16 (hexazecimal). (Observaie: 100 este 1, ca de altfel orice alt numr diferit de zero, ridicat la puterea zero.)

ntregi octali Numerele octale sunt bazate pe puterile lui 8, deci notaia n baza 8 folosete pentru scrierea numerelor cifrele 07. C++ folosete prefixul 0 pentru a indica notaia octal. Prin urmare 0177 este o valoare octal. Pentru a gsi echivalentul n baza 10 folosii puterile lui 8: 0177 (octal) = 1 82+7 81+7 80 = 1 64+7 8+7 1 = 127 (zecimal) Motivul pentru care C++ i C permit notaia octal este c n sistemul de operare UNIX valorile sunt adesea reprezentate n octal.

Numere hexazecimale

Numerele hexazecimale sunt bazate pe puterile lui 16. Adic 10 hexazecimal este 16+0 adic 16. Pentru a reprezenta valorile ntre 9 i 16 n hexazecimal este nevoie de cteva cifre n plus. Notaia hexazecimal standard folosete pentru aceste cifre literele af. C++ accept att majuscule ct i litere mici pentru aceste notaii, dup cum vedei i n Tabelul A.1.

Tabelul A.1 Cifrele hexazecimale. Cifr hexazecimal Valoare zecimal Cifr hexazecimal

Valoare zecimal a sau A b sau B c sau C 10 11 12 d sau D e sau E f sau F 13 14 15

Pentru a indica o notaie hexazecimal n C++ se folosesc ca prefici 0x sau 0X. Prin urmare, 0x2B3 este o valoare hexazecimal. Pentru a gsi valoarea zecimal echivalent, evaluai puterile lui 16: 0x2B3 (hexa) = 2 162+11 161+3 160 = 2 256+11 16+3 1 = 691 (zecimal) Documentaiile hardware folosesc n mod curent notaii hexazecimale pentru valorile unor locaii de memorie i pentru porturi.

Numere binare Chiar dac folosii notaii zecimale, octale sau hexazecimale pentru a scrie un ntreg, calculatorul l va stoca n valoare binar, sau n baza 2. n notaie binar se folosesc doar dou cifre, 0 i 1. De exemplu 10011011 este un numr binar. Totui, C++ nu furnizeaz o notaie binar. Numerele binare se bazeaz pe puterile lui 2:

10011011

= 1 27+0 26+0 25+1 24+1 23 = 128+0+0+16+8+0+2+1 = 155

+0 22+1 21+1 20

Notaia binar se potrivete memoriei unui calculator, n care fiecare element, care se numete bit, poate fi activ sau inactiv. Trebuie doar s identificai starea inactiv cu 0, iar cea activ cu 1. Memoria este organizat de obicei n grupuri de bii, care se numesc octei, fiecare octet avnd 8 bii. Biii ntr-un octet sunt numerotai dup puterile lui 2 corespunztoare. Astfel, cel mai din dreapta este bitul 0, urmtorul este bitul 1, i aa mai departe. n Figura A.1 v este prezentat un ntreg pe doi octei.

numrul bitului 15 14 13 12 11 10 0 0 0 0 1 0 9 0 8 1 7 0 6 0 5 1 4 0 3 0 2 0 1 1 0 0

valoare = 1 211 + 1 28 + 1 25 + 1 21 = 2048 + 256 + 32 + 2 = 2338 Figura A.1 O valoare ntreag reprezentat pe doi octei.

Binar i hexa Notaia hexa este folosit adesea pentru a vizualiza mai comod datele binare, cum ar fi adresele de memorie sau ntregii care pstreaz setrile biilor indicatori. Acest lucru este posibil deoarece fiecare cifr hexazecimal corespunde unei uniti formate din patru bii. n Tabelul A.2 v este prezentat aceast coresponden.

Tabelul A.2 Cifrele hexazecimale i echivalenii binari. Cifr hexazecimal Echivalent binar Cifr hexazecimal

Echivalent binar

0 1 2 3 4 5 6 7

0000 0001 0010 0011 0100 0101 0110 0111

8 9 A B C D E F

1000 1001 1010 1011 1100 1101 1110 1111

Pentru a converti o valoare hexa n binar, nlocuii fiecare cifr hexa cu setul de bii echivalent. De exemplu, numrul hexa 0xA4 corespunde binarului 1010 0100. n mod analog, putei converti cu uurin o valoare binar n notaie hexa convertind fiecare unitate de patru bii n cifra hexa echivalent. De exemplu, valoarea binar 1001 0101 devine 0x95.

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