| DEC | BIN |
| --- | --- |
| 0 | 0 |
| 1 | 1 |
| 2 | 10 |
| 3 | 11 |
| 4 | 100 |
| 5 | 101 |
| 6 | 110 |
| 7 | 111 |
| 8 | 1000 |
| 9 | 1001 |
| 10 | 1010 |

**Dvojková číselná sústava**, novšie tiež **binárna číselná sústava** (z lat. bis – dvakrát) 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:

{\displaystyle x=\sum \_{i=0}^{k}{x\_{i}}\*2^{k-i}}

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. **1**  
107 : 2 = 53;   zv. **1**  
53 : 2 = 26;    zv. **1**  
26 : 2 = 13;    zv. **0**  
13 : 2 = 6;     zv. **1**  
6 : 2 = 3;      zv. **0**  
3 : 2 = 1;      zv. **1**  
1 : 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: 

1. 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.
2. 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.
3. Ď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.
4. 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.

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é.
### 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).

{\displaystyle 1010\_{2}=-5\_{10}}

{\displaystyle -(8\*1-1)+4\*0+2\*1+1\*0=-5}

|  |  |  |  |
| --- | --- | --- | --- |
| **0** | 0000 | **−0** | 1111 |
| **+1** | 0001 | **−1** | 1110 |
| **+2** | 0010 | **−2** | 1101 |
| **+3** | 0011 | **−3** | 1100 |
| **+4** | 0100 | **−4** | 1011 |
| **+5** | 0101 | **−5** | 1010 |
| **+6** | 0110 | **−6** | 1001 |
| **+7** | 0111 | **−7** | 1000 |

### 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.

{\displaystyle 28\_{10}=00011100\_{2}}

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

{\displaystyle (00011100)\urcorner =11100011}

3) Pripočítame 1.

{\displaystyle 11100011+1=11100100}

Výsledok:
{\displaystyle (-28)\_{10}=(11100100)\_{2\,dopln.}}

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.

Ukážka sčítania v binárnej sústave
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
------

Strana z Leibnitzovej knihy *„Explication de l'Arithmétique Binaire"*, 1703
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
----------

1. 1 2   *Negative Binary Numbers | Binary Arithmetic | Electronics Textbook* [online]. www.allaboutcircuits.com, [cit. 2020-12-17]. Dostupné online. (po anglicky)
2. ↑   *Signed Binary Numbers* [online]. [Cit. 2020-12-14]. Dostupné online.
3. ↑   *Two's Complement* [online]. www.cs.cornell.edu, [cit. 2020-12-17]. Dostupné online.
4. ↑   *Binary Addition and Subtraction* [online]. Circuit Globe, 2016-09-29, [cit. 2020-12-17]. Dostupné online. (po anglicky)
5. ↑   *there are 10 types of people in this world, those who understand binary and those who dont* [online]. Urban Dictionary, [cit. 2017-06-06]. Dostupné online. (po anglicky)
6. ↑  BORBÉLY, Ladislav. výrok komentátora.. Dostupné online [cit. 2017-06-06].

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
------------

Commons
* Spolupracuj na Commons Commons ponúka multimediálne súbory na tému **Dvojková číselná sústava**

Externé odkazy
--------------

* Prevod medzi sústavami [PDF]