Dvojková číselná sústava

Dvojková číselná sústava, novšie tiež binárna číselná sústava (z ) je číselná sústava, ktorá zapisuje hodnoty pomocou dvoch symbolov 0 a 1. Konkrétnejšie hovoríme o pozičnej číselnej sústave so základom dva. Vďaka jednoduchej implementácii v elektronických obvodoch (vypnuté a zapnuté) používajú dvojkovú sústavu prakticky všetky súčasné číslicové počítače. Jednotlivé cifry (0, 1) sa nazývajú bit, čo je základná jednotka informácie.

Prevod hodnôt 

Na prevod z jednej sústavy do inej možno použiť jednu z nasledovných metód:
substitučná metóda,
metóda delenia základom,
metóda násobenia základom.

Z binárnej do desiatkovej sústavy (substitučná metóda) 
Ak máme zadané číslo v dvojkovej sústave pomocou číslic x0, x1... xk potom jeho hodnotu v desiatkovej sústave získame tak, že číslo rozpíšeme v dvojkovej sústave na polynóm a potom ho vyčíslime v desiatkovej:

Príklad: 
 (11010110)B = 1 · 27 + 1 · 26 + 0 · 25 + 1 · 24 + 0 · 23 + 1 · 22 + 1 · 21 + 0 · 20 == 1 · 128 + 1 · 64 + 0 · 32 + 1 · 16 + 0 · 8 + 1 · 4 + 1 · 2 + 0 · 1 = 128 + 64 + 16 + 4 + 2 = 214

Číslo 11010110 v dvojkovej sústave je 214 v desiatkovej sústave (stačí sčítať tie sčítance, ktoré sú násobené 1).

Z desiatkovej do binárnej sústavy (metóda delenia základom) 
Ak chceme previesť číslo z desiatkovej sústavy do dvojkovej sústavy, musíme číslo deliť základom sústavy – číslom 2, až pokiaľ nedostaneme podiel rovný nule. Po každom delení zapíšeme zvyšok, pričom zvyšok po prvom delení je cifra najnižšieho (nultého) rádu, zvyšok po druhom delení udáva cifru prvého rádu atď.

Príklad:
 215 : 2 = 107;  zv. 1107 : 2 = 53;   zv. 153 : 2 = 26;    zv. 126 : 2 = 13;    zv. 013 : 2 = 6;     zv. 16 : 2 = 3;      zv. 03 : 2 = 1;      zv. 11 : 2 = 0;      zv. 1

Číslo 215 v desiatkovej sústave je 11010111 (zvyšky zapísané v poradí zdola hore) v binárnej sústave.

Z desiatkovej do binárnej sústavy (metóda násobenia základom) 
Ak chceme číslo zapísané v desiatkovej sústave vyjadriť v dvojkovej sústave, rozložíme ho na súčet postupne znižujúcich sa mocnín dvojky a číslicou 1 alebo 0 zaznamenáme ich výskyt alebo absenciu. Napríklad pri čísle 215 postupujeme takto: 
 Nájdeme najväčšiu mocninu dvojky, ktorá sa v čísle nachádza: 27 = 128 (28 je 256, čo je už viac ako 215). Zapíšeme 1. 
 Potom od čísla 215 odčítame 128 a zisťujeme, či je rozdiel väčší ako najbližšia nižšia mocnina dvoch 26 = 64; 215 – 128 = 87. Je. Výskyt zase zapíšeme ako 1. 
 Ďalej zisťujeme, či sa v čísle 87 – 64 = 23 vyskytuje 25 = 32. Keďže 32 je väčšie ako 23, v tom prípade napíšeme 0.  
 Takto pokračujeme až po 20 = 1. Výsledkom je zápis v poradí v ako sme ho dostali: 110...

Príklad:
 
  215 = 128 + 64 + 0 + 16 + 0 + 4 + 2 + 1 == 1 · 27 + 1 · 26 + 0 · 25 + 1 · 24 + 0 · 23 + 1 · 22 + 1 · 21 + 1 · 20 = 11010111

Číslo 215 v desiatkovej sústave je 11010111 v binárnej sústave.

Kódovanie záporných čísel 
V dvojkovej číselnej sústave je možné záporné čísla reprezentovať viacerými spôsobmi, pričom medzi najčastejšie patria: priamy kód, inverzný kód a doplnkový kód.

Priamy kód 
Zápis priamym kódom znamená, že znak + alebo − vložíme priamo do kódu čísla, ktoré zapisujeme. Prvý (najvýznamejší) bit čísla, ktoré zapisujeme teda dostane hodnotu podľa toho, či je číslo kladné alebo záporné. 0 na začiatku čísla znamená, že bude kladné a 1 znamená, že bude záporné. Táto metóda má svoju nevýhodu v tom, že hodnota, ktorú môžeme vyjadriť n-počtom bitov sa zmenší, keďže jeden bit používame na znamienko. Bez znamienka môžeme vyjadriť hodnoty od 0 po 2n−1, priamym zápisom  môžeme vyjadriť interval od −2n−1 po 2n−1.

Inverzný kód 
Zápis inverzným kódom nadväzuje na zápis priamym kódom, ale rieši problém nižších hodnôt. Najvýznamejší bit stále vyjadruje znamienko čísla, ale zároveň má stále svoju číselnú hodnotu. Takže najvýznamejší bit čísla s n bitmi má hodnotu −(2n−1−1).

Doplnkový kód 
Doplnkový kód je často používaný a výhodný pri aritmetických operáciách s binárnymi číslami, pretože umožňuje využitie rovnakej logiky pre realizáciu inkrementácie, dekrementácie, sčítania, odčítania a násobenia pre kladné aj záporné čísla a netrpí problémom viacznačnej reprezentácie nuly.

Rovnako ako pri ostatných zápisoch, najvýznamnejší bit priamo reprezentuje znamienko (0 – kladné číslo alebo nula, 1 – záporné číslo). K celému zápisu čísla sa dostaneme tromi krokmi – v príklade nižšie je uvedený zápis čísla −28 v 8-bitovom dvojkovom doplnkovom kóde.

1) Zapíšeme kladné číslo v dvojkovej sústave.

2) Číslo binárne znegujeme – jednotky prepíšeme na nuly a nuly na jednotky.

3) Pripočítame 1.

Výsledok:

Aritmetické operácie 
V dvojkovej sústave používame základné operácie, ako v desiatkovej: sčítanie, odčítanie, násobenie a delenie.

Sčítanie 
Keďže v dvojkovej sústave pracujeme len s číslicami 0 a 1, existujú len 4 základné operácie sčítania.

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 10  (0 a 1 zostala, prenáša sa do vyššieho rádu)

Sčítaním 1 a 1 vznikne 0 a 1 sa prenesie do ďalšieho stĺpca (vyššieho rádu). Tak isto, ako keď pri sčítaní v desiatkovej sústave prekročíme desať a zostane jeden.

V tomto príklade prebehli nasledujúce operácie:

1 + 1 = 0, 1 zostala;

1 + 0 + 1 = 0, 1 zostala;

1 + 1 + 1 = 1, 1 zostala;

0 + 0 + 1 = 1 ;

0 + 1 = 1 .

Na úrovni hardvéru sa sčítanie čísel v dvojkovej sústave realizuje binárnou sčítačkou, tvoriaciou súčasť aritmeticko-logických jednotiek procesorov.

Dejiny 

Prvý známy opis číselnej sústavy pozostávajúcej len z dvoch znakov zaviedol staroindický matematik Pingala v 3. storočí pred Kr. Táto sústava však neobsahovala nulu.

Binárny humor 
 „Ľudí môžeme rozdeliť do 10 skupín – na tých, ktorí rozumejú dvojkovej sústave a tých, ktorí jej nerozumejú.“
 „Tu platí digitálna funkcia – jednotka alebo nula. Buď vyhrá alebo odíde…“ Ladislav Borbély (STV) Brazília – Mexiko, Pohár konfederácií 2013

Referencie

Pozri aj 
 bit
 bajt
 binárny kód
 BCD kód
 Grayov kód
 ASCII
 binárny súbor
 binárna sčítačka
 osmičková sústava
 šestnástková sústava

Iné projekty

Externé odkazy 
 Prevod medzi sústavami [PDF]

Pozičné číselné sústavy
Počítačová aritmetika
Elementárna aritmetika
Gottfried Wilhelm Leibniz