Dříve než se pustíme do programování, připomeneme si stručně
číselné soustavy. Každá soustava je určena celým kladným
číslem z ≥ 2, kterému říkáme základ
soustavy. Soustava o základu z
používá číslice 0, 1, …, z - 1.
V dalším textu zmíníme soustavy o základech 2, 8, 10 a 16.
Pokud nebude z kontextu zřejmé, jakou soustavu používáme,
budeme základ soustavy uvádět jako dolní index.
Např. 100010102 = 8a16 = 2128 = 13810.
Soustava o základu 10 se nazývá
desítková (dekadická,
angl. decimal).
Používá číslice 0 až 9. Soustavě o základu 2 říkáme
dvojková (binární,
angl. binary).
Používá pouze dvě číslice 0 a 1. Číslo zapsané ve dvojkové
soustavě je tedy posloupnost nul a jedniček, tzv. bitů.
Bit
(z angl. binary digit) je jiný
název pro dvojkovou číslici. Např. 1001 je dvojkový zápis
hodnoty 9 v desítkové soustavě. Při převodu čísla z desítkové
soustavy do dvojkové postupujeme takto: číslo vydělíme
celočíselně dvěma. Zbytek po celočíselném dělení
(má hodnotu 0 nebo 1) představuje jednu číslici ve dvojkovém zápise
čísla.
Výsledek dělení opět vydělíme celočíselně dvěma a zjistíme
zbytek po dělení. Celý postup opakujeme tak dlouho, dokud je
výsledek dělení nenulový. Dvojkový zápis čísla je tvořen zbytky
nalezenými v předchozích krocích. Tyto zbytky zapíšeme v opačném
pořadí, než jsme je získali.
Při převodu čísla z dvojkové soustavy do desítkové postupujeme
ve dvojkovém zápise zprava a za každou jedničku na n-tém místě
přičteme hodnotu 2n. Pozice číslujeme od 0.
Soustava o základu 16 se nazývá
šestnáctková (hexadecimální,
angl. hexadecimal).
Používá 15 číslic: 0, 1, …, 9, a, b, …, f.
Např. 2a je šestnáctkový zápis hodnoty 2 * 16 + 10,
tj. 42 desítkově.
Při převodu čísla z desítkové soustavy do
šestnáctkové postupujeme obdobně jako při převodu do dvojkové
soustavy. V tomto případě však nedělíme dvěma nýbrž šestnácti.
Každý zbytek po celočíselném dělení šestnácti představuje ve
výsledném zápise jednu šestnáctkovou číslici.
Při převodu z šestnáctkové soustavy do desítkové probíráme
jednotlivé číslice šestnáctkového zápisu a za každou
číslici c přičteme k výsledku součin
c * 16n,
kde n je pořadí číslice
v šestnáctkovém zápise, počítáno zprava.
Převod z dvojkové soustavy do šestnáctkové provádíme takto:
posloupnost nul a jedniček rozdělíme na čtveřice (je-li potřeba,
doplníme vlevo nuly) a každou čtveřici převedeme zvlášť na jednu
šestnáctkovou číslici.
Soustava o základu 8 se nazývá
osmičková (oktalová,
angl. octal).
Používá číslice 0, 1, …, 7. Např. 33 je osmičkový zápis
hodnoty 3 * 8 + 3, tj. 27 desítkově.
Při převodu z desítkové soustavy do osmičkové a z osmičkové do
desítkové postupujeme jako v případě šestnáctkové soustavy, pouze
místo konstanty 16 používáme 8. Převod z dvojkové soustavy do
osmičkové provádíme takto: posloupnost nul a jedniček rozdělíme na
trojice (je-li potřeba, doplníme vlevo nuly) a každou trojici
převedeme na jednu osmičkovou číslici.
Dále si ukážeme, jak zapisovat ve dvojkové soustavě desetinná
čísla, tj. čísla, jejichž zápis obsahuje desetinnou (řádovou)
čárku. Protože první počítače a první programovací jazyky byly
navrženy v zemích, v nichž se místo řádové čárky používá řádová
tečka, používáme v programování řádovou tečku. Čísla za řádovou
tečkou představují záporné řády. Např. číslo 0.1 ve dvojkové
soustavě je desítkově 2-1 a číslo 0.01 dvojkově je
desítkově 2-2.
Při převodu desetinného čísla
z desítkové soustavy do dvojkové převedeme nejprve celou část
čísla a pak část desetinnou.
Převod desetinné části provádíme
takto: číslo vynásobíme dvěma, rozdělíme na celou a desetinnou
část (celá část bude 0 nebo 1) a pro desetinnou část tento postup
opakujeme tak dlouho, dokud je desetinná část nenulová, nebo dokud
nemáme požadovaný počet míst za řádovou tečkou.
Číslice získané
v jednotlivých krocích jako celé části mezivýsledků tvoří
periodický rozvoj zápisu čísla ve dvojkové soustavě.
Při převodu čísla z dvojkové soustavy do desítkové postupujeme
zleva doprava a za každou jedničku na
n-tém místě za řádovou
tečkou přičteme 2-n.
Převod čísla z dvojkové soustavy do šestnáctkové opět rozdělíme
na dva kroky: převod celé části a převod zlomkové části.
Převod zlomkové části provádíme takto: nuly a jedničky za řádovou
tečkou rozdělíme po čtyřech (je-li potřeba, doplníme vpravo nuly)
a každou čtveřici převedeme na jednu šestnáctkovou číslici.
Např. 0.0110 dvojkově je 0.6 šestnáctkově.
Při převodu čísla z dvojkové soustavy do osmičkové rozdělíme
číslice za řádovou tečkou na trojice (je-li potřeba, doplníme
vpravo nuly) a každou trojici převedeme na jednu osmičkovou
číslici. Např. 0.01101 dvojkově je 0.32 osmičkově.
Úloha 1
Převeďte z desítkové soustavy do dvojkové.
Úloha 2
Převeďte z dvojkové soustavy do desítkové.
Úloha 3
Převeďte z desítkové soustavy do šestnáctkové.
Úloha 4
Převeďte z šestnáctkové soustavy do desítkové.
Úloha 5
Převeďte z dvojkové soustavy do šestnáctkové a osmičkové.
Úloha 6
Doplňte věty.
Otázky a odpovědi
Studentka:
Mistře, vím, že v počítači jsou data uložena jako posloupnost
bitů. Takže chápu, proč si povídáme o dvojkové soustavě.
K čemu je však šestnáctková a osmičková soustava?
Java guru:
Šestnáctková i osmičková soustava umožňují úspornější zápis
posloupnosti bitů, tj. obsahu paměti počítače. Každá číslice
v šestnáctkové soustavě reprezentuje čtveřici a každá číslice
v osmičkové soustavě trojici bitů.