Přeskočit na obsah

Šestnáctková soustava

Z Infopedia
Rozbalit box

Obsah boxu

Šablona:Infobox Číselná soustava

Šestnáctková soustava (též hexadecimální soustava) je polyadická číselná soustava o základu 16. Pro zápis čísel v této soustavě se používá 16 symbolů. Těmito symboly jsou číslice od 0 do 9 (deset symbolů) a prvních šest písmen latinské abecedy: A, B, C, D, E, F (šest dalších symbolů). Tyto písmena reprezentují hodnoty 10 až 15 v desítkové soustavě.

Tato soustava se masivně využívá v oblasti informatiky a digitální techniky, protože její základ 16 je čtvrtou mocninou čísla 2 (16 = 2⁴). To umožňuje velmi snadný a přímý převod mezi šestnáctkovou a dvojkovou (binární) soustavou, které rozumí počítače. Jedna šestnáctková číslice tak reprezentuje právě čtyři bity (nibble).

📜 Historie a původ

Ačkoliv systémy založené na základu 16 existovaly v různých formách již dříve (například tradiční čínská měrná jednotka čin se dělila na 16 liangů), moderní podoba šestnáctkové soustavy je neoddělitelně spjata s rozvojem počítačů.

V raných dobách výpočetní techniky se programátoři potýkali s dlouhými a nepřehlednými řetězci nul a jedniček binárního kódu. Pro zjednodušení práce se začala používat osmičková (oktalová) soustava (základ 8), kde jedna číslice reprezentovala tři bity.

Skutečný průlom pro šestnáctkovou soustavu přišel v roce 1963 s uvedením počítače IBM System/360. Tento sálový počítač a jeho následovníci definovali bajt jako skupinu 8 bitů, což se stalo de facto standardem. Protože 8 je dělitelné čtyřmi, ale ne třemi, stala se šestnáctková soustava mnohem praktičtější než osmičková. Dvě šestnáctkové číslice mohly elegantně reprezentovat přesně jeden bajt (např. 11111111₂ = FF₁₆).

Volba písmen A–F pro číslice 10–15 byla logickým rozšířením zavedených deseti arabských číslic. Tato konvence byla rychle přijata a stala se celosvětovým standardem v oblasti programování a hardwarového inženýrství.

⚙️ Princip a zápis

Šestnáctková soustava je poziční číselná soustava, což znamená, že hodnota každé číslice závisí na její pozici v čísle. Každá pozice představuje mocninu základu 16. Číslice na nejnižší pozici (zcela vpravo) se násobí 16⁰ (což je 1), druhá zprava se násobí 16¹, třetí 16² atd.

Například číslo 3B7F v šestnáctkové soustavě lze rozepsat takto:

  • F je na pozici 16⁰, jeho hodnota je 15. Výpočet: 15 × 16⁰ = 15 × 1 = 15
  • 7 je na pozici 16¹, jeho hodnota je 7. Výpočet: 7 × 16¹ = 7 × 16 = 112
  • B je na pozici 16², jeho hodnota je 11. Výpočet: 11 × 16² = 11 × 256 = 2816
  • 3 je na pozici 16³, jeho hodnota je 3. Výpočet: 3 × 16³ = 3 × 4096 = 12288

Celková hodnota v desítkové soustavě je součtem těchto hodnot: 15 + 112 + 2816 + 12288 = 15231.

Způsoby zápisu

Aby se předešlo záměně s čísly v jiných soustavách, používá se několik konvencí pro označení, že se jedná o šestnáctkové číslo:

  • Prefix `0x`: Nejběžnější v programovacích jazycích jako C, C++, Java, Python nebo JavaScript (např. `0x3B7F`).
  • Prefix `$`: Používán v některých assemblerech a starších jazycích jako Pascal.
  • Postfix `h` nebo `H`: Používán v assemblerech a některých specifikacích (např. `3B7Fh`).
  • Dolní index `16`: Matematický zápis (např. 3B7F₁₆).
  • Prefix `#`: Používá se pro definici barev v HTML a CSS (např. `#FFFFFF` pro bílou).

Tabulka hodnot

Přehled hodnot šestnáctkových číslic
Šestnáctková číslice Desítková hodnota Dvojková hodnota (4 bity)
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
A 10 1010
B 11 1011
C 12 1100
D 13 1101
E 14 1110
F 15 1111

🔄 Převody mezi soustavami

Snadné převody, zejména mezi binární a šestnáctkovou soustavou, jsou hlavním důvodem její popularity.

Z šestnáctkové do desítkové

Převod se provádí vynásobením každé číslice odpovídající mocninou základu 16 a sečtením výsledků, jak bylo ukázáno výše na příkladu čísla 3B7F₁₆.

Další příklad: 1A5₁₆

  • 5 × 16⁰ = 5 × 1 = 5
  • A (10) × 16¹ = 10 × 16 = 160
  • 1 × 16² = 1 × 256 = 256
  • Součet: 5 + 160 + 256 = 421₁₀

Z desítkové do šestnáctkové

Převod se provádí metodou postupného dělení základem 16 a zapisováním zbytků. Příklad: Převod čísla 421₁₀ 1. 421 ÷ 16 = 26, zbytek 5 2. 26 ÷ 16 = 1, zbytek 10 (což je A) 3. 1 ÷ 16 = 0, zbytek 1

Zbytky se čtou odspodu nahoru, takže výsledek je 1A5₁₆.

Mezi šestnáctkovou a dvojkovou

Tento převod je klíčový a triviální. Každá šestnáctková číslice odpovídá přesně jedné čtveřici binárních číslic (nibblu).

  • Převod z šestnáctkové do dvojkové: Každá hexadecimální číslice se nahradí odpovídající čtveřicí bitů z tabulky.

Příklad: BEEF₁₆

  • B → 1011
  • E → 1110
  • E → 1110
  • F → 1111

Výsledek: 1011111011101111₂

  • Převod z dvojkové do šestnáctkové: Binární číslo se rozdělí zprava doleva na čtveřice bitů (pokud na začátku nezbývá celá čtveřice, doplní se zleva nulami). Každá čtveřice se pak nahradí odpovídající šestnáctkovou číslicí.

Příklad: 11010110101101₂ 1. Rozdělení na čtveřice: `0011 0101 1010 1101` (doplněny dvě nuly zleva) 2. Převod čtveřic:

  * 0011 → 3
  * 0101 → 5
  * 1010 → A
  * 1101 → D

Výsledek: 35AD₁₆

💻 Využití v informatice

Šestnáctková soustava je v informatice všudypřítomná, protože poskytuje lidsky čitelnou reprezentaci binárně kódovaných dat.

  • Reprezentace dat: Jeden bajt (8 bitů) je reprezentován dvěma šestnáctkovými číslicemi (např. 00 až FF). To je mnohem kratší a přehlednější než zápis osmi nul a jedniček.
  • Adresace paměti: Paměťové adresy v počítači jsou typicky zobrazovány v šestnáctkové soustavě. Programátoři a systémoví administrátoři tak snadno identifikují konkrétní místa v operační paměti.
  • Definice barev: V webdesignu a grafickém designu se používá model RGB k definici barev. Barva je zapsána jako šestice hexadecimálních číslic (např. `#RRGGBB`), kde RR je hodnota červené složky, GG zelené a BB modré. Například `#FF0000` je čistá červená, `#00FF00` čistá zelená a `#FFFFFF` je bílá. Existuje i varianta s alfa kanálem (průhledností) `#RRGGBBAA`.
  • Kódování znaků: Standardy jako ASCII a Unicode používají šestnáctkovou soustavu k jednoznačné identifikaci znaků. Například znak 'A' má v Unicode kód `U+0041`.
  • URL kódování: Speciální znaky v URL adresách jsou kódovány pomocí znaku procenta a dvou šestnáctkových číslic (např. mezera se kóduje jako `%20`).
  • Hašovací funkce: Výstupy kryptografických hašovacích funkcí jako MD5, SHA-1 nebo SHA-256 jsou standardně reprezentovány jako řetězce šestnáctkových číslic.
  • Chybové kódy: Mnoho operačních systémů a aplikací zobrazuje chybové kódy v hexadecimálním formátu, což pomáhá při diagnostice problémů.

💡 Pro laiky

Představte si, že počítáte, ale místo deseti prstů (jako v naší běžné desítkové soustavě) jich máte šestnáct. Když dojdete k číslu devět, prsty vám dojdou. Co teď? V šestnáctkové soustavě si "půjčíme" písmenka. Desítka se tedy nezapíše jako "10", ale jako "A". Jedenáctka je "B", dvanáctka "C" a tak dále až po patnáctku, která je "F". Teprve šestnáctka se zapíše jako "10" (jedna šestnáctka a nula jednotek).

Proč je to užitečné? Počítače "myslí" jen v jedničkách a nulách (dvojková soustava). Pro člověka je ale čtení dlouhých řad jako `1111101011001110` velmi nepraktické. Šestnáctková soustava funguje jako dokonalý "překladatel" mezi řečí počítačů a řečí lidí. Každé čtyři jedničky a nuly se dají zapsat jako jeden jediný šestnáctkový znak. Zmíněná dlouhá řada se tak zkrátí na přehledné `FACE`.

Nejčastěji se s tím setkáte u barev na webu. Kód jako `#FF6347` je vlastně recept pro váš monitor, napsaný v šestnáctkové soustavě. Říká mu: "Namíchej maximální množství červené (FF), trochu méně zelené (63) a ještě méně modré (47)." Výsledkem je určitý odstín oranžovo-červené barvy.


Šablona:Aktualizováno