Převody číselných soustav

1) Převod z libovolné soustavy do desítkové

Číslo v soustavě se základem Z převedeme na desítkové tak, že sečteme součin každé cifry a odpovídající mocniny základu – dosadíme do vzorce z minulé lekce:

\begin{aligned}
\quad
(\textcolor{red}{3}\textcolor{blue}{A}\textcolor{green}{5})_{\textcolor{violet}{16}}
& =
\overbrace{(\textcolor{red}{3}\,\textcolor{orange}{00})_{\textcolor{violet}{16}}}^{\textcolor{orange}{2~nuly}~\Rightarrow ~\textcolor{violet}{16}^{\textcolor{orange}{2}}}
\;+\;
\overbrace{(\textcolor{blue}{A}\,\textcolor{orange}{0})_{\textcolor{violet}{16}}}^{\textcolor{orange}{1~nula}~\Rightarrow ~\textcolor{violet}{16}^{\textcolor{orange}{1}}}
\;+\;
\overbrace{(\textcolor{green}{5})_{\textcolor{violet}{16}}}^{\textcolor{orange}{0~nul}~\Rightarrow ~\textcolor{violet}{16}^{\textcolor{orange}{0}}}
\\
&= \textcolor{red}{3}\cdot \textcolor{violet}{16}^{\textcolor{orange}{2}}
  + \textcolor{blue}{10}\cdot \textcolor{violet}{16}^{\textcolor{orange}{1}}
  + \textcolor{green}{5}\cdot \textcolor{violet}{16}^{\textcolor{orange}{0}}
\\
&= \textcolor{red}{3}\cdot 256 + \textcolor{blue}{10}\cdot 16 + \textcolor{green}{5} \cdot 1
\\
& = (933)_{10}
\end{aligned}

Také lze postupovat po číslicích zleva doprava a střídavě násobit základem a sčítat:

\begin{aligned}
\quad
(\textcolor{red}{3}\textcolor{blue}{A}\textcolor{green}{5})_{\textcolor{violet}{16}}
&= ((\textcolor{red}{3}\cdot 16) + \textcolor{blue}{10})\cdot 16 + \textcolor{green}{5} \\
&= (48 + \textcolor{blue}{10})\cdot 16 + \textcolor{green}{5} \\
&= 58\cdot 16 + \textcolor{green}{5} \\
&= 928 + \textcolor{green}{5} \\
& = (933)_{10}
\end{aligned}

Tento alternativní postup se používá například při programování převodu textové podoby čísla na jeho hodnotu.

Interaktivní cvičení

Číslo v základu převeď do desítkové soustavy Správně: 0

2) Převod z desítkové do libovolného základu

Použijeme opakované dělení základem Z se zbytkem a poté zbytky „sesbíráme“ od konce (v opačném pořadí).
Jedná se vlastně o opačný postup k alternativnímu převodu do desítkové soustavy.

\begin{gathered}
933_{10}~\to~(?)_{16} 
\\[1.5em]
\begin{aligned}
933 \div 16 &= 58 &\text{ zbytek } &5\\
58 \div 16 &= 3 &\text{ zbytek } &10 &(A)\\
3 \div 16 &= 0 &\text{ zbytek } &3\\
\end{aligned}
\\[3em]
\Rightarrow (3A5)_{16}
\end{gathered}

Interaktivní cvičení:

Převeď do základu Správně: 0

3) Převod dvou libovolných základů

Pro převod mezi dvěma různými libovolnými základy je nejsnazší použít postupně oba předchozí postupy:

  1. nejdřív do desítkové,
  2. pak z desítkové do cílové
\begin{gathered}
(110101)_2 \to (?)_{7} \\[1.5em]

\quad\text{Krok 1: }\\
(110101)_2 =(53)_{10}
\\[1.5em]

\quad\text{Krok 2: }\\
(53)_{10} =(104)_{7}
\end{gathered}

4) Převody mezi soustavami se základy mocnin 2 (např. 8 ↔ 2 ↔ 16)

Pokud jsou oba základy 4, 8, nebo 16, lze snadno převádět „blokově“ z hlavy přes dvojkovou soustavu.
Stačí si v hlavě „zažít“ převod maximálně čtyřciferných dvojkových čísel do těchto základů – buď naučením tabulky zpaměti nebo dělením na součet číslic 8,4,2,1.

\text{Př. 16}\to\text{2:}\\C_{16}=12_{10}=1\cdot8+1\cdot4+0\cdot2+0\cdot1=1100_2



\text{Př. 2}\to\text{16:}\\[1em]
\begin{gathered}
\def\arraystretch{1.5}
   \begin{array}{ccccc}
               & 1 & 0 & 1 & 0 \\
  \cdot & 8 & 4 & 2 & 1 \\ \hline
               & 8 & 0 & 2 & 0 \\
\end{array}
\\[1.5em]
8 + 0 + 2 + 0 = 10_{10} = A_{16}
\end{gathered}




Postupujeme následovně:

  1. Každou cifru samostatně převedeme do dvojkové soustavy.
  2. Vzniklé dvojkové skupiny spojíme.
  3. Spojené dvojkové číslo rozsekáme od konce na skupiny po log_2(Z) podle základu cílové soustavy.
  4. Každou skupinu převedeme samostatně na cifru v cílové soustavě.

Ukažme si to na příkladu (\textcolor{red}{5}\textcolor{green}{7}\textcolor{blue}{2})_8 \to (?)_{16}:

Krok 1) Převedeme cifry do dvojkové soustavy. Protože 8=2^3, bude mít každá osmičková cifra ve dvojkové soustavě tři číslice (bity).

\textcolor{red}{\overbrace{101}^{5}}\,\textcolor{green}{\overbrace{111}^{7}}\,\textcolor{blue}{\overbrace{010}^{2}}




Krok 2) Skupiny spojíme. Tím dostaneme číslo ve dvojkové soustavě.

(\textcolor{red}{101}\textcolor{green}{111}\textcolor{blue}{010})_2




Krok 3) Chceme číslo v šestnáctkové soustavě. Protože 16=2^4, bude mít každá šestnáctková cifra ve dvojkové soustavě čtyři číslice (bity) – rozsekáme číslo od konce po čtveřicích. Pokud nám chybí číslice, doplníme zleva nuly (v příkladu černou barvou).

000\textcolor{red}{1}\,|\,\textcolor{red}{01}\textcolor{green}{11}\,|\,\textcolor{green}{1}\textcolor{blue}{010}




Krok 4) Každou čtveřici převedeme na šestnáctkovou číslici.

\overbrace{000\textcolor{red}{1}}^{1}\,|\,\overbrace{\textcolor{red}{01}\textcolor{green}{11}}^{7}\,|\,\overbrace{\textcolor{green}{1}\textcolor{blue}{010}}^{10}=(17A)_{16}

Interaktivní cvičení:

Převeď číslo ze základu do základu Správně: 0