Konwersje systemów

Jak konwertować liczby z systemu dziesiętnego na inne systemy i odwrotnie.

Co to jest system liczbowy

Powszechnie pracujemy z systemem dziesiętnym. System ten składa się z dziesięciu cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8 i 9. System dziesiętny charakteryzuje się tym, że gdy mnożymy liczbę, na przykład 57, przez dziesięć, przechodzimy o jeden rząd wielkości wyżej - potrzebujemy jeszcze jednej cyfry do opisania tej liczby: 570.

Możemy mieć inne systemy liczbowe; taki system ósemkowy zawierałby tylko cyfry 0, …, 7. Wyrażenie 7 + 1 byłoby więc równe 10, ponieważ w systemie ósemkowym nie mamy cyfry 8. System szesnastkowy miałby cyfry 0, 1, … 14, 15. Czasami używamy liter zamiast cyfr, które są większe niż 9, więc system szesnastkowy miałby cyfry 0, …9, A, B, C, D, E, F.

Co zaskakujące, w życiu codziennym spotykamy się z innymi systemami liczbowymi. Na przykład czas - sekundy i minuty - liczymy w systemie szesnastkowym. Każdy moment dnia można zapisać jako liczbę w systemie szesnastkowym składającym się z trzech cyfr. Pierwsza cyfra oznacza godziny, druga minuty, a trzecia sekundy. Jeśli wybierzemy dwukropek do oddzielenia cyfr, otrzymamy na przykład liczbę 14:05:59. Zauważ, że jeśli dodamy jedną sekundę do tego czasu, nie otrzymamy czasu 14:05:60, ale otrzymamy czas 14:06:00 - ponieważ cyfra 60 nie jest prawidłową cyfrą systemu szesnastkowego.

Konwersja z systemu dziesiętnego na binarny

Miejmy na papierze liczbę 70. Chcemy teraz przekonwertować tę liczbę na system binarny. Zasada jest dość prosta, dzielimy liczbę, którą chcemy przekonwertować przez dwa, aż dojdziemy do zera, zapisując reszty po dzieleniu całkowitym. Jeśli chcemy przekonwertować liczbę na inny system, na przykład szesnastkowy, dzielimy przez szesnastkowy. Jeśli jest w systemie szesnastkowym, dzielimy przez sześć. W praktyce wygląda to następująco:

$$\begin{eqnarray} 70 : 2 &= 35 & \longrightarrow 0 \quad(\mbox{ reszta po dzieleniu })\\ 35 : 2 &= 17 & \longrightarrow 1\\ 17 : 2 &= 8 & \longrightarrow 1\\ 8 : 2 &= 4 & \longrightarrow 0\\ 4 : 2 &= 2 & \longrightarrow 0\\ 2 : 2 &= 1 & \longrightarrow 0\\ 1 : 2 &= 0 & \longrightarrow 1 \end{eqnarray}$$

Wynikowa liczba w systemie binarnym to reszta po dzieleniu. Ale nie bierzemy reszty od góry, tylko od dołu. Tak więc liczba 70 w systemie binarnym to 1000110.

Konwersja z systemu binarnego na dziesiętny

W odwrotnej sytuacji dokonalibyśmy konwersji w następujący sposób. Weźmy liczbę 1100010 i przekonwertujmy ją na liczbę dziesiętną. Ten kierunek jest łatwiejszy, wystarczy obliczyć tę sumę:

$$ 1100010_{10} = 1\cdot2^{6}+1\cdot2^{5}+0\cdot2^{4}+0\cdot2^{3}+0\cdot2^{2}+1\cdot2^{1}+0\cdot2^{0} $$

Każdy dodatek ma postać x · 2i, gdzie x jest cyfrą z oryginalnej liczby binarnej, a i jest zwiększana o jeden za każdym razem od prawej strony. Ponieważ konwertujemy liczbę 1100010, suma wygląda następująco:

$$ 1100010_{10} = \fbox{1}\cdot2^{6}+\fbox{1}\cdot2^{5}+\fbox{0}\cdot2^{4}+\fbox{0}\cdot2^{3}+\fbox{0}\cdot2^{2}+\fbox{1}\cdot2^{1}+\fbox{0}\cdot2^{0} $$

Liczba 1100010 ma siedem cyfr, więc potęgami dwójki będą kolejno 6, 5, …, 1, 0. Po pomnożeniu i potęgowaniu otrzymujemy wyrażenie:

$$ 1100010_{10} = 64 + 32 + 2 = 98. $$

Dlaczego to działa?

Możemy to zademonstrować na systemie dziesiętnym. Co tak naprawdę oznaczają cyfry w liczbie, takiej jak 7384? Cyfra 4 oznacza liczbę jedynek, cyfra 8 liczbę dziesiątek, cyfra 3 liczbę setek, a cyfra 7 liczbę tysięcy. Możemy więc napisać, że

$$ 7384 = 7\cdot 1000 + 3\cdot100 + 8\cdot 10 + 4\cdot 1 $$

Możemy dalej zmodyfikować to wyrażenie tak, aby nie używać liczb 100, 10 i 1, ale zawsze mieć tam jakąś potęgę dziesięciu. Ponieważ 100 = 1 i 101 = 10 itd. są poprawne, możemy napisać

$$ 7384 = 7\cdot 10^3 + 3\cdot10^2 + 8\cdot 10^1 + 4\cdot 10^0 $$

Jesteśmy w stanie opisać każdą liczbę w systemie dziesiętnym w ten sam sposób, podczas gdy poszczególne dodatki mają postać x · 10i, gdzie x jest cyfrą od 0 do 9, te cyfry to dziesięć. Wartość i jest zatem pewną dodatnią liczbą całkowitą, która określa kolejność. Jeśli i = 0, to sumator daje jednostki, jeśli i = 2, to daje setki (ponieważ 102 = 100).

Teraz spróbujmy przekonwertować liczbę 7348 z systemu dziesiętnego na... system dziesiętny. To będzie miało sens. Podzielimy liczbę 7348 przez 10:

$$\begin{eqnarray} 7348 : 10 &= 734 & \longrightarrow 8 \quad(\mbox{ reszta po dzieleniu })\\ 734 : 10 &= 73 & \longrightarrow 4\\ 73 : 10 &= 7 & \longrightarrow 3\\ 7 : 10 &= 0 & \longrightarrow 7\\ \end{eqnarray}$$

Jeśli odczytamy reszty od dołu, otrzymamy liczbę 7348 - z powrotem do pierwotnej liczby, którą próbowaliśmy przekonwertować na... ten sam system.

Jeśli chcemy opisać system binarny, robimy to dokładnie w ten sam sposób - wszystkie dodatki będą miały postać x · 2i, gdzie x jest cyfrą 0 lub 1. Wartość i ponownie daje rozkazy. Podobnie jak kolejne dzielenie przez dziesięć daje nam liczbę rzędów w liczbie w systemie dziesiętnym, kolejne dzielenie przez dwa daje nam liczbę rzędów w systemie binarnym.

Należy również pamiętać, że gdy dzielimy liczbę przez dziesięć i pytamy o resztę, reszta zawsze będzie w przedziale <0, 9>. Jeśli dzielimy liczbę przez dwa, reszta może wynosić 0 lub 1.

Konwersja do innych systemów

Poprzednia procedura konwersji z systemu dziesiętnego na binarny jest na tyle uniwersalna, że można ją zastosować do innych systemów. Jeśli chcemy przekonwertować liczbę 185 na system szesnastkowy, wystarczy podzielić ją przez 16:

$$\begin{eqnarray} 185 : 16 &= 11 &\longrightarrow 9\quad(\mbox{ reszta po dzieleniu })\\ 11 : 16 &= 0 &\longrightarrow 11 \end{eqnarray}$$

Liczba 185 w systemie szesnastkowym miałaby postać (11, 9). Litery są zwykle używane zamiast "cyfr" powyżej 9, więc 10 = A, 11 = B, 12 = C, … Możemy napisać, że liczba 185 ma postać B9 w systemie 16.

Podobnie możemy przekonwertować liczbę B9 z systemu 16 na system dziesiętny.

$$ B9_{10} = 11\cdot 16^1 + 9\cdot 16^0 = 11\cdot16+9=185 $$

Narzędzie do konwersji systemów online