Výpis prehľadov
Kódovanie čísel
Podkapitoly
Kódovanie čísel

V bežnom živote sme zvyknutí zapisovať čísla v desiatkovej sústave, v ktorej používame desať rôznych cifier a ich pozícia zodpovedá mocninám desiatky. Teda napríklad 358 značí osem jednotiek, päť desiatok a tri stovky. To je jeden z mnohých možných spôsobov kódovania.
Ako by sme mohli zakódovať 358 inak? Napríklad tak, že by sme urobili tristopäťdesiatosem čiarok vedľa seba. Alebo by sme sa mohli dohodnúť, že drak bude znamenať sto, prasiatko päťdesiat a zajac dvojku. Potom by sme 358 mohli znázorniť obrázkom, na ktorom budú tri draky, prasiatko a štyri zajace.
Počítače však draky a prasiatka nepoužívajú. Pre počítače nie je vhodná ani desiatková sústava, pretože počítače nemajú desať prstov. No vedia dobre rozlišovať medzi dvomi stavmi (aktívny a neaktívny). Preto sa na kódovanie čísel v počítači používa predovšetkým binárna (dvojková) sústava, v ktorej sa používajú iba dve cifry: 0 a 1.
Základný princíp binárnej sústavy nie je nijako špecifický pre počítače. Ide o matematický princíp „pozičnej sústavy“, ktorá funguje všeobecne. Môžete ju použiť napríklad na počítanie na prstoch, čo vám umožní na prstoch jednej ruky počítať od 0 až do 31. Tiež počítanie v binárnej sústave (sčítanie, odčítanie, násobenie) je všeobecný princíp, ktorý funguje podobne ako počítanie v našej obvyklej desiatkovej sústave.
Na kódovanie záporných a desatinných čísel už je treba zájsť do detailov, ktoré sú trochu špecifické pre počítače (koľko bitov pamäti pre čísla vyčleníme, ako ich presne využijeme).
Okrem binárnej sústavy v informatike občas narazíme aj na sústavy založené na mocninách dvojky, napríklad osmičkovú alebo šestnástkovú sústavu. Konkrétne s hexadecimálnou (šestnástkovou) sústavou sa môžeme často stretnúť pri práci s RGB farbami.
HoreBinárne čísla: základy
Princíp binárnej sústavy
V binárnej (dvojkovej) sústave zapisujeme čísla iba pomocou dvoch číslic: 0 a 1. Pozícia každej číslice v zápise zodpovedá určitej mocnine dvojky. Mocniny sa vždy začínajú nultou mocninou v prípade číslice najviac vpravo a zvyšujú sa smerom doľava. Hodnotu binárneho čísla potom vypočítame ako súčet týchto mocnín. Každú mocninu započítame, ak je na príslušnej pozícii 1 alebo nezapočítame, ak je na danom mieste 0.

Značenie sústav
Aby sme odlíšili, či hovoríme o čísle v binárnej alebo v desiatkovej sústave, pridávame k číslam dolné indexy značiace sústavu. Napríklad číslo 5 v desiatkovej sústave budeme písať ako 5_{10}, binárne číslo s hodnotou 5 napíšeme ako 101_2. Potom môžeme jasne rozlíšiť, že napríklad zápisom 11_{10} myslíme desiatkové číslo 11, kým zápis 11_2 budeme interpretovať ako binárne číslo 11 a teda desiatkové číslo 3.
Intuitívna pomôcka
Pre základnú predstavu o binárnych číslach môžeme použiť pomôcku, ktorú máme vždy poruke – totiž ruku samotnú. Predstavme si, že si na prsty ruky napíšeme mocniny dvojky:

Potom môžeme na prstoch jednej ruky počítať nielen do päť, ale až do tridsaťjeden. Každé číslo je totiž možné vyjadriť (jednoznačne) ako súčet mocnín dvojky. Ak polohu prstov zaznačíme pomocou núl a jednotiek, dostaneme zápis v binárnej sústave.
Príklady čísel zapísaných v binárnej sústave
| desiatkovo | súčet mocnín | binárne |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 2 | 10 |
| 3 | 2+1 | 11 |
| 4 | 4 | 100 |
| 5 | 4+1 | 101 |
| 6 | 4+2 | 110 |
| 7 | 4+2+1 | 111 |
| 8 | 8 | 1000 |
| 9 | 8+1 | 1001 |
| 10 | 8+2 | 1010 |
| 16 | 16 | 10000 |
| 20 | 16+4 | 10100 |
| 30 | 16+8+4+2 | 11110 |
Binárne čísla: záporné a desatinné
V počítači často potrebujeme pracovať so zápornými alebo desatinnými číslami. Keďže však počítače používajú iba nuly a jednotky, je treba tieto čísla nejakým spôsobom zapisovať bez použitia mínusu alebo desatinnej čiarky.
Záporné čísla
Existuje viac spôsobov, ako zapisovať záporné čísla. Väčšinou máme daný určitý počet bitov, s ktorými môžeme pracovať, často jeden byte.
V priamom kóde slúži prvý bit zľava na uchovanie znamienka čísla. Obsahuje 0, ak je číslo kladné, a 1, ak je záporné. Na ostatných 7 bitov sa zapíše absolútna hodnota čísla. Číslo 5_{10} sa teda v jednom byte zakóduje ako 0000 0101 a -5_{10} ako 1000 0101.
V inverznom kóde najskôr zapíšeme absolútnu hodnotu čísla. Ak je číslo kladné, ďalej nerobíme nič. Ak je záporné, obrátime hodnotu všetkých bitov (vymeníme 0 za 1 a naopak). Číslo 5_{10} sa teda v jednom byte napíše ako 0000 0101 a -5_{10} ako 1111 1010.
Kódovanie v doplnkovom kóde (dvojkovom doplnku) sa začína podobne ako v inverznom. Najskôr napíšeme absolútnu hodnotu čísla a ak je číslo kladné, ďalej nepokračujeme. Pre záporné čísla vykonáme obrátenie (inverziu) bitov a následne ešte pripočítame jednotku. Číslo 5_{10} teda v jednom byte zapíšeme ako 0000 0101 a -5_{10} ako 1111 1010 + 1 = 1111 1011. Ak chceme získať hodnotu záporného čísla alebo obrátiť znamienko späť do plusu, vykonáme ten istý sled operácií. Najskôr obrátime všetky bity a potom pripočítame 1. Pre číslo -5_{10} by to vyzeralo nasledovne: inverzia bitov: 1111 1011 → 0000 0100, pripočítanie jednotky: 0000 0100 + 1 = 0000 0101. Získali sme číslo 5_{10}.
Vo všetkých troch kódoch poznáme záporné číslo podľa toho, že má na prvom mieste zľava 1. Kladné čísla na tejto pozícii vždy obsahujú 0.
Desatinné čísla
Desatinné čísla môžu byť veľmi dlhé, občas majú dokonca nekonečný zápis. Počítače však majú obmedzený priestor v pamäti, preto sa aj desatinné čísla ukladajú na obmedzený počet bitov. Tento spôsob reprezentácie sa nazýva zápis s pohyblivou desatinnou čiarkou a kvôli zmenšenému priestoru môže byť občas trochu nepresný.
V zápise s pohyblivou desatinnou čiarkou sa číslo ukladá pomocou dvoch hodnôt: mantisy a exponentu. V špeciálnom bite sa navyše uchováva znamienko čísla, pre kladné sa uloží 0 a pre záporné 1.
Mantisa predstavuje základ čísla – v podstate sú to číslice použité v zápise. Desatinná čiarka sa v mantise nachádza vždy na vopred dohodnutej pozícii, často napríklad za prvou číslicou zľava. Čím väčší priestor (počet bitov) máme na mantisu, tým presnejšie môžeme číslo uložiť.
Exponent je počet miest, o ktoré sa má desatinná čiarka v mantise posunúť, aby sme dostali pôvodné číslo. Kladný exponent znamená posun smerom doprava, čím sa číslo zväčšuje. Záporný exponent značí posun desatinnej čiarky doľava, tým sa číslo viac približuje nule. Čím viac miesta máme na exponent, tým väčší rozsah hodnôt môžeme ukladať.
Napríklad číslo 1101{,}001_2 bude mať mantisu 1{,}101 001_2 a exponent 3_{10}. V znamienkovom bite bude 0.
Na obrázku je príklad, ako môže byť jedno číslo uložené v pamäti počítača na 32 bitoch (4 bytoch).

Binárne čísla: aritmetika
Ak zvládame základný princíp binárnej sústavy, môžeme sa pustiť do aritmetických operácií.
Sčítanie binárnych čísel
Binárne čísla môžeme sčítať pod sebou veľmi podobne, ako sme zvyknutí sčítavať čísla v desiatkovej sústave. Jediný rozdiel nastáva, ak sčítame dve jednotky. Pretože 1_2 + 1_2 = 10_2, v takom prípade zapíšeme 0 a prenášame 1 do vyššieho rádu.

Odčítanie binárnych čísel
Odčítanie binárnych čísel funguje obdobne. K prenosu dochádza iba pri počítaní rozdielu 0_2 - 1. V takom prípade si „požičiame“ jednotku z vyššieho rádu – ako keby sme počítali 10_2 - 1_2. Potom zapíšeme 1 a v ďalšom ráde navyše odčítame jednotku, ktorú sme si požičali.

Násobenie binárnych čísel
Násobení binárnych čísel je tiež takmer rovnaké ako pri desiatkových číslach. Násobíme tak, ako keby sme mali dve desiatkové čísla zložené iba z núl a jednotiek. Sčítanie riadkov vzniknutých násobením potom prebieha ako binárne sčítanie, ktoré je popísané vyššie.
Ak máme binárne číslo násobiť mocninou dvojky, môžeme si prácu veľmi uľahčiť. Stačí iba pridať na koniec čísla toľko núl, koľkou mocninou dvojky násobíme. Napríklad pri násobení dvojkou pridávame 1 nulu (2 = 2^1), pri násobení osmičkou pridávame 3 nuly (8 = 2^3). Celočíselné delenie mocninou dvojky je tiež jednoduché, stačí odstrániť toľko posledných číslic z delenca, koľkou mocninou dvojky delíme.
HoreHexadecimálne čísla
Hexadecimálne čísla sú čísla zapísané v šestnástkovej (hexadecimálnej) sústave. Táto sústava využíva 16 symbolov (0 – 9 a A – F, kde A – F predstavujú desiatku až pätnástku).
Hexadecimálne čísla sú úzko prepojené s binárnou sústavou. Každý symbol v šestnástkovej sústave predstavuje štyri bity v binárnej sústave, čo uľahčuje prevody medzi týmito sústavami. Každé číslo v hexadecimálnej sústave je možné previesť na binárne tým, že každému hexadecimálnemu symbolu priradíme štyri bity.
Príklady prevodu čísel
- Hexadecimálne číslo 1A zodpovedá binárnemu číslu 00011010, pretože 1 = 0001 a A = 10 = 1010. V desiatkovej sústave zodpovedá 1A číslu 26 (1 \cdot 16 + 10).
- Desiatkové číslo 255 môže byť vyjadrené hexadecimálne ako FF, kde F značí pätnástku.
Hexadecimálne čísla sú často využívané v oblasti farebného zobrazenia, napríklad v RGB modeli. Každá zložka farby (červená, zelená, modrá) je vyjadrená ôsmimi bitmi, čo zodpovedá dvom hexadecimálnym čísliciam. Napríklad červená farba s plnou intenzitou by bola zapísaná ako #FF0000, kde FF reprezentuje maximálnu hodnotu červenej zložky.
Hore