Co je poziční soustava
V desítkovém čísle 4 095 nemá čtyřka hodnotu 4, ale 4 000, protože stojí na místě tisíců. Každá pozice násobí číslici mocninou 10 (1, 10, 100, 1 000…). To je poziční soustava a základ je počet různých číslic, které se používají: v desítkové soustavě deset.
Dvojková soustava funguje stejně, ale se základem 2: existují jen 0 a 1 a každé místo má dvojnásobnou hodnotu než to předchozí. Šestnáctková soustava má základ 16: šestnáct číslic je 0 až 9 a písmena A až F a každé místo má šestnáctinásobnou hodnotu než to předchozí. Počítače pracují ve dvojkové soustavě, protože obvod musí rozlišovat jen dva stavy (vypnuto a zapnuto), a šestnáctková soustava je zkrácený zápis těchto bitů.
| Pozice (zprava doleva) | Hodnota ve dvojkové soustavě | Hodnota v šestnáctkové soustavě |
|---|---|---|
| 1. | 1 | 1 |
| 2. | 2 | 16 |
| 3. | 4 | 256 |
| 4. | 8 | 4 096 |
| 5. | 16 | 65 536 |
| 6. | 32 | 1 048 576 |
| 7. | 64 | 16 777 216 |
| 8. | 128 | 268 435 456 |
Z dvojkové na desítkovou, ručně
Každá číslice se napíše s hodnotou svého místa a sečtou se jen místa, kde je jednička. Příklad s 1101: zprava doleva mají místa hodnoty 1, 2, 4 a 8.
- Napište číslo a pod něj hodnotu každé pozice: 1 1 0 1 nad 8 4 2 1.
- Všimněte si, co je na každém místě: jednička na místě osmičky, jednička na místě čtyřky, nula na místě dvojky a jednička na místě jedničky.
- Přeskočte místa, kde je nula (tady to na místě dvojky).
- Sečtěte: 8 + 4 + 0 + 1 = 13. Takže 1101 ve dvojkové soustavě je 13 v desítkové.
S více číslicemi je to totéž: 11111111 je 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, největší hodnota, která se vejde do 8 bitů. A 10110110 je 128 + 32 + 16 + 4 + 2 = 182.
Z desítkové na dvojkovou, postupným dělením
Číslo se opakovaně dělí dvěma a zapisuje se zbytek každého dělení (vždy 0 nebo 1), dokud nevyjde podíl 0. Zbytky přečtené zdola nahoru tvoří dvojkové číslo. Příklad s 45:
- 45 ÷ 2 = 22, zbytek 1
- 22 ÷ 2 = 11, zbytek 0
- 11 ÷ 2 = 5, zbytek 1
- 5 ÷ 2 = 2, zbytek 1
- 2 ÷ 2 = 1, zbytek 0
- 1 ÷ 2 = 0, zbytek 1
Přečteme-li zbytky zdola nahoru, vyjde 101101. Pro kontrolu sečtěte: 32 + 8 + 4 + 1 = 45.
Existuje i alternativní metoda, kterou mnozí preferují: odečítat mocniny dvou od největší po nejmenší. Pro 200: vejde se 128 (zbývá 72), vejde se 64 (zbývá 8), nevejde se 32 ani 16, ale vejde se 8 (zbývá 0). Použitá místa jsou 128, 64 a 8, takže 200 = 11001000.
Šestnáctková soustava: šestnáct číslic a tabulka po ruce
Protože neexistují číslice pro 10 až 15, používají se písmena A, B, C, D, E a F. Jedna šestnáctková číslice odpovídá přesně čtyřem bitům (jeden «nibble»), a proto je tak praktická: bajt o 8 bitech se zapíše jen dvěma šestnáctkovými číslicemi.
Chcete-li převést šestnáctkové číslo na desítkové, vynásobte každou číslici mocninou 16 svého místa a sečtěte. Například 3F = 3 × 16 + 15 = 63 a A3 = 10 × 16 + 3 = 163.
| Desítkově | Dvojkově (4 bity) | Osmičkově | Šestnáctkově |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
Proč se používá šestnáctková soustava: bajty, barvy a adresy
Bajt je 8 bitů a pohybuje se od 0 do 255 (00000000 až 11111111). Psát bity ručně je pomalé a náchylné k chybám; v šestnáctkové soustavě je tentýž bajt zapsán dvěma znaky, od 00 do FF. Chcete-li převést dvojkové číslo na šestnáctkové, rozdělte bity zprava do skupin po čtyřech a každou skupinu nahraďte číslicí z tabulky. Příklad: 11010111 se rozdělí na 1101 a 0111, což je D a 7, takže hodnota je D7. Desítkově je to 13 × 16 + 7 = 215.
Nejznámějším případem jsou webové barvy. V #FF8800 jsou tři bajty: FF pro červenou (255), 88 pro zelenou (136) a 00 pro modrou (0). Je to sytě oranžová: všechna červená, o něco víc než polovina zelené a žádná modrá. Šestnáctková soustava se objevuje také v adresách paměti, chybových kódech a síťových identifikátorech.
Z textu na dvojkový kód pomocí ASCII
Počítač ukládá každé písmeno jako číslo a toto číslo jako bity. V tabulce ASCII je A 65, což je ve dvojkové soustavě o 8 bitech 01000001. Slovo «Hi» jsou dvě písmena: H je 72 (01001000) a i je 105 (01101001), takže se zapíše 01001000 01101001. U slova «Hola» jde o 72, 111, 108 a 97, tedy 01001000 01101111 01101100 01100001, šestnáctkově 48 6F 6C 61.
Nástroj používá kódování UTF-8: u základních anglických písmen zabírá každý znak jeden bajt o 8 bitech, ale české písmeno s diakritikou, například č nebo ř, nebo emoji zabírá několik bajtů, takže dává víc než 8 bitů. Například ñ jsou dva bajty: 11000011 10110001 (C3 B1 šestnáctkově).
Jak to všechno udělat pomocí nástroje
Převodník «Binární, desítková a hex» slouží ke kontrole vašich ručních výpočtů nebo k bezchybnému zpracování dlouhých čísel.
- Napište číslo do pole jeho soustavy: «Desítková (základ 10)», «Dvojková (základ 2)», osmičková nebo «Šestnáctková (základ 16)». Ostatní tři se vyplní samy.
- Pokud číslice do soustavy nepatří (například 2 ve dvojkové), nástroj vás upozorní.
- U textu ho napište do pole «Text» a podívejte se na «Binární (8 bitů na znak)» a na šestnáctkový zápis po bajtech. Můžete také vložit bity po skupinách po 8 a vrátit se k textu.
- Pro méně obvyklé soustavy použijte «Libovolná soustava (od 2 do 36)»: zvolíte výchozí soustavu, cílovou soustavu a číslo.
Omezení: převádí jen nezáporná celá čísla (bez desetinných míst a znaménka) a nepřidává za vás nuly zleva, takže pokud chcete pevných 8 bitů, musíte doplnit ručně (13 je 00001101). Nic z toho, co napíšete, neopustí váš prohlížeč.
Časté chyby
- Číst zbytky obráceně: při postupném dělení je první zbytek číslice zcela vpravo, ne zcela vlevo.
- Zapomenout na nuly zleva, když jsou potřeba: 13 je 1101, ale jako bajt 00001101. Záleží na tom, když je délka součástí údaje, například u barvy nebo síťové masky.
- Zaměnit při kopírování písmeno O s nulou nebo šestnáctkové B (11) s osmičkou. V šestnáctkové soustavě mají písmena stejnou hodnotu malá i velká, ale nejsou to totéž co číslice.
- Ponechat při převodu předponu 0x nebo znak #: jsou to jen značky, že jde o šestnáctkové číslo, a před vložením je třeba je odstranit.
- Myslet si, že 10 ve dvojkové soustavě je deset: je to dvě. Totéž «10» má hodnotu 2, 10 nebo 16 podle soustavy.
Vyřešená cvičení k procvičení
Zkuste každé vyřešit, než se podíváte na odpověď, a poté zkontrolujte pomocí nástroje.
- Převeďte 10110110 na desítkovou a šestnáctkovou. Odpověď: 128 + 32 + 16 + 4 + 2 = 182; ve skupinách po čtyřech 1011 0110 = B6.
- Převeďte 200 na dvojkovou a šestnáctkovou. Odpověď: 11001000 a C8 (12 × 16 + 8 = 200).
- Převeďte 7F na dvojkovou. Odpověď: 7 = 0111 a F = 1111, tedy 01111111, což je desítkově 127.
- Napište «OK» dvojkově. Odpověď: O je 79 a K je 75, tedy 01001111 01001011.
Často kladené otázky
Jak převedu 1101 z dvojkové na desítkovou?
Sečtete hodnoty míst, kde je jednička: 8 + 4 + 1 = 13. Druhá číslice zprava je nula, takže dvojka se nepřičítá.
Kolik je 255 ve dvojkové a šestnáctkové soustavě?
255 je ve dvojkové soustavě 11111111 a v šestnáctkové FF. Je to největší hodnota, která se vejde do bajtu o 8 bitech.
Proč šestnáctková soustava používá písmena?
Protože potřebuje šestnáct různých symbolů a desítková soustava dodává jen deset (0 až 9). Proto A má hodnotu 10, B 11, C 12, D 13, E 14 a F 15.
Kolik různých čísel lze zapsat pomocí 8 bitů?
256, od 0 do 255. Obecně lze pomocí n bitů vyjádřit 2 na n-tou hodnot.
Převádí nástroj záporná čísla nebo čísla s desetinnými místy?
Ne, jen nezáporná celá čísla. U textu používá UTF-8, takže písmena s diakritikou a emoji dávají víc než 8 bitů.