Převody soustav

Jak převádět čísla z desítkové soustavy do jiných soustav a naopak jak převádět čísla z jiných soustav do desítkové.

Co je to číselná soustava

Běžně pracujeme s desítkovou soustavou. Tato soustava má deset číslic, 0, 1, 2, 3, 4, 5, 6, 7, 8 a 9. Desítková soustava se vyznačuje tím, že když nějaké číslo, například 57, vynásobíme deseti, posuneme se o jeden řád — potřebujeme o jednu číslici více na popis tohoto čísla: 570.

Můžeme mít i jiné číselné soustavy, taková osmičková soustava by obsahovala pouze číslice 0, …, 7. Výraz 7 + 1 by tak byl roven číslu 10, protože v osmičkové soustavě nemáme číslici 8. Šestnáctková sosutava by měla číslice 0, 1, … 14, 15. Někdy místo číslic, které jsou větší než 9, používáme písmena, takže šestnáctková soustava by měla číslice 0, …9, A, B, C, D, E, F.

S jinými číselnými soustavami se překvapivě setkáváme i v běžném životě. Například čas — sekundy a minuty počítáme v šedesátkové soustavě. Každý okamžik dne můžeme zapsat jako číslo v šedesátkové soustavě o třech číslicích. První číslice udává hodiny, druhá minuty, třetí sekundy. Pokud zvolíme jako oddělovač číslic dvojtečku, máme například číslo 14:05:59. Všimněte si, že když k tomuto času přičteme jednu sekundu, nezískáme čas 14:05:60, ale získáme čas 14:06:00 — protože číslice 60 není platnou číslicí šedesátkové soustavy.

Převod z desítkové do dvojkové soustavy

Nechť máme na papíře číslo 70. Toto číslo budeme nyní chtít převést do dvojkové, binární soustavy. Princip je poměrně jednoduchý, číslo, které chceme převést, dělíme neustále dvojkou, až dojdeme k nule, přičemž si zapisujeme zbytky po celočíselném dělení. Pokud chceme převést číslo do jiné soustavy, například do šestnáctkové, budeme dělit šestnáctkou. Pokud do šestkové, dělíme šestkou. Takže v praxi to bude vypadat takto:

$$\begin{eqnarray} 70 : 2 &= 35 & \longrightarrow 0 \quad(\mbox{zbytek po dělení})\\ 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}$$

Výsledné číslo ve dvojkové soustavě udávají zbytky po dělení. Nebereme ale zbytky zvrchu, ale od spodu. Takže číslo 70 v binární soustavě je 1000110.

Převod z dvojkové do desítkové soustavy

Opačně bychom převodli takto. Mějme číslo 1100010 a převeďme ho do desítkové soustavy. Tento směr je jednodušší, stačí vypočítat tento součet:

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

Každý sčítanec má tvar x · 2i, kde x je číslice z původního binárního čísla a i se zprava postupně zvětšuje vždy o jedna. Takže porotože převádíme číslo 1100010, vypadá tento součet takto:

$$ 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} $$

Číslo 1100010 má sedm číslic, takže mocniny u čísla dva budou postupně 6, 5, …, 1, 0. Po umocnění a vynásobení získáme výraz:

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

Proč tento postup funguje?

Můžeme si to předvést na desítkové soustavě. Co ve skutečnosti znamenají číslice v čísle, například v čísle 7384? Číslice 4 udává počet jednotek, číslice 8 počet desítek, číslice 3 počet stovek a číslice 7 počet tisícovek. Takže můžeme napsat, že

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

Tento výraz můžeme ještě upravit tak, abychom nepoužívali čísla 100, 10 a 1, ale abychom tam vždy měli nějakou mocninu deseti. Protože platí 100 = 1 a 101 = 10 atd., tak můžeme napsat

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

Každé číslo v desítkové soustavě jsme schopni popsat stejným způsobem, přitom jednotlivé sčítance mají tvar x · 10i, kde x je číslice od 0 do 9, těchto číslic je deset. Hodnota i je pak nějaké kladné celé číslo, které udává řád. Pokud i = 0, pak sčítanec udává jednotky, pokud i = 2, pak udává stovky (protože 102 = 100).

Zkusme si teď převést číslo 7348 z desítkové soustavy do, eh…, desítkové soustavy. Bude to mít smysl. Číslo 7348 budeme dělit 10:

$$\begin{eqnarray} 7348 : 10 &= 734 & \longrightarrow 8 \quad(\mbox{zbytek po dělení})\\ 734 : 10 &= 73 & \longrightarrow 4\\ 73 : 10 &= 7 & \longrightarrow 3\\ 7 : 10 &= 0 & \longrightarrow 7\\ \end{eqnarray}$$

Pokud přečteme zbytky od spodu, máme číslo 7348 — zpět původní číslo, které jsme se snažili převést do … stejné soustavy.

Pokud chceme popsat dvojkovou soustavu, uděláme to úplně stejně — všechny sčítance budou ve tvaru x · 2i, kde x je číslice 0 nebo 1. Hodnota i opět udává řády. Stejně, jako postupné dělení desítou nám dá počty řádů v čísle v desítkové soustavě, tak postupné dělení dvěma nám dá počty řádů ve dvojkové soustavě.

Zároveň si všimněte, že když dělíme číslo deseti a ptáme se na zbytek, tak tento zbytek bude vždy v intervalu <0, 9>. Pokud dělíme číslo dvěma, tak zbytek může být buď 0 nebo 1.

Převod do jiných soustav

Předchozí postup na převod z desítkové do binární soustavy je natolik univerzální, že lze použít i na jiné soustavy. Pokud chceme převést číslo 185 do šestnáctkové soustavy, jen dělíme 16:

$$\begin{eqnarray} 185 : 16 &= 11 &\longrightarrow 9\quad(\mbox{zbytek po dělení})\\ 11 : 16 &= 0 &\longrightarrow 11 \end{eqnarray}$$

Číslo 185 by v 16 soustavě mělo tvar (11, 9). Místo „číslic“ nad 9 se obvykle používají písmena, takže 10 = A, 11 = B, 12 = C, … Můžeme tak napsat, že číslo 185 má v 16 soustavě tvar B9.

Podobně můžeme převést číslo B9 z 16 soustavy do desítkové.

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

Online nástroj na převod soustav