Dvojková soustava

Jako lidé používáme k vyjadřování čísel tzv. desítkovou soustavu. To znamená, že k vyjádření používáme celkem 10 číslic (0 - 9) a všechna ostatní čísla vyjadřujeme právě pomocí těchto číslic a jejich kombinací.

Poznámka: Všimněme si rozdílu mezi pojmy číslo a číslice. Zatímco číslo vyjadřuje matematický počet, číslice je znak, pomocí kterého čísla zapisujeme. Zatímco čísel je nekonečně mnoho, číslic je pouze 10 (ve standardní desítkové soustavě).

V zápise libovolného čísla potom záleží na tom, na jaké pozici se daná číslice nachází. Pozice určuje význam. Například v čísle 102 se číslice 1 nachází na pozici stovek, 0 se nachází na pozici desítek a 2 se nachází na pozici jednotek. Mluvíme proto o takzvané poziční soustavě. Desítková poziční soustava je tedy způsob zápisu čísel, který každý velmi dobře zná už z první třídy.

Podíváme-li se ale blíže na princip desítkové poziční soustavy, zjistíme, že to, že se používá právě 10 číslic, není nic obzvláště podstatného. Poziční soustava by mohla fungovat úplně stejně dobře, kdybychom číslic měli například pouze 8 (0 - 7), nebo třeba 4 (0 - 3). Nejmenší počet číslic, které je možné použít v nějaké poziční soustavě jsou přitom pouze dvě, 0 a 1. V takovém případě potom mluvíme o dvojkové poziční soustavě, nebo prostě o dvojkové soustavě. Někdy se používá i anglický (původně asi latinský) pojem binární soustava.

Výhody dvojkové soustavy v počítačovém zpracování

Z pohledu vývoje počítačů má dvojková soustava mnoho výhod oproti jiným soustavám. Hlavní její předností je, že číslice dvojkové soustavy lze mnohem lépe reprezentovat, než například číslice desítkové soustavy. Zatímco ve dvojkové soustavě nám stačí reprezentovat dvě číslice (například: 0 - není napětí, 1 - je napětí), v případě desítkové soustavy bychom museli reprezentovat každou číslici o mnoho složitěji. Už by nám nestačila pouze informace je/není napětí, ale museli bychom rozlišovat i různé úrovně napětí. Například bychom museli stanovit takovouto převodní tabulku mezi napětími a číslicemi:

číslice napětí
0 0.2 V
1 0.4 V
3 0.6 V
4 0.8 V
5 1.0 V
6 1.2 V
7 1.4 V
8 1.6 V
9 1.8 V

Udržet přitom dvě úroně napětí (je/není napětí) je o mnoho snažší, než udržovat deset úrovní. Je to také mnohem méně náchylné k chybám.

A právě proto se v počítačích používá soustava dvojková a nikoliv třeba desítková. Základní jednotkou pro ukládání informací se tak stal jeden bit, což je zkratka z anglického binary digit. Bit tedy znamená "číslice ve dvojkové soustavě".

Počítání ve dvojkové soustavě

Nebudeme předvádět všechny aritmetické operace (jako je sčítání, odčítání, násobení a dělení) ve dvojkové soustavě, ale můžeme aspoň nastínit, jak se ve dvojkové soustavě počítá. Následující tabulka ukazuje, jak se ve dvojkové soustavě zapíše prvních 16 čísel:

číslo v desítkové soustavě číslo ve dvojkové soustavě
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111

Převody mezi dvojkovou a desítkovou soustavou

Ukázali jsme, že pro počítač je velmi výhodné počítat ve dvojkové soustavě, neboť je ve všech ohledech snažší na reprezentaci. I všechny aritmetické operace jsou snažší k realizaci ve dvojkové soustavě, než v soustavě desítkové. Kdo měl například na základní škole problém s písemným dělením čísel, měl by jistě z dvojkové soustavy radost - písemné dělení ve dvojkové soustavě nevyžaduje na rozdíl od písemného dělení v desítkové soustavě žádnou "magii".

Problémem ovšem je, že lidem se prostě vžila soustava desítková a je asi nemožné kvůli počítačům požadovat po lidech, aby se desítkové soustavy vzdali ve prospěch soustavy dvojkové. Proto je potřeba převádět mezi oběma soustavami - uživatel zadá do počítače číslo v desítkové soustavě, počítač číslo převede do soustavy dvojkové, provede s číslem patřičné výpočty a výsledek opět převede z dvojkové soustavy do desítkové a nakonec zobrazí výsledek v desítkové soustavě uživateli.

V počítači jsou tedy implementovány algoritmy pro převod mezi desítkovou a dvojkovou soustavou. Někdy jejich znalost může být užitečná, jde ale nad rámec tohoto textu.

Jiné poziční soustavy

Jak už jsme řekli, jsou dvě základní soustavy, které programátor potřebuje znát; dvojková (ve které se na počítači provádějí všechny výpočty) a desítková (ve které se čtou uživatelské vstupy a zapisují výstupy). Za některých okolností se ovšem mohou hodit i jiné soustavy.

Za použitím jiných soustav než dvojkové a desítkové stojí jedna základní úvaha: Vezmeme-li číslo třeba ve dvojkové soustavě a rozdělíme jednotlivé číslice na stejně dlouhé bloky, můžeme tím dostat jednoduše číslo v jiné soustavě.

Příklad: Vezměme si číslo ve dvojkové soustavě 1010101. To můžeme rozdělit například na jednotlivé trojice číslic: 001 010 101. Celkem máme 8 možných trojic a můžeme každé trojici přiřadit jedinou číslici podle převodní tabulky:

číslice trojice binárních číslic
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

A dostaneme tak číslo v osmičkové soustavě: 125. To znamená, že mezi dvojkovou a osmičkovou soustavou se velmi snadno převádí (což například neplatí pro převody mezi dvojkovou a desítkovou soustavou, které jsou mnohem pracnější). Každé trojici dvojkových číslic totiž odpovídá přesně jedna číslice v osmičkové soustavě.

Obdobně, seskupíme-li dvojkové číslice po čtyřech, máme vždy celkem 16 možných čtveřic. Každé čtveřici tedy můžeme přiřadit právě jednu číslici v soustavě šestnáctkové. Zde nastává jedna drobná komplikace, a to sice ta, že z desítkové soustavy používáme pouze 10 číslic, pro šestnácktovou jich ale potřebujeme 16. To se zpravidla dělá tak, že znaky AF chápeme jako chybějící číslice. To ukazuje následující tabulka:

desítkové číslo šestnácktová číslice čtveřice binárních číslic
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111

Spojením čtyř číslic ve dvojkové soustavě tedy dostaneme přesně jednu číslici v soustavě šestnácktové. Šestnácktová (nebo také hexadecimální) soustava nachází velké uplatnění v programování, kvůli svým značným výhodám:

Zápisy čísel v různých soustavách v programovacích jazycích

Většina programovacích jazyků má nějaké možnosti zápisu čísel v různých soustavách. Desítková soustava je podporována téměř vždy, většinou je podporována i nějaká možnost zápisu kompatibilního s dvojkovou soustavou (tj. buď přímo zápis ve dvojkové soustavě, nebo aspoň v osmičkové či šestnáctkové).

Zápis čísel v jazyce C

Jazyk C dal vzniknout jakémusi standardu zápisu čísel v různých soustavách, který se používá nejenom v jazyce C, ale i v mnoha jiných jazycích, které se jazykem C nechaly inspirovat:

Jiné zápisy

Některé assemblery například podporují toto schéma zápisu:


domů