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