Notă pentru programatorii de C/C++
Deși, sub aspect sintactic, formatele octal și hexazecimal din limbajul
Java corespund cu cele din C/C++, există deosebiri esențiale.
-
În limbajul Java, numerele scrise în format octal sau hexazecimal sunt
numere
întregi cu semn, la fel ca numerele scrise în format zecimal.
Deosebirea constă în sistemul de numerație folosit, fără a se face o legatură
directă cu reprezentarea internă (binară) a numerelor respective.
-
În limbajele C/C++, numerele scrise în format octal sau hexazecimal sunt,
de fapt, reprezentări condensate ale formei interne (binare) a numerelor
respective, deci nu au semn:
-
în octal, se grupeaza biții numărului câte trei de la dreapta la stânga,
după care fiecare grup de trei biți se înlocuiește cu cifra octală corespunzătoare;
-
în hexazecimal, se grupeaza biții câte 4 de la dreapta la stânga, după
care se înlocuiește fiecare grup cu cifra hexazecimală corespunzătoare.
În consecință, reprezentările octală și hexazecimală din Java coincid cu
cele din C/C++ numai în cazul numerelor pozitive.
Exemple:
-
numărul pozitiv 93 de tip byte se reprezinta intern sub
forma unui octet care conține biții 01011101. Atât în Java, cât
și în C/C++ acest număr se reprezintă în octal sub forma 0135, iar in hexazecimal
sub forma 0x5D;
-
numărul negativ -93 se va reprezenta în Java sub forma -0135 în octal și
-0x5D în hexazecimal, adică, la fel ca în zecimal, se pune semnul minus
în fața reprezentării corespunzătoare a modulului numărului respectiv.
În schimb, în C/C++ se pornește de la reprezentarea internă a numarului
-93, care pe un octet, folosind complementul la 2, este 10100011,
astfel că se obține 0243 în octal și 0xA3 în hexazecimal.
|