Podcast o Dvojková a šestnástková sústava
Dvojková a šestnástková sústava: Prevod, Dvojkový Doplnok a SEO
Podcast
Číselné sústavy
Délka: 12 minut
Kapitoly
Úvod do hexadecimálnej sústavy
Pozičné sústavy a základy
Dvojková, osmičková a šestnástková sústava
Prevody do desiatkovej sústavy
Prevody z desiatkovej sústavy
Jednoduché prevody medzi sústavami
Ako počítač vidí mínus
Najčastejšie chyby
Zhrnutie a záver
Přepis
Barbora: Určite si si niekedy napríklad vo Photoshope alebo inom grafickom editore vyberal farbu. A možno si si všimol taký ten zvláštny kód, niečo ako mriežka a potom zmes čísel a písmen, napríklad #FF0000 pre červenú.
Lukáš: Presne! A napadlo ti niekedy, čo to vlastne znamená? Prečo práve písmená F a nuly? No, práve si sa pozeral na číslo v šestnástkovej sústave, a to je jeden z kľúčových typov číselných sústav, o ktorých sa dnes budeme rozprávať.
Barbora: Počúvate Studyfi Podcast. Takže, Lukáš, poďme na to od základov. Čo to vlastne tie číselné sústavy sú?
Lukáš: Predstav si to ako rôzne jazyky na vyjadrenie toho istého — čísla. My bežne používame desiatkovú sústavu. Má desať symbolov, cifry od nuly po deväť. Preto sa volá desiatková.
Barbora: A prečo je dôležité, kde sa cifra v čísle nachádza?
Lukáš: Skvelá otázka. Pretože používame takzvané pozičné sústavy. To znamená, že hodnota cifry závisí od jej pozície. Vezmi si číslo 345. To nie je len trojka, štvorka a päťka vedľa seba.
Barbora: Jasné, je to tristoštyridsaťpäť.
Lukáš: Presne. A matematicky je to 3 krát 10 na druhú, plus 4 krát 10 na prvú, plus 5 krát 10 na nultú. Každá pozícia má svoju váhu, ktorá je mocninou základu, v tomto prípade desiatky.
Barbora: Dobre, to dáva zmysel pre náš bežný život. Ale prečo sa v informatike používajú iné sústavy?
Lukáš: Pretože počítače nerozmýšľajú v desiatich cifrách. Počítač pozná len dva stavy: je tam prúd, alebo nie je tam prúd. Zapnuté, alebo vypnuté. A na to je ideálna dvojková, alebo binárna sústava.
Barbora: Takže nuly a jednotky.
Lukáš: Presne tak. Jednotka znamená „zapnuté“, nula „vypnuté“. Každá táto cifra sa volá bit. Ale predstav si, že by si mal zapísať obrovské číslo len pomocou núl a jednotiek... bola by to extrémne dlhá a neprehľadná postupnosť.
Barbora: To znie ako nočná mora.
Lukáš: A presne preto vznikli osmičková a šestnástková sústava. Sú to vlastne len skratky pre dlhé binárne kódy. Osmičková používa cifry 0 až 7 a šestnástková používa cifry 0 až 9 a potom písmená A, B, C, D, E, F.
Barbora: Aha! Takže to F v kóde farby znamená nejaké číslo!
Lukáš: Bingo! F je 15. Ale k tomu sa dostaneme. Pointa je, že sú kompaktnejšie a pre programátorov oveľa čitateľnejšie.
Barbora: Super. Takže teraz, keď poznáme tie hlavné sústavy, ako medzi nimi prepíname? Povedzme, že mám číslo v inej sústave a chcem vedieť, koľko to je v našej desiatkovej.
Lukáš: Na to použijeme presne ten istý princíp, ako pri tom čísle 345, len zmeníme základ. Vynásobíme každú cifru jej pozičnou váhou. Ukážme si to na príklade. Povedzme, že máme binárne číslo 11010.
Barbora: Okej, samé nuly a jednotky.
Lukáš: Základ je 2. Ideme sprava. Máme 0 krát 2 na nultú, plus 1 krát 2 na prvú, plus 0 krát 2 na druhú, plus 1 krát 2 na tretiu a 1 krát 2 na štvrtú. Keď to sčítame, dostaneme 16 + 8 + 0 + 2 + 0, čo je 26. Takže 11010 binárne je 26 v desiatkovej.
Barbora: To je celkom priamočiare. A čo s tou šestnástkovou? Skúsme previesť napríklad číslo 2AF.
Lukáš: Jasné. Tu je základ 16. A pamätáme si, že A je 10 a F je 15. Takže počítame: 2 krát 16 na druhú, plus 10 krát 16 na prvú, plus 15 krát 16 na nultú. To je 512 plus 160 plus 15. Výsledok je 687. Hotovo.
Barbora: Dobre, a čo opačným smerom? Ako premením našich 26 naspäť na to binárne číslo?
Lukáš: Na to existuje metóda postupného delenia. Je to ako odhaľovať tajomstvo krok po kroku. Delíš svoje číslo základom sústavy, do ktorej ho chceš previesť, a zapisuješ si zvyšky.
Barbora: Ukáž mi to.
Lukáš: Takže, chceme previesť 26 do dvojkovej sústavy. Delíme dvojkou. 26 delené 2 je 13, zvyšok 0. Zapíšeme si nulu. Teraz delíme 13. 13 delené 2 je 6, zvyšok 1. Zapíšeme si jednotku. 6 delené 2 je 3, zvyšok 0. Zapíšeme nulu.
Barbora: A takto pokračujeme, až kým sa nedopracujeme k nule?
Lukáš: Presne! 3 delené 2 je 1, zvyšok 1. A nakoniec 1 delené 2 je 0, zvyšok 1. A teraz to najdôležitejšie — výsledné číslo dostaneš tak, že si tie zvyšky prečítaš odspodu nahor.
Barbora: Takže... 1, 1, 0, 1, 0. Hej, to je presne to číslo 11010, s ktorým sme začali!
Lukáš: Vidíš? Žiadna mágia, len matematika. A funguje to pre akúkoľvek sústavu. Keď prevádzaš do šestnástkovej a vyjde ti zvyšok napríklad 10, len ho zapíšeš ako A.
Barbora: Super, toto je skvelý základ. Ale počula som, že prevody medzi dvojkovou, osmičkovou a šestnástkovou sú nejaké jednoduchšie. Je to pravda?
Lukáš: Áno, a to je na tom to najlepšie. Keďže 8 je 2 na tretiu a 16 je 2 na štvrtú, môžeme prevádzať pomocou zoskupovania bitov. Je to taká šikovná skratka.
Barbora: Skratky znejú dobre. Ako to funguje?
Lukáš: Ak chceš previesť binárne číslo do osmičkovej, jednoducho si ho sprava rozdelíš na skupinky po troch bitoch. Každá trojica bitov totiž zodpovedá presne jednej cifre v osmičkovej sústave.
Barbora: Ukážme si príklad. Čo tak 11010110?
Lukáš: Fajn. Sprava zoberieme prvú trojicu: 110. To je v desiatkovej 6. Zoberieme ďalšiu: 010. To je 2. A posledná nám ostala 011, čo je 3. Takže výsledok v osmičkovej je jednoducho 326. Žiadne zložité násobenie alebo delenie.
Barbora: Páni, to je naozaj rýchle! A predpokladám, že do šestnástkovej to bude podobné, len budeme robiť skupinky po štyroch bitoch?
Lukáš: Na sto percent! Vezmeme to isté číslo, 11010110. Rozdelíme ho na štvorice sprava. Prvá štvorica je 0110, čo je 6. Druhá je 1101, čo je 13. A 13 v šestnástkovej sústave je...?
Barbora: Písmeno D!
Lukáš: Presne! Takže výsledok je D6. A opačne to funguje rovnako, každú šestnástkovú cifru rozpíšeš na štvoricu bitov a máš binárne číslo. Je to naozaj efektívne a v praxi sa to používa neustále.
Barbora: Skvelé. Myslím, že číselné sústavy už nevyzerajú tak strašidelne. Vlastne je to celkom logická skladačka.
Barbora: Takže prevody medzi dvojkovou a šestnástkovou sústavou sú vlastne celkom priamočiare. Vždy ide o tie štvorice bitov.
Lukáš: Presne tak. Je to ako skladačka. Povedzme, že máme binárne číslo 11010110. Rozdelíme ho na dve štvorice: 1101 a 0110.
Barbora: Okej, 1101 a 0110. A teraz každú premeníme zvlášť?
Lukáš: Áno. 0110 je... 4 plus 2, čiže 6. A 1101 je 8 plus 4 plus 1, to je 13. V šestnástkovej sústave je 13 písmeno D.
Barbora: Takže výsledok je D6. To je super! Je to oveľa rýchlejšie, ako to celé prevádzať cez desiatkovú sústavu.
Lukáš: Presne tak. Preto to programátori milujú. Efektivita nadovšetko.
Barbora: Dobre, zatiaľ sme sa bavili len o kladných číslach. Ale čo so zápornými? Ako počítač vie, že má pracovať s mínus päťkou a nie s plus päťkou?
Lukáš: Výborná otázka. Na to používame niečo, čomu hovoríme dvojkový doplnok. Je to vlastne celkom šikovný trik.
Barbora: Trik? V matematike? To sa mi páči!
Lukáš: V podstate áno. Umožňuje nám to robiť odčítanie pomocou sčítania. Procesor tak nepotrebuje dva rôzne obvody. Zjednodušuje to hardvér.
Barbora: Aha! Takže ako ten trik funguje?
Lukáš: Sú to dva jednoduché kroky. Najprv zoberieš kladné číslo, napríklad päťku v 8-bitovej forme, čo je 00000101.
Barbora: Rozumiem, to je naša päťka.
Lukáš: Prvý krok: invertuješ všetky bity. Z núl spravíš jednotky a z jednotiek nuly. Dostaneš 11111010.
Barbora: To sa volá jednotkový doplnok, však?
Lukáš: Presne. A druhý, kľúčový krok: k tomuto výsledku pripočítaš jednotku. Takže 11111010 plus 1 sa rovná 11111011. A to je reprezentácia čísla mínus päť.
Barbora: Wow. Takže tá prvá jednotka naľavo vlastne hovorí, že ide o záporné číslo?
Lukáš: Chápeš to správne. Najvyšší bit funguje ako znamienko. Nula pre plus, jednotka pre mínus. A s 8 bitmi takto vieme zobraziť čísla od mínus 128 do plus 127.
Barbora: Určite sa pri tomto študenti dopúšťajú nejakých typických chýb. Na čo by si si mali dať pozor?
Lukáš: Ach, áno. Klasika. Prvá vec: zabúdajú písať základ sústavy. Napíšu 1010 a ja neviem, či je to desať, alebo dvetisíc desať.
Barbora: To je dobrý postreh. Kontext je všetko.
Lukáš: Potom je to zlé poradie cifier pri prevodoch. Zvyšky po delení sa musia čítať odspodu nahor. A samozrejme, zamieňanie šestnástkových písmen. A nie je 11, ale 10.
Barbora: A pri tom dvojkovom doplnku?
Lukáš: Tam je najväčšia chyba zabudnúť pripočítať tú jednotku na konci. Alebo si neuvedomiť, že reprezentácia závisí od počtu bitov. Mínus päťka v 8 bitoch vyzerá inak ako v 16 bitoch.
Barbora: Lukáš, toto bola naozaj vyčerpávajúca, ale super užitočná jazda svetom čísel. Prešli sme si všetkým od dvojkovej sústavy, cez šestnástkovú, až po reprezentáciu záporných čísel.
Lukáš: Áno, a dúfam, že si poslucháči odniesli hlavne to, že to nie je žiadna mágia. Sú to len iné spôsoby, ako zapísať to isté množstvo. A ten dvojkový doplnok je len naozaj chytré riešenie problému.
Barbora: Keby si to niekto chcel vizuálne vyskúšať, existujú na webe aj rôzne interaktívne simulátory, kde si môžete prepínať bity a hneď vidíte, ako sa mení hodnota. Určite odporúčam.
Lukáš: Absolútne. Prax je najlepší učiteľ.
Barbora: S týmto sa s vami pre dnešok lúčime. Toto bola posledná téma našej minisérie o základoch informatiky. Lukáš, ďakujem ti veľmi pekne, že si bol s nami.
Lukáš: Ja ďakujem za pozvanie. Bolo mi potešením.
Barbora: A vám, milí poslucháči, ďakujeme za pozornosť. Dúfame, že ste sa niečo nové naučili. Počujeme sa pri ďalšej epizóde podcastu Studyfi. Majte sa krásne!