Obsah    Kapitoly: 12345678,  |  X.1X.2X.3X.4,  |  Y1 Y2 

X.4) Převody mezi soustavami

Každý, kdo chce programovat by měl vědět, jak převádět čísla ze soustavy do soustavy. Pro nás pro lidi je samozřejmě nejpřirozenější soustava desítková. A právě proto má počítač mnohem radši úplně jiné soustavy. Hexadekadickou (pro nás lidi: šestnáctkovou) a binární (dvojkovou). S dvojkovou jste se již trochu seznámili v kapitolách věnovaným bajtům, ale šestnáctková je pro vás nová. No, nebudu moc vykládat, radši vám to ukáži:

Binární čísla
Dekadická čísla
Hexadekadická čísla
0000
0
0
0001
1
1
0010
2
2
0011
3
3
0100
4
4
0101
5
5
0110
6
6
0111
7
7
1000
8
8
1001
9
9
1010
00
A
1011
11
B
1100
12
C
1101
13
D
1110
14
E
1111
15
F
10000
16
10
...
...
...
01111111
127
7F
10000000
128
8
...
...
...
11111111
255
FF
Vidíte, že u šestnáctkové soustavy si musíme vypomáhat písmeny od A do F. Ty nahrazují čísla od 10 do 15. Když chceme číslo označit v šestnáctkové soustavě, použijeme při tom písmenko "H" (např. 3A2FH), aby se nepletla s ostatními soustavami. Takže číslo 10H, není starých dobrých 10 ale 16. Samozřejmě 16 v desítkové soustavě.

Rozluštit, kolik je kolik v každé soustavě není zase tak těžké, vyžaduje to spíš jen trochu cviku. Obecně platí, to, co jsme si už vyzkoušeli při rozkládání bajtů na bity. Číslo, které je základem soustavy postupně mocníme, podle toho, na kterém místě stojí a k tomu jej ještě násobíme onou číslicí. Nakonec ještě všechny hodnoty sečteme. Slovy to asi není moc přehledné. Proto malý příklad.

Vezmeme si například číslo 3205,4 (v desítkové soustavě). Jejím základem je 10.

3*103 + 2*102 + 0*101 + 5*100 + 4*10-1 = 3000 + 200 + 0 + 5 + 0,4 = 3205,4


Exponenty v příkladu 3,2,1,0,-1 jsou takové, jako je pořadové číslo příslušné cifry (číslováno od 0). 3 je na čtvrté pozici, proto je u ní základ soustavy (10) umocněn na třetí. 2 je na třetí pozici, proto je základ umocněn na druhou atd.

Pokud si vzpomínáte, stejné to bylo s dvojkovou soustavou:

101010 = 1*26 + 0*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20 = 64+0+16+0+4+0+1 = 85


A teď i v šestnáctkové soustavě. Jak byste převedli například C3EH? Máte pravdu, je to docela jednoduché. Ještě dodávám, že písmena A až F nahrazují čísla 10 až 15.

C3EH = 12*162 + 3*161 + 14*160 = 3072 + 48 + 14 = 3134


No a teď si číslo pro kontrolu převeďte zpět do šestnáctkové soustavy. Není to zase tak složité. Dělí se základem soustavy, přičemž si musíte dávat pozor na zbytky. Ty vám totiž ukazují aktuální cifru. Takto:

Pozice 0: 3134 / 16 = 195 zbytek 14, neboli EH Pozice 1: 195 / 16 = 12 zbytek 3, neboli 3H Pozice 2: 12 / 16 = 0 zbytek 12, neboli CH ------------------------------------------------------- C3EH

Pokud stále tápete zkuste to na dekadickém dělení.

Pozice 0: 342 / 10 = 34 zbytek 2 Pozice 1: 34 / 10 = 3 zbytek 4 Pozice 2: 3 / 10 = 0 zbytek 3 --------------------------------------------------------- 342

Nicméně pozor na možný omyl!

Pozice 0: 205 / 10 = 20 zbytek 5 Pozice 1: 20 / 10 = 2 zbytek 0 !!!!! Pozice 2: 2 / 10 = 0 zbytek 2

Nakonec zkuste převést 127 do dvojkové soustavy (základ je 2):

Pozice 0: 127 / 2 = 63 zbytek 1 Pozice 1: 63 / 2 = 31 zbytek 1 Pozice 2: 31 / 2 = 15 zbytek 1 Pozice 3: 15 / 2 = 7 zbytek 1 Pozice 4: 7 / 2 = 3 zbytek 1 Pozice 5: 3 / 2 = 1 zbytek 1 Pozice 6: 1 / 2 = 0 zbytek 1 ------------------------------------------------------- 1111111

Co se týče převodů, nezbývá mi nic jiného, než pro vás vymyslet nějaké příklady. Přeci jenom bych rád upozornil na to, že počítání s těmito soustavami nemusíte zvládat úplně bravurně, nicméně byste měli znát základy. Brzy přijdete na to, že je někdy mnohem snazší používat čísla v šestnáctkové soustavě a že vám to možná usnadní práci.

Cvičení:
1) Kolik je 138 DEC (desítkově) = .. HEX (šestnáctkově) a ………. BIN (binárně)
2) Kolik je ..... DEC = ........ HEX 01010111 BIN
3) Kolik je 321 DEC = ........ HEX ........ BIN
4) Kolik je ..... DEC = AD HEX ........ BIN
5) Kolik je 1024 DEC = ........ HEX
Výsledky: 1) 8AH, 10001010B 2) 87D, 57H 3) 141H, 101000001B 4) 173D, 10101101B 5) 400H


Předchozí kapitola Nahoru Následující kapitola