W C++ liczby całkowite można zapisywać w różnych systemach liczbowych. Zapis zaczynający się od 0x lub 0X oznacza liczbę szesnastkową, czyli zapisaną w systemie o podstawie 16.
Przykład
int a = 0x73;
cout << a;
Wartość 0x73 nie oznacza liczby dziesiętnej 73. Jest to liczba szesnastkowa:
0x73 = 7 * 16 + 3 = 112 + 3 = 115
Dlatego program wypisze:
115
Cyfry w systemie szesnastkowym
System szesnastkowy używa cyfr:
0–9dla wartości od 0 do 9,A–Fluba–fdla wartości od 10 do 15.
Przykłady:
int x = 0xA; // 10
int y = 0x10; // 16
int z = 0xFF; // 255
Jak wypisuje cout?
Domyślnie cout wypisuje liczby całkowite w systemie dziesiętnym. Dlatego nawet jeśli wartość została zapisana w kodzie jako 0x73, na ekranie pojawi się jej odpowiednik dziesiętny, czyli 115.
Można zmienić sposób wypisywania za pomocą manipulatorów:
cout << dec << a; // dziesiętnie
cout << hex << a; // szesnastkowo
cout << oct << a; // ósemkowo
Wniosek egzaminacyjny
Jeżeli w kodzie C++ widzisz zapis 0x..., najpierw przelicz liczbę z systemu szesnastkowego na dziesiętny, ponieważ standardowe cout << liczba wyświetla wynik dziesiętnie.