Literały szesnastkowe w C++

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

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:

  • 09 dla wartości od 0 do 9,
  • AF lub af dla 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.