Dziesiętny na szesnastkowy i odwrotnie

Wojciech Parys
Wojtek1150.
Published in
3 min readJun 13, 2013

Aby zamienić liczbę z systemu szesnastkowego (hexadecymalnego) na dziesiętny (decymalny) i odwrotnie, należy najpierw przypomnieć sobie jak są tworzone liczby w tych systemach — jaka liczba jest ich podstawą.

Podstawą w systemie szesnastkowym jest liczba 16 a w systemie dziesiętnym liczba 10.

[text_divider margin_top=0 margin_bottom=0 font_size=20 font_weight=normal color=#1451D9] Zamiana z szesnastkowego na dziesiętny [/text_divider]

Aby zamienić liczbę zapisaną w systemie szesnastkowym na liczbę w systemie dziesiętnym należy skorzystać ze wzoru:

hextodec

Najlepszy będzie przykład, więc załóżmy, że chcemy zamienić liczbę 9a0b na liczbę w systemie dziesiętnym.

Wykorzystujemy powyższy wzór i podstawiamy w miejsce x’ów kolejne znaki. Zamiast n — potęgę — wstawiamy kolejną potęgę liczby od prawej strony ( zaczynając od zera).

W tym przykładzie od 0 do 4. Powinno to wyglądać tak:

hextodec2

Należy to teraz obliczyć, może to wydawać się skomplikowane, jednak w rzeczywistości jest to bardzo proste. Kilka kolejnych potęg liczby 16 to: 1, 16, 256, 4096, 65536, itd. Dalej są zbyt duże liczby, więc do obliczeń przyda się kalkulator.

Obliczamy kolejne potęgi i podstawiamy do naszego działania. Po obliczeniach mamy:

hextodec3

Usuńmy jeszcze niepotrzebne zera z działania:

hextodec4

Jest już trochę mniej do liczenia, jednak wciąż zostają nam literki, których nie chcemy liczyć. Zamieniamy zatem litery na liczby zgodnie z zapisem szesnastkowym, czyli kolejno:

0–0, 1–1, 2–2, 3–3, … , 8–8, 9–9, A — 10, B — 11, C — 12, D — 13, E — 14, F — 15 — łącznie 16 znaków

Po zamianie otrzymujemy:

hextodec5

Teraz obliczamy, czyli: 36864 + 2560 + 11 = 39435

I gotowe

[text_divider margin_top=0 margin_bottom=0 font_size=20 font_weight=normal color=#1451D9] Zamiana z szesnastkowego na dziesiętny [/text_divider]

W drugą stronę jest to bardziej skomplikowane niż w systemie dwójkowym. Przydadzą się nam teraz kolejne potęgi liczby 16, które wcześniej zapisaliśmy, czyli: 1, 16, 256, 4096, 65536.

Teraz ważne jest to, jaką liczbę będziemy zamieniać. Weźmy tą z poprzedniego przykładu — 39435

Wybieramy sobie największą z potęg liczby 16, które mogą być blisko. 16 do 4 to 65536, a to więcej niż 39435, więc bierzemy niższą. 16 do 3 będzie odpowiednie ( 4096 ).

Kolejnym krokiem będzie dzielenie, podobnie jak w zapisie binarnym. Bierzemy tą naszą liczbę i dzielimy przez potęgę, czyli

39435 : 4096

zapisujemy wynik ( 9 ), oraz resztę z dzielenia ( 2571 ).

Następnie bierzemy resztę i dzielimy ja przez niższą potęgę, czyli 256:

2571 : 256

Zapisujemy wynik (10) oraz resztę (11). Powtarzamy, do potęgi 0. Całość wygląda tak:

hextodec6

Po obliczeniach odczytujemy wyniki od góry do dołu, czyli 9, 10, 0, 11.

Zamieniamy liczby na ich szesnastkowe odpowiedniki i otrzymujemy wynik końcowy: 9a0b. I gotowe

--

--