 |
| Obsah
Kapitoly:
1,
2,
3,
4,
5,
6,
7,
8, |
X.1,
X.2,
X.3,
X.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