Číslo z jiné soustavy převedete do desítkové tak, že každou jeho číslici vynásobíte mocninou základu podle místa, na kterém stojí, a výsledky sečtete. Místa se počítají zprava od nuly: poslední číslice se násobí `z^0 = 1`, předposlední `z^1`, další `z^2` a tak dál. Například dvojkové číslo 10100:

`\begin{aligned} 10100_{2} &= 1\cdot 2^{4} + 0\cdot 2^{3} + 1\cdot 2^{2} \\ &\phantom{=}\; + 0\cdot 2^{1} + 0\cdot 2^{0} \\[4pt] &= 16 + 4 = 20 \end{aligned}`

Opačně, z desítkové soustavy do jiné, se číslo opakovaně dělí základem se zbytkem, dokud nevyjde nula. Zbytky přečtené zdola nahoru jsou číslice výsledku. Číslo 50 ve dvojkové soustavě:

`\begin{array}{rcrl} 50 : 2 & = & 25 & \quad\text{zbytek } 0 \\ 25 : 2 & = & 12 & \quad\text{zbytek } 1 \\ 12 : 2 & = & 6 & \quad\text{zbytek } 0 \\ 6 : 2 & = & 3 & \quad\text{zbytek } 0 \\ 3 : 2 & = & 1 & \quad\text{zbytek } 1 \\ 1 : 2 & = & 0 & \quad\text{zbytek } 1 \end{array}`

Zbytky zdola nahoru dávají `50 = 110010_{2}`. Mezi dvojkovou a šestnáctkovou soustavou se nedělí vůbec: dvojkové číslo se rozdělí zprava po čtyřech číslicích a každá čtveřice se přepíše jednou šestnáctkovou číslicí (u osmičkové soustavy po třech). A mezi dvěma libovolnými soustavami, třeba z trojkové do pětkové, se jde přes desítkovou. Všechno to níže rozebereme na příkladech.

Co je číselná soustava a její základ

Běžná čísla píšeme v desítkové (dekadické) soustavě. Je poziční: hodnota číslice záleží na tom, kde stojí. Ve 352 znamená trojka tři stovky, pětka pět desítek a dvojka dvě jednotky, `352 = 3\cdot 100 + 5\cdot 10 + 2`. Každé místo má desetkrát větší hodnotu než místo vpravo od něj.

Číslo 10 je základ soustavy. Nic nebrání vzít jiný základ `z`: pak má každé místo `z`-krát větší hodnotu než místo vpravo a soustava potřebuje právě `z` číslic, od 0 do `z - 1`. Dvojková soustava má jen 0 a 1, osmičková 0 až 7. Šestnáctkové nestačí deset číslic, které známe, a tak si půjčuje písmena:

`\mathrm{A} = 10,\ \mathrm{B} = 11,\ \mathrm{C} = 12`
`\mathrm{D} = 13,\ \mathrm{E} = 14,\ \mathrm{F} = 15`

Ve dvojkové soustavě mají místa zprava hodnoty 1, 2, 4, 8, 16, 32, ... Na obrázku je číslo 50 z úvodu:

1253212416023802241212020132 + 16 + 2 = 50

Základ se píše jako dolní index: `110010_{2}`, `62_{8}`, `\mathrm{32}_{16}` a `50_{10}` je čtyřikrát totéž číslo. Bez indexu by zápis nebyl jednoznačný: `10_{2} = 2`, `10_{8} = 8` a `10_{16} = 16`. Číslo bez indexu je desítkové. V programování se místo indexu píše předpona, 0b110010 pro dvojkové a 0x32 pro šestnáctkové číslo.

soustavačíslicekde ji potkáte
dvojková (binární), základ 20, 1počítače, jeden bit
osmičková (oktalová), základ 80 až 7práva souborů v Linuxu
desítková (dekadická), základ 100 až 9všude v běžném životě
dvanáctková, základ 120 až 9, A, Btucet, 12 hodin, 12 měsíců
šestnáctková (hexadecimální), základ 160 až 9, A až Fbarvy na webu, adresy v paměti
šedesátková, základ 6060 různých znakůminuty a sekundy, úhlové stupně

Převod do desítkové soustavy

Číslo s číslicemi `a_n \dots a_2 a_1 a_0` v soustavě o základu `z` má hodnotu

`a_n\cdot z^n + \dots + a_2\cdot z^2 + a_1\cdot z + a_0`

Stačí tedy vypsat mocniny základu zprava doleva, vynásobit je číslicemi a sečíst. Číslice 0 nepřispívá ničím, takže ve dvojkové soustavě se sčítají jen hodnoty míst, kde stojí jednička.

Příklad 1

Převeďte `526_{8}` do desítkové soustavy.

`\begin{aligned} 526_{8} &= 5\cdot 8^{2} + 2\cdot 8^{1} + 6\cdot 8^{0} \\[4pt] &= 320 + 16 + 6 = 342 \end{aligned}`

Kontrola odhadem: trojmístné osmičkové číslo je nejvýš `8^3 - 1 = 511`, takže 342 je rozumná velikost.

Příklad 2

Převeďte `\mathrm{F1AE}_{16}` do desítkové soustavy. Písmena nejdřív nahradíme hodnotami, F = 15, A = 10, E = 14:

`\begin{aligned} \mathrm{F1AE}_{16} &= 15\cdot 16^{3} + 1\cdot 16^{2} \\ &\phantom{=}\; + 10\cdot 16^{1} + 14\cdot 16^{0} \\[4pt] &= 61440 + 256 + 160 + 14 = 61870 \end{aligned}`

Rychlejší cesta bez velkých mocnin

U delších čísel se vyplatí Hornerovo schéma: jde se zleva, dosavadní výsledek se vynásobí základem a přičte se další číslice. Mocniny se tak vůbec nepočítají. Pro `\mathrm{F1AE}_{16}`:

`\begin{aligned} \mathrm{F} &= 15 \\ 15\cdot 16 + 1 &= 241 \\ 241\cdot 16 + 10 &= 3866 \\ 3866\cdot 16 + 14 &= 61870 \end{aligned}`

Vyšlo totéž, 61 870. Ve dvojkové soustavě je to ještě jednodušší, jen se zdvojnásobuje a přičítá 0 nebo 1. Pro 10100 z úvodu: 1, 2, 5, 10, 20. Hotové převody s rozepsaným postupem ukáže kalkulačka ze dvojkové do desítkové a ze šestnáctkové do desítkové soustavy.

Převod z desítkové soustavy

Číslo dělíme základem cílové soustavy se zbytkem. Podíl dělíme znovu a tak dál, dokud podíl nevyjde 0. Zbytky čteme od posledního k prvnímu, tedy zdola nahoru.

Proč obráceně? První zbytek je to, co zbude po rozdělení čísla na celé skupiny po `z`, a to jsou jednotky, tedy poslední číslice. Druhý zbytek jsou skupiny po `z`, které nedají celou skupinu po `z^2`, to je předposlední číslice. Číslice tedy vznikají zprava doleva, a zapisujeme je proto zdola nahoru.

Příklad 3

Převeďte 342 do osmičkové soustavy.

`\begin{array}{rcrl} 342 : 8 & = & 42 & \quad\text{zbytek } 6 \\ 42 : 8 & = & 5 & \quad\text{zbytek } 2 \\ 5 : 8 & = & 0 & \quad\text{zbytek } 5 \end{array}`

Zdola nahoru: `342 = 526_{8}`. Zkouška je příklad 1 o kus výš.

Příklad 4

Převeďte 2748 do šestnáctkové soustavy.

`\begin{array}{rcrl} 2748 : 16 & = & 171 & \quad\text{zbytek } 12\ \to\ \mathrm{C} \\ 171 : 16 & = & 10 & \quad\text{zbytek } 11\ \to\ \mathrm{B} \\ 10 : 16 & = & 0 & \quad\text{zbytek } 10\ \to\ \mathrm{A} \end{array}`

Zbytky 10, 11 a 12 se musí zapsat jako jedna číslice, tedy A, B a C. Zdola nahoru: `2748 = \mathrm{ABC}_{16}`. Zkouška:

`\begin{aligned} &10\cdot 256 + 11\cdot 16 + 12 \\ &= 2560 + 176 + 12 = 2748 \end{aligned}`

Totéž dělení krok za krokem udělá kalkulačka z desítkové do dvojkové, do osmičkové i do šestnáctkové soustavy.

Druhý způsob pro dvojkovou soustavu: odečítání mocnin

U menších čísel se do dvojkové soustavy dá převádět i z hlavy. Vypíšeme mocniny dvojky, 1, 2, 4, 8, 16, 32, 64, 128, 256, ..., a od čísla odečítáme vždy tu největší, která se ještě vejde. Kde jsme mocninu použili, píšeme 1, kde ne, píšeme 0.

Příklad 5

Převeďte 200 do dvojkové soustavy.

`\begin{aligned} 200 - 128 &= 72 \\ 72 - 64 &= 8 \\ 8 - 8 &= 0 \end{aligned}`

Použili jsme 128, 64 a 8. Na místa od 128 dolů napíšeme jedničky a nuly:

`\begin{array}{cccccccc} 128 & 64 & 32 & 16 & 8 & 4 & 2 & 1 \\ \hline 1 & 1 & 0 & 0 & 1 & 0 & 0 & 0 \end{array}`

Výsledek `200 = 11001000_{2}`. Nuly na konci se nesmí vynechat: každé místo od nejvyšší použité mocniny až po jednotky dostane svou číslici.

Převod mezi dvojkovou a šestnáctkovou soustavou

Protože `16 = 2^4`, odpovídá jedna šestnáctková číslice přesně čtyřem dvojkovým. Proto se mezi těmito soustavami převádí bez dělení: dvojkové číslo rozdělíme zprava po čtveřicích, poslední skupinu vlevo doplníme nulami a každou čtveřici přepíšeme podle tabulky. Pro osmičkovou soustavu platí totéž po trojicích, protože `8 = 2^3`.

desítkovádvojkováosmičkovášestnáctková
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

Příklad 6

Převeďte `110101101_{2}` do šestnáctkové a do osmičkové soustavy.

000111010A1101D110610151015

Po čtveřicích zprava: 1101 je D, 1010 je A a zbylá jednička (doplněná na 0001) je 1. Výsledek `\mathrm{1AD}_{16}`. Po trojicích: 101, 101, 110, tedy 5, 5, 6, a výsledek čtený zleva `655_{8}`.

Zkouška přes desítkovou soustavu: `1\cdot 256 + 10\cdot 16 + 13 = 429` a `6\cdot 64 + 5\cdot 8 + 5 = 429`.

Opačný směr je stejně rychlý: každou šestnáctkovou číslici rozepíšeme na čtyři dvojkové. `\mathrm{2F}_{16}` je 0010 1111, a po vynechání nul na začátku `101111_{2}`, což je 47. Na delších číslech si to vyzkoušíte v kalkulačce převod mezi dvojkovou a šestnáctkovou soustavou; tabulku jako výše, ale až do 255, najdete v převodní tabulce číselných soustav.

Odtud také pochází zvyk psát bajty šestnáctkově. Bajt má osm bitů, to jsou právě dvě šestnáctkové číslice, od 00 do FF, tedy od 0 do 255.

Převod mezi libovolnými soustavami

Když ani jedna ze soustav není desítková, převádíme nadvakrát: nejdřív do desítkové soustavy rozvojem podle mocnin, pak z desítkové dělením se zbytkem.

Příklad 7

Převeďte `212_{3}` do pětkové soustavy.

Do desítkové: `2\cdot 9 + 1\cdot 3 + 2 = 23`. Z desítkové do pětkové:

`\begin{array}{rcrl} 23 : 5 & = & 4 & \quad\text{zbytek } 3 \\ 4 : 5 & = & 0 & \quad\text{zbytek } 4 \end{array}`

Výsledek `212_{3} = 43_{5}`. Zkouška: `4\cdot 5 + 3 = 23`.

Zkratka po skupinách funguje vždy, když je jeden základ mocninou druhého: 2 a 4, 2 a 8, 2 a 16, 3 a 9. Protože `9 = 3^2`, stačí `212_{3}` rozdělit zprava po dvou, 02 a 12, a dostaneme číslice 2 a 5, tedy `25_{9}`. Zkouška: `2\cdot 9 + 5 = 23`. Pro všechno ostatní je tu kalkulačka převody mezi libovolnými soustavami od dvojkové po šestatřicítkovou.

Desetinná čísla ve dvojkové soustavě

Celá část se převádí jako dosud. Desetinnou část naopak násobíme základem: celá část součinu je další číslice za desetinnou čárkou a dál násobíme jen to, co zbylo za čárkou. Číslice tentokrát čteme shora dolů.

Příklad 8

Převeďte 0,625 do dvojkové soustavy.

`\begin{aligned} 0{,}625 \cdot 2 &= 1{,}25 &&\to 1 \\ 0{,}25 \cdot 2 &= 0{,}5 &&\to 0 \\ 0{,}5 \cdot 2 &= 1 &&\to 1 \end{aligned}`

Výsledek `0{,}625 = 0{,}101_{2}`. Zkouška: místa za čárkou mají hodnoty `\frac{1}{2}`, `\frac{1}{4}`, `\frac{1}{8}`, ..., a `\frac{1}{2} + \frac{1}{8} = 0{,}625`.

Ne vždy to skončí. Číslo 0,1 vypadá v desítkové soustavě nevinně, ale ve dvojkové je periodické:

`\begin{aligned} 0{,}1 \cdot 2 &= 0{,}2 &&\to 0 \\ 0{,}2 \cdot 2 &= 0{,}4 &&\to 0 \\ 0{,}4 \cdot 2 &= 0{,}8 &&\to 0 \\ 0{,}8 \cdot 2 &= 1{,}6 &&\to 1 \\ 0{,}6 \cdot 2 &= 1{,}2 &&\to 1 \\ 0{,}2 \cdot 2 &= 0{,}4 &&\to 0 \\ 0{,}4 \cdot 2 &= 0{,}8 &&\to 0 \\ 0{,}8 \cdot 2 &= 1{,}6 &&\to 1 \\ 0{,}6 \cdot 2 &= 1{,}2 &&\to 1 \\ &\;\;\vdots \end{aligned}`

Od druhého řádku se 0,2 vrací, a s ním dokola čtveřice 0011: `0{,}1 = 0{,}0\overline{0011}_{2}`. Počítač proto nemůže 0,1 uložit přesně a `0{,}1 + 0{,}2` mu nevyjde přesně 0,3. Převodníky na webu desetinná čísla zvládají a periodu poznají.

K čemu se jednotlivé soustavy používají

Desítková soustava se prosadila nejspíš proto, že máme deset prstů. Počítání na prstech je nejstarší kalkulačka.

Dvojková soustava je jazyk počítačů. Obvod snadno rozliší dva stavy, proud teče nebo neteče, a ty se zapíšou jako 1 a 0. Jedna dvojková číslice je bit, osm bitů je bajt. Dvojkovou soustavu popsal matematik Gottfried Wilhelm Leibniz už roku 1703; v polovině 19. století na ni navázal George Boole logikou, ve které platí jen „pravda“ a „nepravda“, a právě na ní stojí obvody v počítačích.

Šestnáctková soustava je zkratka za dvojkovou. Čísla v počítači jsou dlouhé řady jedniček a nul a šestnáctkově se zapíšou čtyřikrát kratší. Potkáte ji v barvách na webu: #2E8B57 jsou tři bajty, červená `\mathrm{2E}_{16} = 46`, zelená `\mathrm{8B}_{16} = 139` a modrá `57_{16} = 87`, dohromady mořská zeleň. Šestnáctkově se píší i adresy v paměti a síťové MAC adresy.

Osmičková soustava je podobná zkratka po trojicích bitů. Dnes ji uvidíte hlavně v právech souborů v Linuxu: chmod 754 znamená `7 = 111_{2}`, `5 = 101_{2}` a `4 = 100_{2}`, tedy vlastník smí číst, zapisovat i spouštět, skupina číst a spouštět a ostatní jen číst.

Šedesátková soustava pochází od Sumerů a Babyloňanů, kteří ji používali před více než čtyřmi tisíci lety. Šedesátka má dvanáct dělitelů (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60), takže se dobře dělí na poloviny, třetiny, čtvrtiny i pětiny. Zbyla nám v hodinách, které mají 60 minut po 60 sekundách, a v úhlech, kde má stupeň 60 minut a minuta 60 vteřin.

Dvanáctková soustava se jako soustava nepoužívá, ale její stopy jsou všude: tucet je 12 kusů, veletucet `12^2 = 144`, den má dvakrát 12 hodin a rok 12 měsíců. Dvanáctka se dělí dvěma, třemi, čtyřmi i šesti, a proto se v ní obchodníkům dobře počítalo.

Časté chyby

  • Zbytky čtené shora dolů. Kdo u čísla 50 z úvodu přečte zbytky v pořadí, v jakém vznikly, dostane `010011_{2}`, a to je 19. Proto je dobré každý výsledek převést zpátky.
  • Mocniny od jedničky místo od nuly. Poslední číslice se násobí `z^0 = 1`, ne `z^1`. Kdo začne od jedničky, dostane `z`-krát víc: z `10100_{2}` by místo 20 vyšlo 40. Pomůže odhad: číslo s `k` číslicemi v soustavě o základu `z` je menší než `z^k`.
  • Dvojmístný zbytek. Zbytek 12 při dělení šestnácti je jedna číslice C, ne dvě číslice 1 a 2. Kdo by 2748 zapsal jako „10 11 12“, má nesmysl.
  • Skupiny od levého kraje. Čtveřice a trojice se odpočítávají zprava, od jednotek. `110101101_{2}` rozdělené zleva (1101 0110 1) dá úplně jiné číslo než správné 1 1010 1101.
  • Číslice, která v soustavě není. V osmičkové soustavě nejsou číslice 8 a 9, ve dvojkové nic kromě 0 a 1. Zápis jako `128_{8}` neexistuje. Největší číslice soustavy je vždy o jedna menší než základ.
  • Vynechané nuly. U odečítání mocnin dostane číslici každé místo, i to, kde se mocnina nepoužila. 200 není `11001_{2}`, ale `11001000_{2}`.

Příklady k procvičení

1. Převeďte `101101_{2}` do desítkové soustavy.

2. Převeďte číslo 100 do dvojkové soustavy.

3. Převeďte `\mathrm{3AF}_{16}` do desítkové soustavy.

4. Převeďte `101111100111_{2}` do šestnáctkové a do osmičkové soustavy.

5. Převeďte `1202_{3}` do pětkové soustavy.

6. Webová stránka má oranžovou barvu zapsanou jako #FFA500. Dvojice šestnáctkových číslic jsou postupně červená, zelená a modrá složka. Jaké jsou v desítkové soustavě? A kolik různých hodnot může jedna složka mít?

Další převody tam i zpátky s okamžitou kontrolou najdete v procvičování převodů mezi dvojkovou a desítkovou soustavou.

Kam dál