Číselné soustavy, převody, příklady, online převodníky
Transkript
Číselné soustavy, převody, příklady, online převodníky
ČÍSELNÉ SOUSTAVY Číselné soustavy V běžném životě používáme soustavu desítkovou. Desítková se nazývá proto, že má deset číslic – 0 až 9 a v jednom řádu tak dokáže rozlišit deset různých stavů. Mikrokontroléry (a obecně všechny logické obvody) ale rozeznávají pouze stavy dva – 0 a 1 (resp. nízkou a vysokou úroveň elektrického signálu). Veškerá čísla tak musí být interně reprezentována pouze pomocí „nul a jedniček“. Číselnou soustavu, která pro reprezentaci čísel využívá pouze dvou číslic, nazýváme soustavou dvojkovou nebo binární. V tabulce si také můžete povšimnout soustavy šestnáctkové. Jak již název napovídá, bude rozeznávat šestnáct různých stavů v jednom řádu. Protože však máme pouze deset číselných znaků, pro zápis zbylých šesti používáme písmena A až F. Tato soustava se často používá v počítačích a programech mikrokontrolérů jako přehlednější alternativa k zápisu čísel v binárním tvaru. Povšimněte si, že čtyřbitové číslo ve dvojkové soustavě (tedy číslo do velikosti čtyř cifer) můžeme zapsat v šestnáctkové soustavě elegantně s použitím pouze jednociferného čísla. ČÍSELNÉ SOUSTAVY Číselné soustavy Desítková (dekadická) Dvojková (binární) Šestnáctková (hexadecimální) 0 0 0 1 1 1 2 10 2 3 11 3 4 100 4 5 101 5 6 110 6 7 111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F 16 10000 10 17 10001 11 … 255 … … 11111111 … … FF … Vyjádření vybraných číselných hodnot ve třech různých číselných soustavách ČÍSELNÉ SOUSTAVY Převody mezi soustavami V souladu s tím, co jsme uvedli v úvodu, můžeme např. číslo 2546 v desítkové soustavě zapsat ve tvaru: 254610 = 2 ·1000 + 5 · 100 + 4 · 10 + 6 · 1 = 2 · 103 + 5 · 102 + 4 · 101 + 6 · 100. (Pozn.: aby bylo zřejmé, v jaké soustavě je číslo zapsáno, budeme k nim přidávat index 2, 10 nebo 16.) Ze zápisu je na první pohled vidět, že každý vyšší řád vyjadřuje desetkrát větší hodnotu. Je to dáno právě tím, že v něm přičítáme jedničku až poté, co jsme ji přičetli desetkrát v řádu nižším. V soustavě dvojkové bude postup obdobný. Každý vyšší řád však bude vyjadřovat hodnotu pouze dvakrát vyšší, protože máme pouze dvě číslice. V praxi to bude znamenat, že zde místo mocnin deseti budou mocniny dvou. Např. číslo 1001111100102 tak můžeme zapsat ve tvaru: 1001111100102 = 1 · 211 + 0 · 210 + 0 · 29 + 1 · 28 + 1 · 27 + 1 · 26 + 1 · 25 + 1 · 24 + 0 · 23 + 0 · 22 + 1 · 21 + 0 · 20 (Pozn.: nultá mocnina jakéhokoliv čísla je rovna jedné, tedy 100 = 20 = 160 = 1.) Záměrně jsem volil trochu delší číslo, abych vám ukázal, kolik cifer potřebujete v binární soustavě k vyjádření poměrně malé číselné hodnoty. Těchto dvanáct jedniček a nul není totiž nic jiného, než binární vyjádření čísla 254610 uvedeného výše. Číslo v šestnáctkové soustavě můžeme napsat podobným způsobem. Např.: 9F216 = 9 · 162 + 15 · 161 + 2 · 160 Převod čísla ze soustavy dvojkové a šestnáctkové (nebo jakékoliv jiné) do soustavy desítkové Převod do soustavy desítkové je velice snadný. Stačí totiž číslo rozepsat výše uvedeným způsobem a pak mocniny jednoduše sečíst. Ukážeme si to na příkladu. ČÍSELNÉ SOUSTAVY Příklad 1: převeďte čísla 11011002 a 6C16 do desítkové soustavy. Řešení: 11011002 = 1 · 26 + 1 · 25 + 0 · 24 + 1 · 23 + 1 · 22 + 0 · 21 + 0 · 20 = 1 · 64 + 1 · 32 + 0 · 16 + 1 · 8 + 1 · 4 + 0 · 2 + 0 · 1 = 10810 6C16 = 6 · 161 + 12 · 160 = 96 + 12 = 10810 Protože budeme u mikrokontrolérů často pracovat s binárním vyjádřením čísla, je vhodné si zapamatovat alespoň prvních osm mocnin čísla dvě. Jsou uvedeny v níže uvedené tabulce. Mocniny si lze také velice snadno odvodit. Začnete s jedničkou a všechny další dostanete jednoduše vynásobením dvěma (1, 2, 4, 8, …). 27 26 25 24 23 22 21 20 128 64 32 16 8 4 2 1 bit 7 bit bit bit bit bit bit bit 0 (MSB) 6 5 4 3 2 1 (LSB) Popis osmibitového binárního čísla. MSB (most-significant bit) – nejvíce platný bit, LSB (least-significant bit) – nejméně platný bit. Osmibitové binární číslo tvoří jeden byte [bajt]. Převod čísla ze soustavy desítkové do soustavy dvojkové, šestnáctkové nebo jakékoliv jiné Způsob převodu je zde o něco složitější než v předchozím případě. Nejdříve si ukážeme obecný postup, kterým lze převést číslo z desítkové do jakékoliv jiné soustavy. Spočívá v opakovaném dělení dekadického čísla v našem případě buď dvojkou pro převod do soustavy binární, nebo šestnáctkou, chceme-li číslo vyjádřit v hexadecimálním tvaru. Hledaný tvar čísla dostaneme, zapíšeme-li zbytky z dělení v opačném pořadí. Ke snazšímu pochopení poslouží následující příklad. ČÍSELNÉ SOUSTAVY Příklad 2: Převeďte číslo 10810 do dvojkové a šestnáctkové soustavy. Řešení: 108 : 8 = 13, 13 : 8 = 1, 1 : 8 = 0, zbytek 4 zbytek 5 zbytek 1 Zbytky po dělení opět zapíšeme v opačném pořadí a dostáváme požadovaný výsledek, tedy: 10810 = 1548. Nezapomeňte na to, že po opakovaném dělení nám nakonec musí vyjít nula, musíme tedy dělit i čísla, která jsou menší než dělitel (viz příklad výše). Uvedený postup lze aplikovat na převod čísla z desítkové do kterékoliv jiné číselné soustavy. Kromě dvojkové, desítkové a šestnáctkové číselné soustavy se někdy můžete setkat i se soustavou osmičkovou (dnes již však spíše výjimečně). V osmičkové (oktálové) soustavě se používá pouze osm číslic – 0 až 7. Jedna číslice v osmičkové soustavě odpovídá právě třem číslicím v soustavě binární. Princip převodu by byl úplně stejný, jen byste číslo dělili osmi. Převody mezi soustavou dvojkovou a šestnáctkovou Na obrázku je naznačeno, jak snadno lze realizovat převody mezi těmito dvěma soustavami. Binární číslo si zprava rozdělte na čtveřice s použitím tabulky ho snadno vyjádříte v šestnáctkovém tvaru. Stejným způsobem bychom postupovali v případě převodu opačným směrem. Nezapomeňte, že každý znak v šestnáctkové soustavě (neplatí pro ten v nejvyšším řádu) musíme nahradit čtyřmi znaky v soustavě dvojkové. Kdybychom například číslo 216 nahradili pouze číslem 102 místo 00102 bychom se k chybnému výsledku. dostali ČÍSELNÉ SOUSTAVY Převod mezi soustavou dvojkovou a šestnáctkovou: Při převodu mezi soustavou osmičkovou a binární bychom postupovali stejným způsobem s tím rozdílem, že bychom binární číslo nerozdělili na čtveřice, ale na trojice. S použitím tabulky by nám převod neměl činit větší potíže. V praxi lze použít online převodníky na internetu – např.: https://prevodyonline.eu/cz/ciselne-soustavy.html Nebo zadáme do vyhledávače, že hledáme převodník mezi číselnými soustavami.