Liczba BACA zapisana w systemie heksadecymalnym odpowiada liczbie
A. 47821₍₁₀₎
B. 1011101011001010₍₂₎
C. 135316₍₈₎
D. 110010101111010₍₂₎
Pytanie z egzaminu CKE, styczeń 2021 (arkusz E.12-SG-21.01).
Liczba BACA₍₁₆₎ została poprawnie zamieniona na postać binarną 1011101011001010₍₂₎. W systemie heksadecymalnym każda cyfra odpowiada dokładnie 4 bitom, czyli jednemu nibble. To jest bardzo wygodna zasada, bo nie trzeba przeliczać całej liczby przez dzielenie, tylko zamienić znaki po kolei: B₍₁₆₎ = 1011₂, A₍₁₆₎ = 1010₂, C₍₁₆₎ = 1100₂, A₍₁₆₎ = 1010₂. Po sklejeniu dostajemy 1011 1010 1100 1010, czyli 1011101011001010₍₂₎. Moim zdaniem to jedna z najpraktyczniejszych konwersji w informatyce, bo zapis szesnastkowy często spotyka się przy adresach pamięci, kolorach RGB w grafice, adresach MAC, IPv6, analizie ramek sieciowych i debugowaniu programów. Dobra praktyka jest taka, żeby przy konwersji hex → bin zawsze pilnować grup po 4 bity, także zer wiodących wewnątrz zapisu, bo jeden pominięty bit zmienia całkowicie wartość liczby.
W tym zadaniu najważniejsze jest zrozumienie, że zapis BACA jest podany w systemie heksadecymalnym, więc występują w nim cyfry od 0 do 9 oraz litery A, B, C, D, E, F. Litery nie są znakami tekstowymi w sensie ASCII, tylko cyframi o wartościach: A = 10, B = 11, C = 12. Typowy błąd polega na tym, że ktoś próbuje przeliczać liczbę trochę na pamięć albo miesza systemy pozycyjne. Wartość dziesiętna BACA₍₁₆₎ to $11 \cdot 16^3 + 10 \cdot 16^2 + 12 \cdot 16^1 + 10$, czyli 47818₍₁₀₎, a nie 47821₍₁₀₎. Różnica wygląda mała, ale w informatyce nawet przesunięcie o kilka jednostek może oznaczać inny adres komórki pamięci albo inną wartość bajtu. Zapis ósemkowy też wymaga poprawnego grupowania bitów po 3 od prawej strony. Dla tej liczby wyszłoby 135312₍₈₎, więc 135316₍₈₎ nie pasuje. Z kolei binarny zapis 110010101111010₍₂₎ po uzupełnieniu do pełnych grup po 4 bity daje 0110 0101 0111 1010, czyli 657A₍₁₆₎, a nie BACA₍₁₆₎. Z mojego doświadczenia najlepiej robić takie zadania tabelką: jedna cyfra hex i dokładnie cztery bity. To ogranicza pomyłki i jest zgodne z praktyką używaną w dokumentacji technicznej, elektronice cyfrowej oraz przy analizie danych niskopoziomowych.