ČÍ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.