Jednotky a nuly – dvojková sústava
Určite ste niekedy počuli niečo ako binárna alebo dvojková sústava, že počítače poznajú (fungujú) iba jednotky a nuly alebo ste videli niekoľko vtipov o Itčkároch alebo o IT, kde boli iba samé jednotky a nuly. No...niečo na tom pravdy bude, ale zrejme veľa z vás netuší, prečo to tak je. Práve na tejto prednáške si troška vysvetlíme, čo tými jednotkami a nulami vlastne všetci myslia a prečo sa to tak omiela dookola:)
Začneme troška z iného súdka a zaspomíname si na hodiny matematiky, ale nebojte...nebude to nič náročné. Ako viete, my všetci (ľudia) zvykneme pracovať s číslami od 0-9, resp. rátame od jedna do desať. V rozmedzí nula až deväť máme teda 10 rôznych cifier – čísiel : 0, 1, 2, 3, 4, 5, 6, 7, 8 a 9. Takéto zoskupenie čísiel (skupina), ktoré spolu tvoria nejakú množinu a postupnosť čísiel (11,12,13...) sa nazýva sústava (čísiel). To, že v nej máme desať rôznych cifier znamená, že používame desiatkovú sústavu (dekadická, decimálna). Je to pre nás prirodzené, keď nám niekto povie koľko je 5 a 6, tak všetci vieme vyrátať, že to je 11, jednoducho k číslu 5 prirátame 6 krát jednotku, čo je základný najmenší diel našej sústavy.
Ľudia odjakživa radi počítali a čoraz viac a viac rátali náročnejšie a náročnejšie úlohy, až kým sa nerozhodli, že skúsia na to vymyslieť nejaký prístroj. Zo začiatku skúšali niečo mechanické (drevo, železo, jednoducho bez elektriky), neskôr sa rozhodli, že použijú nejakú tú elektroniku. Chceli teda, aby eletrický prístroj vedel rátať, pre vysvetlenie sa môžeme baviť o našom príklade 5+6. Mali pred sebou úlohu, ako povedať niečomu, čo je 5 a čo je 6 a aby nám z toho vyšlo 11. Každopádne, museli nejako v tom prístroji vedieť vyjadriť každé číslo od 0 po dosť veľa.
Ako najlepšie riešenie im vyšlo, že by si to mohli zjednodušiť a vytvoriť systém, pomocou ktorého by niečo malo iba dva stavy, dačo také ako zapnuté vypnuté, vytiahnuté zasunuté, niečo cez čo ide elektrika a nejde. To niečo by bolo niečo malé a mohlo by toho byť viac a nejako sústavou takých malých vecí, čo by mali dva rôzne stavy, by vedeli poskladať napr. všetky čísla a dokonca vykonávať s nimi aritmetické operácie (sčitovanie, odčitovanie, násobenie, delenie...). To, že to niečo malo mať dva stavy, by sa dalo popísať ako True a False (pravda nepravda, zapnuté vypnuté), ale ešte lepšie sa javí popis 1 a 0. A takto vznikla sústava, ktorá má iba dve čísla – cifry – jednotku a nulu a dostala krásny názov binárna (dvojková).
Aby sme pochopili, ako to funguje a ako vyzerá napríklad číslo 5 v dvojkovej sústave, musíme si ešte viac zaspomínať na matematiku a konkrétne na umocňovanie. Neviem, koľko toho si pamätáte a koľko nie, ale umocňovanie je niekoľkonásobné násobenie tým istým číslom, kde to číslo násobí seba samého. Dosť čudná veta, uvedieme príklad. Napríklad číslo 3 umocnené na číslo 2 (čítame tri na druhú) znamená, že číslo 3 vynásobíme číslom 3 dvakrát, takže výsledok je tri krát tri (3x3) a to je deväť (9). Tým pádom 3 na 2 je 9. Tri na tretiu je 3x3x3, čiže 27. Tri na štvrtú je 3x3x3x3, je to to isté ako 3na druhú krát 3 na druhú, 9x9 a to je 81 a takto dookola.
Toto asi chápeme, potrebujem k tomu ešte vedieť ale dve dôležité veci, ktoré si nejdeme vysvetľovať prečo to tak je, iba stačí vedieť, že to tak je. Všetko na prvú je to isté číslo, čiže tri na prvú je 3, 5 na prvú je 5, 789 na prvú je 789 atď. Všetko na nultú (áno na 0) je 1. Čiže 3 na nultú je 1, 5 na nultú je 1, 789 na nultú je 1. Možno sa pýtate, prečo si takúto blbosť vysvetľujeme so súvislosťou s dvojkovou sústavou. Poďme to teda zistiť:)
Naša úloha (tá istá, ktorú mali múdri ujovia a tety veľa rokov dozadu) je nasledovná, iba pomocou číslic 0 a 1 musíme nejako vyjadriť všetky čísla v našej sústave od 0 po dosť veľa (čiže 0, 1, 2, 3, …). Nejdeme to veľmi obkecávať, ako na to prišli, ale prišli teda na toto. Ak si zoradíme zaradom (za sebou) mocniny čísla 2, vieme pomocou nich zložiť všetký čísla. Zložením sa myslí sčítanie požadovaných mocnín čísla 2. Čo to znamená? Mocniny zaradom vyzerajú takto:
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, …
Ako vieme teda zložiť čísla z týchto čísiel? Nejako takto:
0 = 0
1 = 1
2 = 2
3 = 1+2
4 = 4
5 = 4+1
6 = 4 + 2
7 = 4 + 2 + 1
8 = 8
9 = 8 + 1
10 = 8 + 2
11 = 8 + 2 + 1
12 = 8 + 4
13 = 8 + 4 + 1
14 = 8 + 4 + 2
15 = 8 + 4 + 2 + 1
16 = 16
…
Ako vidíte, mohli by sme takto pokračovať donekonečna a naozaj by sme z tých čísiel (mocnín čísla 2) vedeli zložiť všetky čísla, čiže pomocou súčtu nejakých z tých čísel vytvoriť výsledné. Takto to naozaj je a funguje to. Keď už vieme, ako reprezentovať všetky čísla, ako to teda súvisí s dvojkovou sústavou? No veľmi jednoducho. To, ktoré číslo z mocnín dvojky sa v súčte tvoriacom výsledné číslo nachádza alebo nie, určujeme práve našou jednotkou a nulou. Nula značí že tam to číslo nie je a jednotka, že tam to číslo je. Takto si vytvoríme zaradom postupnosť núl a jednotiek a podľa toho vieme, aké to je číslo, poradie mocnín ale ide sprava doľava, viď príklad:
64 32 16 8 4 2 1
0 = číslo 0 v dvojkovej sústave je 0 (0x1 = 0)
64 32 16 8 4 2 1
1 = číslo 1 v dvojkovej sústave je 1 (1x1 = 1)
64 32 16 8 4 2 1
1 0 = číslo 2 v dvojkovej sústave je 10 (1x2 + 0x1 = 2)
64 32 16 8 4 2 1
1 1 = číslo 3 v dvojkovej sústave je 11 (1x2 + 1x1 = 3)
64 32 16 8 4 2 1
1 0 0 = číslo 4 v dvojkovej sústave je 100 (1x4 + 0x2 + 0x1 = 4)
64 32 16 8 4 2 1
1 0 1 = číslo 5 v dvojkovej sústave je 101 (1x4 + 0x2 + 1x1 = 5)
64 32 16 8 4 2 1
1 1 0 = číslo 6 v dvojkovej sústave je 110 (1x4 + 1x2 + 0x1 = 6)
Dúfam, že ste túto ukážku pochopili. Ak by sme chceli teda napríklad číslo 12, zložíme ho z čísiel 8 a 4, takže pomocou núl a jednotiek dáme najavo, ktoré čísla tam patria takže 1 1 0 0. Do súčtu rátame 8 a 4 a nerátame 2 a 1. Takto vyzerajú čísla reprezentované v prístrojoch a takto sa s nimi aj pracuje. Nejdeme sa zbytočne zaťažovať s tým, ako s v dvojkovej sústave vykonávajú aritmetické operácie (sčitovanie, násobenie...) alebo ako sú tam uložené ostatné znaky (písmená) a podobne...stačí nám vedieť aspoň toto, že čísla z desiatkovej sústavy sú takýmto spôsobom reprezentované v dvojkovej sústave.
No dobre, vidíme na počítači alebo na papieri tieto jednotky a nuly a už rozumieme, že to reprezentuje všetky čísla. Možno ste sa ale opýtali, čo to má spoločné s počítačom alebo elektrikou a s nejakým prístrojom ako kalkulačka. Tu sa dostávame k takému menšiumu divu sveta, že ako to vlastne funguje. Pokúsim sa to vysvetliť stručne a laicky.
Kalkulačku, hodinky, mobil a v podstate všetko, čo niečo robí samo, riadi procesor. Všetky tieto zariadenia sú vo svojej podstate počítače. V takom procesore je obrovské množstvo (veľmi veľa miliónov) miniatúrnych vecičiek, v ktorých je povedzme malý drôtik, cez ktorý buď ide alebo nejde elektrika. Ak cez neho ide elektrika, má nejaké napätie a to signalizuje hodnotu TRUE, čiže jednotku (1). Ak nejde, je iné menšie napätie a to reprezentuje FALSE, čiže nulu (0). Takto je v počítači a v iných zariadeniach reprezentovaná nula alebo jednotka.
Asi ste si povedali, že tomu nerozumiete a že je táto kapitola pre vás zbytočná a že ako vám to pomôže pri programovaní. Čudovali by ste sa, ale má to pre vás význam. Nie všetko, čo sme si tu popísali, ale najmä informácia, že sa riadime dvojkovou sústavou a že naše čísla sa skladajú z mocnín čísla dva. Toto je pre nás kľúčové a dôležité a v nasledujúcej prednáške si povieme prečo.