autor: Vladimír Vérosta,
Číselné soustavy
Ano, název "číselné soustavy" může vypadat nepochopitelně a odpudivě, nicméně se za ním neskrývá nic zvláštního a tajemného, nic, co bychom každý z nás neznali už s lavic první třídy základní školy, jenom jsme neměli tušení, že je to jeden z projevu pojmu "číselné soustavy". Potřebujeme-li v běžném živote zapsat nejakou číselnou hodnotu, třeba velikost ceny nějakého zboží, počet kilometrů, udávajících vzdálenost do místa, kde hodláme strávit dovolenou, velikost platu, který jsme si vysnili, či sumu, kterou ješte dlužíme příteli, používáme k tomu číslice
0 1 2 3 4 5 6 7 8 9
Číslic je deset a to je důvod, proč těmto číslicím říkáme číslice dekadické, desítkové. Pomocí nich lze napsat čísla např., 25, 314, 8652, ... slovy tedy osmtisícšestsetpadesátdva, kolik to vlastně je? Pouhé čtyři číslice a vyjadřují nějaký počet.
Naslouchejme slovnímu vyjádření a pišme
osm tisíc
šest set
padesát
dva
při číselném zápisu je hodnota čísla 8652 opravdu rovna souctu:
8000
600
50
2
--------
8652
Proč tomu tak je? Kde tady vězí logika věci?
Logika věci spočívá v tom, že jednotlivé číslice nějakého čísla říkají, kolikrát se má k číslu přičíst tzv. mocnina deseti. Součet čísla 8652, který jsme si uvedli, jako na nějaké podivné "účtence" z ještě podivnejší hospůdky se dá napsat i jinak a sice
8 * 1000 + 6 * 100 + 5 * 10 + 2 = 8652
nebo taky, poněkud překvapivěji:
8 * 10 * 10 * 10 + 6 * 10 * 10 + 5 * 10 + 2 * 1 = 8652
Součinu 10 * 10 * 10 je v matematice zvykem říkat "třetí mocnina deseti" neboli "deset na třetí", 103
podobně součin 10 * 10 je znám jako "druhá mocnina deseti", "deset na druhou", 102
kdybychom potřebovali zapsat nějakou hodnotu větší než 10000, vyskytl by se v našem souctui součin 10 * 10 * 10 * 10, tedy "čtvrtá mocnina deseti", 104.
Samotné číslo 10 (v součinu 5 * 10) se nazývá "první mocnina deseti", "deset na prvou", 101,
pro úplnost, aby nám všechno zapadalo scénáře, který se před námi objevuje,
ta samotná dvojka na konci je uvedena jako 2 * 1 (ano, dvakrát jedna).
A číslo jedna je výsledkem matematické operace "nultá mocnina deseti", "deset na nultou", 100.
A doufejme, že poslední kotrmelec pri zápisu našeho pokusného císla 8652
by mohl vypadat následovne:
8 * 103 + 6 * 102 + 5 * 101 + 2 * 100 = 8652
jinými slovy, krátký zápis oněmi čtyřmi číslicemi vyjadřuje jednoduchou, srozumitelnou a přesnou formou, kolik kterých mocnin deseti se má sečíst, abychom se dobrali kýžené hodnoty.
Zkusme pro ilustraci nejaké jiné, větší číslo, např. 2617899, to je charakterizováno následujícím "účtenkovým" součtem
2000000
600000
10000
7000
800
90
9
-------------
2617899
nebo taky
2*106 + 6*105 + 1*104 + 7*103 + 8*102 + 9*101 + 9*100
Uznejte, že elegantní vyjádření dané hodnoty jako 2617899 je nejlepší.
Uvedenému způsobu zápisu číselných hodnot se říká "dekadická číselná soustava", resp. rovnocenně "desítková číselná soustava". Jsme na ni absolutně zvyklí, máme ji zažitou od nepaměti, většina z nás si pro výpočty nedokáže představit jiné postupy, připadá nám zcela přirozená a pro náš život jako stvořená. A zejména je stvořená pro život člověka, homo sapiens, rozumného živočicha, na jehož rukou nalezneme právě deset prstů, které jsou nepochybně příčinou toho, že desítkovou soustavu pokládáme za nám "přirozenou".
Tak a konec a padá opona nad prvním dějstvím, kde jsme si objasnili a snad doufejme i vysvětlili co to je "desítková číselná soustava", a v dějství pořadově druhém se podívejme na to, jak se číselné hodnoty dají ukládat do paměti číslicových počítačů, o kterých je tady řeč!
========================================================================
Řekli jsme si, že člověk má většinou deset prstů (kromě tesařů a truhlářů :-) ), bohužel počítače jsou na tom podstatně hůř, jejich konstrukce je taková, že mají, obrazně řečeno, jen prsty dva, ano na jednotlivých bitech paměti počítače se dá uložit, zapsat buď hodnota nula nebo hodnota jedna. Nic víc nic míň! Podle toho, zda v daném místě paměťového obvodu je napětí (jednička) nebo není napětí (nula). Nebo, jestli jste zatížení na východní filozofie jako já, tak si můžete myslet, že počítače jsou vystaveny na principech Jang (1) a Jing(0). Nic jiného tam není! :-))))
Dvojková soustava pracuje stejně jako desítková s tím rozdílem, že místo mocnin 10 se při vyjadřování hodnoty nějakého čísla používá hodnota 2.
Takže: např. dvojkové číslo 10110 je elegantním zápisem součtu
1 * 24 + 0 * 23 + 1 * 22 + 1 * 21 + 0 * 20 = 16 + 0 + 4 + 2 + 0 = 22 /pozor celá rovnice je v desítkové soustavě!/
Někdy, pokud není jasné, ve které soustavě je dané číslo zapsáno, se používá dolní index, který celou záležitost objasňuje, např. 101102 = 2210
S čísly, zapsanými ve dvojkové soustavě, se při aritmetických operacích zachází principiálně úplně stejně jako s čísly dekadickými, musíme mít ovšem neustále na paměti, že k dispozici máme pouze dvě číslice, 0 a 1. K přenosu 1 do vyšších řádů zde dochází samozřejmě mnohem, mnohem rychleji než při desítkovém počítání.
Zatímco desítkově
1110 + 1010 = 2110
tak tatáž čísla, chápaná tentokrát dvojkově dají úplně jiný výsledek:
112 + 102 = 1012
Je to proto, že 0 + 1 sice je 1, 1 + 1 je však hodnota, kterou jedinou číslicí v dvojkové soustavě nevyjádříme, takže musí dojít k přenosu 1 do vyššího řádu mocnin 2, tedy dostaneme 10! Ano, dvojkově 1 + 1 = 10! S jedničkou z nižšího řádu pak dostaneme dohromady 101!
Zápis číselných hodnot ve dvojkové soustavě, jakkoliv je to forma pro počítače potřebná a nutná, není pro člověka a jeho chápání moc přijatelná. Například čísla 01110100010011101, 111110100011100, atd. mají jistě právo na existenci, ale pro běžný provoz, práci s nějakými hodnotami, řekněme to na rovinu, jsou zcela nestravitelná, nečitelná, nepoužitelná.
Proto se v praxi daleko častěji používá šestnáctková neboli hexadecimální číselná soustava. Zejména v souvislosti s tím, že základní paměťovou jednotkou moderních počítačů je jeden byte.
Desítková číselná soustava má deset číslic, šestnáctková soustava tedy musí mít číslic šestnáct, tady jsou:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Kromě známých deseti arabských číslic se tady, víceméně z nouze, v roli číslic používá prvních šest písmen abecedy. Teď by to chtělo udělat si malý přehled o tom, jak budou vypadat hodnoty od nuly do patnácti vyjádřené dvojkově, desítkově a šestnáctkově.
dvojkově | desítkově | šestnáctkově |
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 | 10 | A |
1011 | 11 | B |
1100 | 12 | C |
1101 | 13 | D |
1110 | 14 | E |
1111 | 15 | F |
Jeden byte, už to tady šlo, jako základní kámen všeho počítačového, má osm bitů, tedy 4 bity v horní a 4 bity ve své dolní polovině, např. číslo 0100 1101 může být hodnotou nějakého bajtu, dvojkové vyjádření se ale používá velmi zřídka, protože daleko lepší je psát 4D, tedy šestnáctkově. Mnohem hutnější, přehlednější s daleko lepší vypovídací hodnotou pro případného čtenáře! Např. pokud jde o hexadecimální výpis obsahu nějakého obecného souboru, jehož obsah je záhodno prozkoumat (a najít tak případnou příčinu nějakého problému).
Podobně jako v binární nebo dekadické soustavě, i v soustavě šestnáctkové se dá běžně aritmeticky počítat, každá jen trochu lepší elektronická kalkulačka má ve své výbavě hexadecimální počítání. Všechny děti se v základní škole učí malou dekadickou násobilku, aby jji uměly "jak když bičem mrská", myslím, že obsahuje 45 součinů, kdybychom chtěli totéž pro šestnáctkovou soustavu, museli bychom se nazpaměť naučit 120 součinů! Naštěstí je násobení komutativní operace.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
1 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F |
2 | 04 | 06 | 08 | 0A | 0C | 0E | 10 | 12 | 14 | 16 | 18 | 1A | 1C | 1E | |
3 | 09 | 0C | 0F | 12 | 15 | 18 | 1B | 1E | 21 | 24 | 27 | 2B | 2E | ||
4 | 10 | 14 | 18 | 1C | 20 | 24 | 28 | 2C | 30 | 34 | 38 | 3C | |||
5 | 19 | 1E | 23 | 28 | 2D | 32 | 37 | 3C | 41 | 46 | 4B | ||||
6 | 24 | 2A | 30 | 36 | 3C | 42 | 48 | 4E | 54 | 5A | |||||
7 | 31 | 38 | 3F | 46 | 4D | 54 | 5B | 62 | 69 | ||||||
8 | 40 | 48 | 50 | 58 | 60 | 68 | 70 | 78 | |||||||
9 | 51 | 5A | 63 | 6C | 75 | 7E | 87 | ||||||||
A | 64 | 6E | 79 | 83 | 8D | 96 | |||||||||
B | 79 | 84 | 8F | 9A | A5 | ||||||||||
C | 90 | 9C | A8 | D2 | |||||||||||
D | A9 | B6 | C3 | ||||||||||||
E | C4 | D2 | |||||||||||||
F | E1 |