Podcast na Dvojková a šestnáctková soustava

Dvojková a šestnáctková soustava: Kompletní průvodce pro studenty

Podcast

Číselné soustavy: Od nuly k jedničce (a dál!)0:00 / 11:33
0:001:00 zbývá
MartinVíte, co je ta jedna věc, která u maturity z informatiky zaručeně potrápí většinu studentů, když dojde na číselné soustavy? Je to pocit, že se musíte naučit desítky různých postupů pro převody. Ale co kdybych vám řekl, že ve skutečnosti potřebujete jen dva hlavní principy a jeden trik?
EliškaPřesně tak. A ten trik vám ukážeme. Na konci této epizody budete převádět čísla mezi soustavami s takovou jistotou, že vám to bude připadat jako druhá přirozenost.
Kapitoly

Číselné soustavy: Od nuly k jedničce (a dál!)

Délka: 11 minut

Kapitoly

Úvod do číselných soustav

Klíčové číselné soustavy

Převody do desítkové soustavy

Převody z desítkové soustavy

Zkratky mezi soustavami

Záporná čísla a dvojkový doplněk

Shrnutí a časté chyby

Přepis

Martin: Víte, co je ta jedna věc, která u maturity z informatiky zaručeně potrápí většinu studentů, když dojde na číselné soustavy? Je to pocit, že se musíte naučit desítky různých postupů pro převody. Ale co kdybych vám řekl, že ve skutečnosti potřebujete jen dva hlavní principy a jeden trik?

Eliška: Přesně tak. A ten trik vám ukážeme. Na konci této epizody budete převádět čísla mezi soustavami s takovou jistotou, že vám to bude připadat jako druhá přirozenost.

Martin: Posloucháte Studyfi Podcast. Eliško, pojďme na to. Proč vlastně potřebujeme jiné soustavy než tu naši, desítkovou?

Eliška: Skvělá otázka, Martine. My lidé jsme zvyklí na desítkovou soustavu – máme deset prstů, tak to dává smysl. Ale počítače prsty nemají. Mají tranzistory, které znají jen dva stavy: zapnuto nebo vypnuto.

Martin: Takže nula a jedna. To je ta slavná dvojková neboli binární soustava?

Eliška: Přesně. Je to jazyk, kterým mluví veškerá elektronika. Ale pro lidi je zápis dlouhých řad nul a jedniček dost nepraktický. A proto používáme i další, jako je osmičková nebo šestnáctková, které slouží jako takové šikovné zkratky.

Martin: Takže všechny tyhle soustavy jsou vlastně jen různé způsoby, jak zapsat to samé číslo?

Eliška: Přesně tak. Říkáme jim poziční soustavy. To znamená, že hodnota každé číslice závisí na její pozici v čísle. Stejně jako v naší desítkové soustavě, kde v čísle 345 není trojka jenom 'tři', ale 'tři sta', protože je na pozici stovek.

Martin: Dobře, pojďme si je tedy rychle projít. Desítkovou známe, základ 10, číslice 0 až 9. Co dvojková?

Eliška: Dvojková má základ 2 a používá jen číslice 0 a 1, kterým říkáme bity. Číslo 1011 ve dvojkové soustavě tedy neznamená tisíc jedenáct, ale něco úplně jiného. Jeho hodnota je 1 krát 2 na třetí, plus 0 krát 2 na druhou, a tak dále.

Martin: Aha, takže ta pozice určuje mocninu základu. U desítkové to jsou mocniny deseti, u dvojkové mocniny dvou.

Eliška: Přesně jsi to pochopil. A teď ta šestnáctková, neboli hexadecimální. Ta je v informatice super důležitá. Má základ 16. Martine, kolik číslic si myslíš, že potřebuje?

Martin: No, šestnáct? Ale my máme jen číslice od nuly do devíti... to je jen deset symbolů. Kde vezmeme zbytek?

Eliška: Prostě si je půjčíme z abecedy! Po devítce pokračujeme písmeny A, B, C, D, E, F. Písmeno A má hodnotu 10, B je 11, až po F, které je 15.

Martin: Počkat, takže v čísle můžu mít písmeno? To zní trochu jako sci-fi. Číslo 2F je platné číslo?

Eliška: Naprosto! A je to neuvěřitelně užitečné, protože jedna šestnáctková číslice dokáže popsat přesně čtyři dvojkové bity. Ale k tomu se ještě dostaneme. Je to ten slibovaný trik.

Martin: Dobře, mám tedy číslo v nějaké cizí soustavě, třeba to dvojkové 11010. Jak zjistím, kolik to je v naší lidské, desítkové soustavě?

Eliška: To je ten nejjednodušší typ převodu. Použiješ přesně to, co jsme si řekli o pozičních soustavách. Vezmeš každou číslici, vynásobíš ji vahou její pozice a všechno to sečteš.

Martin: A váha pozice je mocnina základu. Takže pro to dvojkové číslo 11010₂...

Eliška: Přesně. Jdeš zprava doleva. Poslední nula je na pozici nula, takže její váha je 2⁰. Jednička před ní je na pozici jedna, váha 2¹, a tak dále. Takže počítáš: 1·2⁴ + 1·2³ + 0·2² + 1·2¹ + 0·2⁰.

Martin: Což je... 16 + 8 + 0 + 2 + 0. To je 26. Takže 11010 ve dvojkové soustavě je naše 26. To dává smysl!

Eliška: Vidíš? A teď zkus to sci-fi číslo, třeba A5 v šestnáctkové soustavě. Pamatuj, že A je 10.

Martin: Dobře... Takže A5₁₆. Pětka je na pozici nula, váha 16⁰, což je 1. Áčko je na pozici jedna, váha 16¹. Takže... 10 krát 16 plus 5 krát 1?

Eliška: Přesně! Geniální!

Martin: To je 160 plus 5, takže 165. Wow, ono to funguje! Dobře, tenhle směr mi je jasný.

Eliška: Teď ten druhý směr. Chceme převést naše 'normální' číslo, třeba tu 26, zpátky do dvojkové soustavy. Na to použijeme metodu postupného dělení se zbytkem.

Martin: To zní trochu víc matematicky. Dělení se zbytkem jsem neměl rád ani na základce.

Eliška: Neboj, je to jednodušší, než to zní. Prostě vezmeš to číslo, 26, a dělíš ho základem soustavy, do které převádíš. Tedy dvojkou. A hlavně si zapisuješ zbytky.

Martin: OK, takže 26 děleno 2 je 13, zbytek 0. Co dál?

Eliška: Teď vezmeš ten výsledek, 13, a zase ho dělíš dvěma. 13 děleno 2 je 6, zbytek 1.

Martin: A pokračuju dál... 6 děleno 2 je 3, zbytek 0. Pak 3 děleno 2 je 1, zbytek 1. A nakonec 1 děleno 2 je 0, zbytek 1.

Eliška: Perfektní. A teď přichází ten nejdůležitější krok, kde studenti nejčastěji chybují. Ty zbytky musíš přečíst odspodu nahoru. Tedy v opačném pořadí, než jsi je získal.

Martin: Takže od posledního k prvnímu... to je 1, 1, 0, 1, 0. Hej! To je 11010₂! To je to číslo, se kterým jsme začínali!

Eliška: Bingo! A tenhle postup funguje pro převod do jakékoliv soustavy. Kdybys chtěl převést 165 do šestnáctkové, dělil bys šestnáctkou.

Martin: 165 děleno 16 je 10, zbytek 5. A 10 děleno 16 je 0, zbytek 10. Zbytky odspodu jsou 10 a 5. A desítka je A... A5! To je ono!

Eliška: Vidíš? Dva základní postupy, a umíš převádět cokoli kamkoli přes desítkovou soustavu.

Martin: Dobře, ale co ten slibovaný trik? Říkala jsi, že převody mezi dvojkovou, osmičkovou a šestnáctkovou jsou jednodušší.

Eliška: Přesně. Tady totiž nemusíš vůbec chodit přes desítkovou soustavu. Je to proto, že 8 je 2³ a 16 je 2⁴. To nám dává úžasnou zkratku.

Martin: Jakou?

Eliška: Pro převod z dvojkové do osmičkové stačí binární číslo rozdělit zprava na skupinky po třech bitech. A každou trojici převedeš samostatně. Pro šestnáctkovou to samé, ale dělíš na čtveřice bitů.

Martin: Ukaž mi příklad. Třeba číslo... 11010110₂.

Eliška: Dobře. Chceme ho převést do šestnáctkové. Rozdělíme ho zprava na čtveřice. Dostaneme 1101 a 0110.

Martin: A teď každou převedu zvlášť? 0110 je... 6. A 1101... to je 8+4+1, takže 13. Což je písmeno D!

Eliška: Přesně tak! Takže výsledek je D6₁₆. Žádné složité sčítání nebo dělení. Jen rozdělit a přeložit. Je to jako kouzlo, viď?

Martin: To je skvělé! A zpátky to funguje stejně? Když mám D6, tak jen převedu D na 1101 a 6 na 0110 a spojím to?

Eliška: Přesně tak. Je to nejrychlejší způsob. Tohle je ten 'aha' moment, který ti u zkoušky ušetří spoustu času a nervů.

Martin: Super. Ale zatím jsme se bavili jen o kladných číslech. Jak počítač ví, že je číslo záporné? Dá před něj prostě mínus?

Eliška: To bohužel nejde, počítač zná jen nuly a jedničky. Místo toho používá fintu zvanou dvojkový doplněk. Nejvyšší, tedy nejlevější bit, si rezervuje jako znaménkový.

Martin: Takže když je první bit 1, číslo je záporné, a když 0, tak kladné?

Eliška: Ano, ale není to tak jednoduché. Kdybychom jen změnili ten jeden bit, nefungovalo by nám správně sčítání a odčítání. Proto ten dvojkový doplněk. Je to chytrý algoritmus.

Martin: Jak tedy udělám z pětky mínus pětku?

Eliška: Vezmeš číslo 5, třeba na 8 bitů, což je 00000101. První krok: invertuješ všechny bity. Z nul uděláš jedničky a naopak. Dostaneš 11111010.

Martin: To je jedničkový doplněk, že?

Eliška: Správně. A teď druhý a poslední krok: k tomuto výsledku přičteš jedničku. Takže 11111010 plus 1 je 11111011. A tohle je reprezentace čísla -5 v počítači.

Martin: Páni. Je to trochu zvláštní postup, ale dává to smysl. A hlavní výhoda je, že počítač pak může odčítání provádět jako sčítání, což je pro něj mnohem jednodušší.

Eliška: Přesně tak. Díky tomuhle triku nepotřebuje speciální obvody pro odčítání.

Martin: Dobře, Eliško, pojďme to shrnout. Co jsou ty nejčastější chyby, na které si dát pozor?

Eliška: První a největší chyba: zapomenout si zbytky u dělení přečíst odspodu nahoru. To je klasika. Vždycky od posledního k prvnímu.

Martin: Rozumím. Co dál?

Eliška: U šestnáctkové soustavy nezapomenout, že písmena A až F mají hodnoty 10 až 15. A správně je použít při násobení.

Martin: A u těch zkratek mezi dvojkovou a šestnáctkovou?

Eliška: Tam je klíčové dělit binární číslo na skupinky opravdu zprava! Když ti vlevo nezbyde celá trojice nebo čtveřice, doplníš si ji zleva nulami.

Martin: Super. Takže shrnuto: pro převod do desítkové sčítám mocniny. Pro převod z desítkové dělím se zbytkem a čtu odspodu. A pro převody mezi dvojkovou, osmičkovou a šestnáctkovou používám rychlé překlady skupin bitů.

Eliška: To je naprosto přesná a dokonalá rekapitulace. Když si zapamatuješ tyhle tři věci, nemůžeš udělat chybu.

Martin: Skvělé! Děkuju moc, Eliško, tohle bylo neuvěřitelně užitečné. Cítím se o dost chytřejší.

Eliška: Rádo se stalo, Martine. Od toho jsme tady. Tak zase příště!

Martin: Mějte se!