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. :

{tex}0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F{/tex}

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ż:

{tex}16 = 2^4{/tex}

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 {tex}16{/tex}, a więc przemnażamy kolejne cyfry przez kolejne potęgi liczby {tex}16{/tex} począwszy od prawej strony:

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

{tex}10\cdot 4096+3\cdot 256+15\cdot 16+2\cdot 1=41970{/tex}

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 {tex}16{/tex} i reszty z dzielenia przez {tex}16{/tex}. W lewej kolumnie zapisujemy kolejne wyniki z dzielenia przez {tex}16{/tex}, natomiast w prawej reszty z dzielenia. Pamiętajmy, że wynik spisujemy z prawej kolumny od tyłu.

 dziesiętny na szesnastkowy

 

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

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ę: 

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

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:

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

Cyfry wiodące opuszczamy.