Ile bitów minimum będzie wymaganych w systemie binarnym do zapisania liczby heksadecymalnej 110h?
A. 3 bity.
B. 16 bitów.
C. 9 bitów.
D. 4 bity.
Pytanie z egzaminu CKE, styczeń 2020 (arkusz E.12-SG-20.01).
Liczba 110h jest zapisana w systemie szesnastkowym, gdzie dopisek h oznacza hexadecimal, czyli podstawę 16. Każda cyfra heksadecymalna odpowiada 4 bitom, więc zapis techniczny 110h można rozpisać jako 0001 0001 0000₂. To wygląda jak 12 bitów, ale pytanie pyta o minimum bitów potrzebnych do zapisania tej wartości, a nie o zapis wyrównany do pełnych czwórek bitów. Zera z przodu nie zmieniają wartości liczby, więc można je pominąć. Zostaje 100010000₂, czyli 9 bitów. Inaczej: 110h = 1×16² + 1×16¹ + 0×16⁰ = 256 + 16 = 272. Największa liczba na 8 bitach to 255, więc 272 już się nie mieści. Na 9 bitach można zapisać wartości od 0 do 511, więc wystarcza. Moim zdaniem to dobry przykład na odróżnienie zapisu minimalnego od zapisu wyrównanego, np. do bajtu, słowa procesora albo pełnych półbajtów. W praktyce ma to znaczenie przy adresach pamięci, rejestrach, maskach bitowych i analizie protokołów, gdzie często widzimy zapis szesnastkowy, ale sprzęt i tak operuje na bitach.
W tym zadaniu łatwo pomylić kilka pojęć, bo zapis 110h wygląda krótko, ale nie oznacza to automatycznie, że potrzeba tylko tylu bitów, ile znaków w zapisie. Trzy cyfry heksadecymalne nie oznaczają 3 bitów. Jedna cyfra hex opisuje 16 możliwych wartości, a do rozróżnienia 16 stanów potrzeba 4 bitów, bo 4 bity dają zakres od 0000₂ do 1111₂. Z tego samego powodu 4 bity też nie wystarczą dla całej liczby 110h, tylko dla jednej cyfry szesnastkowej, na przykład Fh. Liczba 110h ma wartość dziesiętną 272, a 4 bity zapiszą maksymalnie 15. Czasem ktoś wybiera 16 bitów, bo kojarzy zapis heksadecymalny z rejestrami, słowem procesora albo wyrównaniem danych w pamięci. To skojarzenie nie jest całkiem z kosmosu, bo w komputerach często przechowuje się dane w bajtach, słowach 16-bitowych, 32-bitowych itd. Jednak pytanie dotyczy minimum, a nie standardowego rozmiaru komórki pamięci czy zmiennej typu integer. Gdy rozpiszemy 110h na bity, dostajemy 0001 0001 0000₂, czyli zapis w trzech półbajtach, ale początkowe zera można usunąć. Minimalny zapis to 100010000₂, a to ma 9 bitów. Typowy błąd myślowy polega tu na liczeniu znaków zapisu zamiast wartości liczby albo na bezrefleksyjnym zaokrąglaniu do 16 bitów. W technice informatycznej warto zawsze sprawdzić, czy pytanie dotyczy reprezentacji minimalnej, czy reprezentacji wyrównanej do bajtów, bo to są jednak dwie różne sprawy.