Šestnáctková číselná soustava (někdy zkracovaně hex nebo hexa) je číselná soustava tvořená 16 symboly (základ 16). Standardní soustava, kterou běžně používáme, je desítková (základ 10) a používá deset symbolů 0–9. Šestnáctková soustava používá tyto desítkové číslice a dále šest písmen z latinky: A, B, C, D, E, F. Platí A = 10 až F = 15 v desítkové soustavě.
Základní vlastnosti
Počítače pracují v binární soustavě (s bity = 0 nebo 1). Pro snadnější čtení a zápis dlouhých binárních řetězců se bity seskupují — nejčastěji po čtyřech. Čtyři bity mohou reprezentovat 16 hodnot (0–15), proto je hex ideální pro práci s byty a slovy v počítačích.
V počítačovém žargonu se čtyřbitový blok nazývá nibble (někdy nybble). Jeden nibble odpovídá jedné šestnáctkové číslici (0–F). Dva nibbley tvoří byte (8 bitů). Díky tomu lze každé dvojici hex číslic přímo přiřadit jeden byte: např. 0x3A = binárně 0011 1010.
Seskupování a historie
Historicky se bity seskupovaly i po třech (osm možností) – to vedlo k osmičkové soustavě. Přešel-li se na čtyřbity, počet reprezentovatelných hodnot se zdvojnásobil (z 8 na 16), což vedlo k běžnému používání šestnáctkové soustavy v informatice.
Převody mezi soustavami — příklady
- Hex → binárně: každé hex číslo přepište jako čtyři bity. Např. 0x63 = 6 (0110) a 3 (0011) → 0110 0011 (binárně).
- Hex → desítkově: přiřaďte mocniny 16. Např. 0x63 = 6×16¹ + 3×16⁰ = 96 + 3 = 99 (desítkově).
- Desítkově → hex: dělte číslo 16 a sbírejte zbytky. Např. 255 ÷ 16 = 15 zbytek 15 → 255 = 0xFF.
- Příklad vícemístného převodu: 0x1A3 = 1×16² + 10×16¹ + 3×16⁰ = 256 + 160 + 3 = 419 (desítkově).
Tabulka převodu jedné hex číslice (0–F) na binární čtyřbitové vzory
- 0 = 0000
- 1 = 0001
- 2 = 0010
- 3 = 0011
- 4 = 0100
- 5 = 0101
- 6 = 0110
- 7 = 0111
- 8 = 1000
- 9 = 1001
- A = 1010
- B = 1011
- C = 1100
- D = 1101
- E = 1110
- F = 1111
Zápis a čitelné notace
Aby nedocházelo k záměně mezi soustavami, používají se různé konvence zápisu šestnáctkových čísel:
- 0x prefix: běžný v C, C++, Java, Python apod. (např. 0x63).
- h sufix: často v některých assemblerových zápisech (např. 63h). Pozor: u hodnot začínajících písmenem se někdy píše vedle nuly, např. 0FFh.
- V CSS a HTML se barevné hodnoty RGB zapisují s # (např. #FF0000 = čistě červená).
- Některé jazyky/překladače používají jiné konvence (např. Pascal používá $ jako prefix: $FF).
Písmena A–F mohou být psána velká i malá; jejich význam je stejný (0xAF = 0xaf).
Použití v praxi
- Adresy paměti a dumpy paměti (hex dump) — lidé při ladění čtou obsahy paměti v hexu.
- Barevné kódy v grafice a webdesignu (RGB hex kódy, např. #FFFFFF pro bílou).
- Reprezentace hodnot v síťových protokolech a MAC adresách (často dvojice hex číslic oddělené dvojtečkami nebo pomlčkami).
- Jednodušší vizualizace a manipulace s bity při práci s bitovými poli, maskami a posuny.
Drobné poznámky
- Slovo „hexadecimal“ pochází z řeckého/latinského složení (hex = šest, deca = deset), tedy „šestnáct“.
- Při interpretaci hex hodnot je důležité vědět, zda se jedná o bez znaménka nebo o dvoukomplementové (signed) číslo — binární reprezentace bytu je stejná, ale význam (kladné/ záporné) závisí na interpretaci.
- Hex usnadňuje čtení a zápis binárních dat, ale aritmetiku většinou provádějí procesory v binárním tvaru; hex slouží především pro lidské čtení a zkrácené zápisy.
Pro příklad notace z původního textu: 63h nebo 0x63 znamená šestnáctkové číslo 63, což je v desítkové soustavě 99.