PROGRAMOWANIE I ALGORYTMY

System szesnastkowy


powrót

System szesnastkowy (inaczej heksadecymalny) jest szeroko używany w informatyce. Jego podstawą jest liczba 16 czyli do budowy liczb wykorzystujemy szesnaście cyfr. Pierwszych dziesięć jest takich samych jak w systemie dziesiętnym. Cyfra dziesięć to litera A, cyfra 11 to litera B, itd. :

$$0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F$$

Dodatkową własnością jest to, że każdą cyfrę w tym systemie możemy przedstawić za pomocą dokładnie czterech cyfry zero-jedynkowych ponieważ:

$$16 = 2^4$$

Dlatego komputery nie muszą używać dodatkowych koderów/dekoderów do ich konwersji na dwójkowy i odwrotnie. Gdyby informacje były przedstawiane w systemie dwójkowym, zapis ten byłby bardzo nieczytelny i długi, dlatego w wielu sytuacjach wykorzystuje się w tym celu system szesnastkowy:

Przykładowe zastosowanie

  •  prezentacja kolorów w języku HTML lub w programach graficznych, na przykład w trybie RGB nasycenie każdego z trzech kolorów (czerwonego, zielonego i niebieskiego) jest wyrażana za pomocą dwóch cyfr w systemie szesnastkowym:
    • FF FF FF - biały
    • 00 00 00 - czarny
    • 00 00 FF - niebieski
  • zasoby urządzeń zainstalowanych w komputerze
  • adresowanie pamięci RAM

Konwersja z dziesiętnego na szesnastkowy 

Algorytm zamiany na dziesiętny jest analogiczny jak w przypadku zamiany innych systemów liczbowych na system dziesiętny.

Dla przykładu zamieńmy liczbę (A3F2)HEX. Podstawą jest liczba $$16$$, a więc przemnażamy kolejne cyfry przez kolejne potęgi liczby $$16$$ począwszy od prawej strony:

$$(A3F2)_{HEX}=A\cdot 16^3+3\cdot 16^2+F\cdot 16^1+2\cdot 16^0=$$

$$10\cdot 4096+3\cdot 256+15\cdot 16+2\cdot 1=41970$$

Do zamiany na dziesiętny wykorzystujemy algorytm: Schemat Hornera.

Konwersja z dziesiętnego na szesnastkowy

Tu postępujemy tak samo jak w przypadku zamiany dziesiętnego systemu na inne, czyli wykonujemy operację dzielenia całkowitego przez $$16$$ i reszty z dzielenia przez $$16$$. W lewej kolumnie zapisujemy kolejne wyniki z dzielenia przez $$16$$, natomiast w prawej reszty z dzielenia. Pamiętajmy, że wynik spisujemy z prawej kolumny od tyłu.

 dziesiętny na szesnastkowy

Ostatecznie mamy: $$41970=(A3F2)_{HEX}$$

Konwersja z dwójkowego na szesnastkowy

Każda cyfra systemu heksadecymalnego jest reprezentowana przy użyciu czterech bitów (zer lub jedynek). Poniżej pokazane jest przyporządkowanie cyfr:

szesnastkowy a binarny

 A więc zamieniamy kolejne czwórki bitów (od prawej) na cyfry w systemie szesnastkowym. Dla przykładu zamieńmy liczbę: 

$$(100\ 1010\ 0000\ 1101\ 0011)_2=(4A0D3)_{HEX}$$

Zamiana na dwójkowy

Tu postępujemy podobnie jak w powyższym podpunkcie. Każdą cyfrę systemu szesnastkowego zamieniamy na cztery bity systemu dwójkowego:

$$(27F9)_{HEX}=(10\ 0111\ 1111\ 1001)_2$$

Cyfry wiodące opuszczamy.