Grupowanie bitów po cztery i po trzy – zamiana między podstawami 2, 8 i 16 bez dzielenia, kierunek grupowania od prawej i uzupełnianie zerami z lewej.
Między systemem binarnym a szesnastkowym istnieje skrót, którego nie ma między binarnym a dziesiętnym. Ponieważ 16 to 2 do potęgi 4, każda cyfra szesnastkowa odpowiada dokładnie czterem bitom. Konwersja sprowadza się więc do grupowania.
Idziemy od prawej strony, tniemy ciąg bitów na czwórki i każdą zamieniamy osobno na jedną cyfrę; w drugą stronę każdą cyfrę rozpisujemy z powrotem na cztery bity. Z ósemkowym jest identycznie, tylko grupy mają po trzy bity, bo 8 to 2 do potęgi 3.
Cztery zasady na każde zadanie z tego tematu:
Zamianę z systemu dziesiętnego i na dziesiętny – gdzie grupowanie nie działa – opisuje hasło zamiana liczb między systemami.
Zamieniamy 110101110 na szesnastkowy. Cięcie od prawej daje 1 1010 1110, więc niepełną grupę uzupełniamy zerami z lewej: 0001 1010 1110. Czwórki czytamy osobno – 1, A, E – czyli 1AE. Ta sama liczba po trzy bity to 110 101 110, czyli 656 ósemkowo. Kontrola: 1AE to 256 + 160 + 14, a 656 to 384 + 40 + 6 – oba razy 430.
W drugą stronę – szesnastkowy na dwójkowy. Rozpisujemy cyfra po cyfrze, zawsze na pełne cztery bity: C8 to 1100 i 1000, czyli 11001000. Zera wiodące wewnątrz zapisu są konieczne – 3A5 to 0011 1010 0101, a nie 11 1010 101. Dopiero na samym początku liczby wolno je pominąć, więc 3A5₁₆ to 1110100101 (dziesiętnie 933).
Dlaczego dwie cyfry szesnastkowe to jeden bajt. Bajt ma osiem bitów, a osiem to dwa razy cztery – stąd każdy bajt zapisuje się dokładnie dwiema cyframi, od 00 do FF, czyli od 0 do 255. To najczęstszy powód, dla którego używa się szesnastkowego: para znaków zamiast ośmiu zer i jedynek. Czym jest bajt, wyjaśnia hasło jednostki informacji.
Uogólnienie: to nie jest sztuczka dla dwójki. Grupowanie działa dla każdej pary podstaw, w której jedna jest potęgą drugiej, a wykładnik podaje rozmiar grupy. Ponieważ 4 = 2², dwa bity dają jedną cyfrę czwórkową (11 01 10 to 312₄); ponieważ 16 = 4², dwie cyfry czwórkowe od prawej dają jedną cyfrę szesnastkową. Tak samo działa para podstaw 3 i 9.
Stąd praktyczna użyteczność szesnastkowego: kolory, gdzie składowa to jeden bajt, czyli dwa znaki – kolor i rozmiar obrazu; numery znaków – kodowanie znaków; adresy pamięci i maski bitowe.
| Dane wejściowe | Wartość |
|---|---|
| Liczba w systemie dwójkowym | 110101110 |
| Cel 1: szesnastkowy | 16 = 2⁴, więc grupy po 4 bity |
| Cel 2: ósemkowy | 8 = 2³, więc grupy po 3 bity |
| Krok | Co robimy | Zapis | Wynik |
|---|---|---|---|
| 1 | tniemy od prawej po cztery bity | 1 1010 1110 | pierwsza grupa ma jeden bit |
| 2 | uzupełniamy ją zerami z lewej | 0001 1010 1110 | wartość bez zmian |
| 3 | czytamy czwórki osobno | 0001 → 1, 1010 → A, 1110 → E | 1AE szesnastkowo |
| 4 | tę samą liczbę tniemy po trzy bity | 110 101 110 | grupy od razu pełne |
| 5 | czytamy trójki osobno | 110 → 6, 101 → 5, 110 → 6 | 656 ósemkowo |
| 6 | kontrola przez dziesiętny | 256 + 160 + 14 oraz 384 + 40 + 6 | oba zapisy dają 430 |
| Pułapka | cięcie od lewej, zera z prawej | 1101 0111 0000 | D70, czyli 3440 – osiem razy za dużo |
| Bity | Cyfra | Bity | Cyfra |
|---|---|---|---|
| 0000 | 0 | 1000 | 8 |
| 0001 | 1 | 1001 | 9 |
| 0010 | 2 | 1010 | A |
| 0011 | 3 | 1011 | B |
| 0100 | 4 | 1100 | C |
| 0101 | 5 | 1101 | D |
| 0110 | 6 | 1110 | E |
| 0111 | 7 | 1111 | F |
| Cecha | Dwójkowy | Ósemkowy | Szesnastkowy |
|---|---|---|---|
| Podstawa | 2 | 8 | 16 |
| Podstawa jako potęga dwójki | 2¹ | 2³ | 2⁴ |
| Ile bitów niesie jedna cyfra | 1 | 3 | 4 |
| Rozmiar grupy bitów | grupy zbędne | po 3 bity | po 4 bity |
| Największa cyfra | 1 | 7 | F |
| Ile cyfr zajmuje bajt | 8 | 3 (z zerem wiodącym) | 2 |
| Liczba 430 | 110101110 | 656 | 1AE |
| Liczba 255 | 11111111 | 377 | FF |
| Gdzie się spotyka | maski bitowe | uprawnienia plików w Linuksie | kolory, adresy, kody znaków |
| Nazwa angielska | binary | octal | hexadecimal |
Cięcie od lewej zamiast od prawej. Zapis 110101110 podzielony od lewej daje 1101, 0111 i osamotnione 0, więc uczeń dopisuje zera z prawej i odczytuje D70. To 3440, a poprawny wynik to 430 – liczba urosła osiem razy, bo z prawej doszły trzy zera. Grupy mają sens tylko wtedy, gdy najmłodsza kończy się na pozycji jedności: pierwsze cięcie robimy przy prawym końcu, niepełna grupa zostaje z lewej.
Zera wiodące pominięte wewnątrz zapisu. Przy rozwijaniu szesnastkowego na bity każda cyfra musi dać pełne cztery bity: 3A5 to 0011 1010 0101, a nie 11 1010 101. Zjedzenie dwóch zer przy cyfrze 3 zmienia liczbę nie do poznania. Skrócić wolno dopiero na początku gotowego zapisu.
Litera potraktowana jak mnożenie albo jak dwie cyfry. C8 to nie „C razy 8" i nie „12 i 8 obok siebie" – C jest tu zwykłą cyfrą o wartości 12, a rozwinięcie daje 1100 1000, czyli 200. Odwrotna wersja błędu jest równie kosztowna: uczeń zapisuje grupę 1100 jako 12 zamiast jako C i zapis robi się o cyfrę dłuższy.
Pomylony rozmiar grupy. Trójki użyte tam, gdzie miały być czwórki, dają zapis wyglądający poprawnie, więc błąd przechodzi niezauważony. Kontrola: cyfra większa od 7 wyklucza zapis ósemkowy. Zapamiętaj wykładnik, nie rozmiar: 8 = 2³ i 16 = 2⁴.
Grupowanie stosowane do podstawy, która nie jest potęgą. Dziesiątka nie jest potęgą dwójki, więc cięcie zapisu na kawałki daje bzdurę. Nie da się też jednym cięciem przejść z ósemkowego na szesnastkowy – 16 nie jest potęgą 8, trzeba najpierw rozpisać cyfry na trójki bitów.
Trzy liczby, każda w swoim systemie:
| Etykieta | Zapis | System |
|---|---|---|
| A | 10111011 | dwójkowy |
| B | 3A5 | szesnastkowy |
| C | 753 | ósemkowy |
Uzupełnij tabelę – zapisy bez spacji i bez indeksów:
| Pytanie | Odpowiedź |
|---|---|
| Liczba A w systemie szesnastkowym | |
| Liczba A w systemie dziesiętnym | |
| Liczba B w systemie dziesiętnym | |
| Liczba B w systemie ósemkowym | |
| Liczba C w systemie szesnastkowym | |
| Liczba C w systemie dziesiętnym | |
| Ile bitów niesie jedna cyfra ósemkowa? | |
| Ile bitów ma zapis dwójkowy liczby B bez zer wiodących? |
Zapis 2D₁₆ rozwija się jednym ruchem na 0010 1101, czyli dziesiętnie . Ponieważ 16 to 4 do kwadratu, dwie cyfry czwórkowe od prawej dają jedną szesnastkową, więc 223₄ zapisuje się szesnastkowo jako .
Bo 2 do potęgi 4 daje 16, czyli dokładnie tyle, ile cyfr ma system szesnastkowy. Cztery bity mają 16 kombinacji i każda ma swój znak – dopasowanie jest idealne, bez reszty.
Identycznie, tylko grupujemy po trzy bity, bo 2 do potęgi 3 to 8. 110101110 to 110 101 110, czyli 656.
Każdą cyfrę zamień osobno na cztery bity i sklej wyniki. C8 to 1100 i 1000, czyli 11001000. Nie trzeba przechodzić przez system dziesiętny.
Nie. Dziesiątka nie jest potęgą dwójki, więc żadna stała liczba bitów nie odpowiada jednej cyfrze dziesiętnej. Tam trzeba liczyć przez potęgi albo dzielić – patrz zamiana liczb między systemami.
Tak, bo 16 to 4 do kwadratu – wykładnik 2 mówi, że jedną cyfrę szesnastkową tworzą dwie cyfry czwórkowe, liczone od prawej. 12133₄ uzupełnione z lewej do 012133 rozpada się na pary 01, 21, 33, czyli 1, 9 i 15, a to daje 19F₁₆.
Bo osiem bitów dzieli się na dwie czwórki bez reszty: od 00 (0) do FF (255). Ósemkowo tak równo nie wychodzi – osiem bitów to dwie trójki i jeden bit z wierzchu, więc bajt zajmuje trzy cyfry, od 000 do 377.
Do tego hasła nie mamy jeszcze przypisanych pojedynczych zadań. Cały spis zadań maturalnych z tego działu jest tutaj:
Zagadnienia z tego samego obszaru matury – warto je powtórzyć razem: