Baze de numeratie
Metoda noastra pentru scrierea numerelor se bazeaza pe puterile lui 10. De exemplu, fie numarul 2468. 2 reprezinta 2 mii, 4 reprezinta 4 sute, 6 reprezinta 6 zeci iar 8 reprezinta 8 unitati:
O mie este 10*10*10, ceea ce poate fi scris 103, sau 10 la puterea a treia. Utilizānd aceasta notatie, putem scrie relatia precedenta astfel:
Deoarece notatia este bazata pe puterile lui 10, o denumim notatie īn baza 10 sau zecimala. Oricine poate alege un alt numar ca baza. Īn C++ vi se permite sa notati numerele īntregi si īn baza 8 (octal) sau īn baza 16 (hexazecimal). (Observatie: 100 este 1, ca de altfel orice alt numar diferit de zero, ridicat la puterea zero.)
Īntregi octali
Numerele octale sunt bazate pe puterile lui 8, deci notatia īn baza 8 foloseste pentru scrierea numerelor cifrele 0-7. C++ foloseste prefixul 0 pentru a indica notatia octala. Prin urmare 0177 este o valoare octala. Pentru a gasi echivalentul īn baza 10 folositi puterile lui 8:
0177 (octal) = 1 82+7 81+7 80
= 1 64+7 8+7 1
= 127 (zecimal)
Motivul pentru care C++ si C permit notatia octala este ca īn sistemul de operare UNIX valorile sunt adesea reprezentate īn octal.
Numere hexazecimale
Numerele hexazecimale sunt bazate pe puterile lui 16. Adica 10 hexazecimal este 16+0 adica 16. Pentru a reprezenta valorile īntre 9 si 16 īn hexazecimal este nevoie de cāteva cifre īn plus. Notatia hexazecimala standard foloseste pentru aceste cifre literele a-f. C++ accepta atāt majuscule cāt si litere mici pentru aceste notatii, dupa cum vedeti si īn Tabelul A.1.
Tabelul A.1 Cifrele hexazecimale.
Cifra hexazecimala Valoare zecimala Cifra hexazecimala Valoare zecimala
a sau A 10 d sau D 13
b sau B 11 e sau E 14
c sau C 12 f sau F 15
Pentru a indica o notatie hexazecimala īn C++ se folosesc ca preficsi 0x sau 0X. Prin urmare, 0x2B3 este o valoare hexazecimala. Pentru a gasi valoarea zecimala echivalenta, evaluati puterile lui 16:
0x2B3 (hexa) = 2 162+11 161+3 160
= 2 256+11 16+3 1
= 691 (zecimal)
Documentatiile hardware folosesc īn mod curent notatii hexazecimale pentru valorile unor locatii de memorie si pentru porturi.
Numere binare
Chiar daca folositi notatii zecimale, octale sau hexazecimale pentru a scrie un īntreg, calculatorul īl va stoca īn valoare binara, sau īn baza 2. Īn notatie binara se folosesc doar doua cifre, 0 si 1. De exemplu 10011011 este un numar binar. Totusi, C++ nu furnizeaza o notatie binara. Numerele binare se bazeaza pe puterile lui 2:
10011011 = 1 27+0 26+0 25+1 24+1 23 +0 22+1 21+1 20
= 128+0+0+16+8+0+2+1
= 155
Notatia binara se potriveste memoriei unui calculator, īn care fiecare element, care se numeste bit, poate fi activ sau inactiv. Trebuie doar sa identificati starea inactiva cu 0, iar cea activa cu 1. Memoria este organizata de obicei īn grupuri de biti, care se numesc octeti, fiecare octet avānd 8 biti. Bitii īntr-un octet sunt numerotati dupa puterile lui 2 corespunzatoare. Astfel, cel mai din dreapta este bitul 0, urmatorul este bitul 1, si asa mai departe. Īn Figura A.1 va este prezentat un īntreg pe doi octeti.
numarul bitului
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0
valoare = 1 211 + 1 28 + 1 25 + 1 21
= 2048 + 256 + 32 + 2
= 2338
Figura A.1 O valoare īntreaga reprezentata pe doi octeti.
Binar si hexa
Notatia hexa este folosita adesea pentru a vizualiza mai comod datele binare, cum ar fi adresele de memorie sau īntregii care pastreaza setarile bitilor indicatori. Acest lucru este posibil deoarece fiecare cifra hexazecimala corespunde unei unitati formate din patru biti. Īn Tabelul A.2 va este prezentata aceasta corespondenta.
Tabelul A.2 Cifrele hexazecimale si echivalentii binari.
Cifra hexazecimala Echivalent binar Cifra hexazecimala Echivalent binar
0 0000 8 1000
1 0001 9 1001
2 0010 A 1010
3 0011 B 1011
4 0100 C 1100
5 0101 D 1101
6 0110 E 1110
7 0111 F 1111
Pentru a converti o valoare hexa īn binar, īnlocuiti fiecare cifra hexa cu setul de biti echivalent. De exemplu, numarul hexa 0xA4 corespunde binarului 1010 0100. Īn mod analog, puteti converti cu usurinta o valoare binara īn notatie hexa convertind fiecare unitate de patru biti īn cifra hexa echivalenta. De exemplu, valoarea binara 1001 0101 devine 0x95.
|