Dvojková soustava
Author
Albert FloresDvojková soustava je číselný systém, který používá pouze dvě číslice - 0 a 1. Je to nejzákladnější způsob zápisu a reprezentace čísel v počítačích a digitálních zařízeních. V dvojkové soustavě se čísla zapisují jako sled nul a jedniček, který představuje hodnotu čísla. Každá pozice v tomto zápisu odpovídá nějaké mocnině čísla 2. Například číslo 101 v dvojkové soustavě představuje číslo 5, protože je to 1x2^2 + 0x2^1 + 1x2^0. Dvojková soustava je důležitá pro práci s informacemi v digitální podobě. V počítačích jsou všechna data uložena a zpracovávána ve formě binárního kódu - tedy číslic 0 a 1. Tento způsob zápisu umožňuje jednoduché uchovávání informací a rychlé provádění výpočtů. V dvojkové soustavě se často používá i zápis přímo v podobě bitů - tedy jednotlivých nul a jedniček. Například 8bitové číslo znamená, že číslo je zapsáno pomocí osmi bitů. Dvojková soustava je jednou z mnoha číselných soustav, které se používají v matematice a informatice. Mezi další důležité soustavy patří desítková soustava (používaná v běžném životě), osmičková soustava a šestnáctková soustava (používané při programování počítačů).
Dvojková soustava (binární soustava) je číselná soustava, která používá pouze dvě číslice: 0 a 1. Dvojková soustava je poziční číselná soustava se základem 2, každá číslice tedy odpovídá n-té mocnině čísla dvě, kde n je pozice dané číslice v zapsaném čísle. Takto zapsané číslo se nazývá binární číslo.
Dvojková soustava se používá ve všech moderních digitálních počítačích, neboť její dvě číslice (0 a 1) odpovídají dvěma jednoduše rozdělitelným stavům elektrického obvodu (vypnuto a zapnuto), popřípadě nepravdivosti či pravdivosti výroku.
Výpočet hodnoty binárního čísla
Na příkladu
Například číslo zapsané v dvojkové soustavě 11010110 si můžeme přepsat do tabulky s mocninami čísla dvě odpovídajícími pozicím jednotlivých číslic:
binární číslo | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
pozice číslice | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
mocniny čísla dvě | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
hodnoty mocnin | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
krát binární číslice | × 1 | × 1 | × 0 | × 1 | × 0 | × 1 | × 1 | × 0 |
výsledky součinu | 128 | 64 | 0 | 16 | 0 | 4 | 2 | 0 |
Stačí tedy pouze započítat ty mocniny, které odpovídají číslici 1, v příkladu: 128+64+16+4+2=214. Binární číslo 11010110 má tedy hodnotu odpovídající desítkovému číslu 214.
Převod desítkového čísla na binární získáme opakovaným dělením desítkového čísla dvojkou a zapisováním zbytků dělení (0 nebo 1) zprava doleva:
výsledky dělení | 1 | 3 | 6 | 13 | 26 | 53 | 107 | 214 |
---|---|---|---|---|---|---|---|---|
rozklad na součin 2 | 2 × 0 + 1 | 2 × 1 + 1 | 2 × 3 | 2 × 6 + 1 | 2 × 13 | 2 × 26 + 1 | 2 × 53 + 1 | 2 × 107 |
zbytky dělení | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
Matematický výpočet
Výpočet hodnoty binárního čísla, které se skládá z k+1 číslic x_0 x_1 \ldots x_k, každé o hodnotě buď 0, nebo 1, lze provést polynomem:
x=\sum_{i=0}^k {x_i}\cdot2^{k-i}
Tedy výše uvedený příklad dvojkového čísla 11010110 můžeme vypočítat následovně: :\ x_0 = 1; x_1 = 1; x_2 = 0; x_3 = 1; x_4 = 0; x_5 = 1; x_6 = 1; x_7 = 0 :(11010110)_2 = \sum_{i=0}^7 {x_i}\cdot2^{7-i} = x_0\cdot 2^7 +\ x_1\cdot 2^6 +\ x_2\cdot 2^5 +\ x_3\cdot 2^4 +\ x_4\cdot 2^3 +\ x_5\cdot 2^2 +\ x_6\cdot 2^1 +\ x_7\cdot 2^0 = := 1\cdot 2^7 +\ 1\cdot 2^6 +\ 0\cdot 2^5 +\ 1\cdot 2^4 +\ 0\cdot 2^3 +\ 1\cdot 2^2 +\ 1\cdot 2^1 +\ 0\cdot 2^0 = 128\ +\ 64\ +\ 16\ +\ 4\ +\ 2\ = (214)_{10}
Pro převod mezi soustavami se používají tyto metody: * Substituční metoda - součet členů polynomu, způsob použitý výše * Metoda dělení základem - binární číslo tvoří zapsané zbytky opakovaného dělením desítkového čísla dvojkou * Metoda násobení základem - pro převod zlomků (desetinných čísel) se místo dělení použije násobení
Kódování záporných čísel
Pro ukládání, přenos a zpracování záporných binárních čísel v počítači existuje mnoho možností, nejčastěji se používá kódování pomocí dvojkového doplňku.
Přímý kód
První možný způsob je vyčlenění prvního bitu jako znaménkového bitu. Pokud například binární číslo 00000001 vyjadřuje jedničku, pak 10000001 označuje −1.
Tento způsob ale komplikuje algoritmy pro praktické počítání - pro sčítání a odčítání jsou potřeba odlišné algoritmy a nejprve je vždy třeba testovat znaménkový bit a podle výsledku provést sčítání nebo odčítání. Další nevýhodou je, že existují dvě reprezentace čísla nula - kladná nula a záporná nula. +more Proto byl později pro záznam záporných čísel zaveden doplňkový kód.
Doplňkový kód
Při kódování v doplňkovém kódu je záporné číslo zaznamenáno jako binární negace (záměna všech 0 za 1 a 1 za 0) původního čísla zvětšená o 1. Podle úvodního bitu lze v tomto kódu opět rozpoznat kladná a záporná čísla. +more Využívá se faktu, že při odečtení čísla 00000001 od čísla 00000000 dojde k přetečení, a výsledkem je číslo 11111111. Čísla ve dvojkovém doplňku můžeme chápat také tak, že nejvyšší bit má místo váhy 2k váhu −2k.
V tomto kódu existuje jen jediná reprezentace čísla nula, pro sčítání a odečítání lze použít stejnou sčítačku (operace probíhají stejně, liší se pouze význam kódu). Také je zachována komutativita, tzn. +more že výsledek součtu libovolného počtu čísel v doplňkovém kódu je stejný bez ohledu na jejich pořadí, i když dochází k přetečení.
Příklad: pokud 00001101 je binární vyjádření čísla 13, pak −13 se vypočte jako NOT(00001101) + 1 = 11110010 + 1 = 11110011.
Pokud se sečte takto vyjádřené záporné číslo s jiným záporným nebo větším kladným číslem, dojde k přetečení rozsahu. Kód je ale zvolen tak, že po odříznutí přetečeného bitu dostáváme správný výsledek.
Příklad: 20_{10} - 13_{10} = 20_{10} + (-13)_{10} = 00010100_{2} + 11110011_{2} = 1 00000111_{2} = 7_{10} (po odříznutí přeteklého devátého bitu).
Poznámka: všechny příklady jsou pro jednoduchost provedeny na číslech o rozsahu 8 bitů (1 byte).
Inverzní kód
Vedle dvou výše uvedených metod existuje ještě jakýsi mezikrok - kladná čísla se vyjadřují normálním způsobem, záporná čísla se vyjadřují binární negací čísla (a podle nejvyššího bitu lze opět poznat znaménko). Tento způsob se označuje jako inverzní kód či jedničkový doplněk. +more Například jestliže číslo 6 v osmibitovém vyjádření je 00000110, číslo −6 se vyjádří kódem 11111001.
Tento kód má stále dvě reprezentace čísla nula.
Kód s posunutou nulou
Poslední používanou možností je k číslu připočítat nějakou známou konstantu, což se nazývá kódování s posunutou nulou nebo aditivní kódování. Například pro osmibitová čísla, která mohou reprezentovat 256 různých čísel, lze použít posun −127: pak budeme 00000000 považovat za −127, nulu vyjádříme jako 01111111 a symbol 11111111 je 128.
Nevýhodou tohoto zápisu je, že kladná čísla se liší od bezznaménkové reprezentace čísel. Operace sčítání nepotřebuje úpravy, ale pro operaci násobení je nutné od operandů odečíst známou konstantu.
Tento kód se běžně používá pro exponent v reprezentaci desetinných čísel pomocí pohyblivé řádové čárky.
Srovnání číselných soustav
Odkazy
Související články
BCD * Binární kód * Binární soubor * Brownův kód * Číselná soustava * Grayův kód * kód 1 z n * Osmičková soustava * Šestnáctková soustava
Externí odkazy
Kategorie:Počítačová terminologie Kategorie:Poziční číselné soustavy