Binárne čísla sú pre počítače prirodzené, ale pre ľudí sú dlhé a ťažko čitateľné. Reťazec 11111111 ľahko zameniš s 11111110. Preto programátori a počítačoví inžinieri používajú hexadecimálnu (šestnástkovú) sústavu — skrátene hex.
Čo je hexadecimálna sústava?
Hexadecimálna sústava je číselná sústava so základom 16. Namiesto desiatich číslic (0–9) používa šestnásť symbolov:
| Hex | Desiatková | Binárna |
|---|---|---|
| 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 |
Hexadecimálne čísla sa v programovaní zvyčajne zapisujú s predponou 0x — napríklad 0xFF alebo 0x1A3. Tým je jasné, že nejde o desiatočné číslo.
Prečo je hex užitočný?
Každá hexadecimálna číslica presne zodpovedá 4 bitom (jednej nibble). Preto jeden bajt (8 bitov) možno zapísať práve dvoma hex číslicami.
Porovnanie:
- Binárne:
11111111 - Hexadecimálne:
FF - Desiatočné:
255
Hex je teda oveľa kompaktnejší ako binárna sústava, ale pritom sa ľahko prevedie späť na bity.
Prevod z hexadecimálnej na desiatočnú sústavu
Každá pozícia v hex čísle má hodnotu mocniny 16.
Príklad: Preveď 2A na desiatočné číslo.
2je na pozícii 16¹ = 16 → 2 × 16 = 32A(= 10) je na pozícii 16⁰ = 1 → 10 × 1 = 10- Výsledok: 32 + 10 = 42
Príklad 2: Preveď 1F3 na desiatočné.
1→ 1 × 16² = 1 × 256 = 256F(= 15) → 15 × 16¹ = 15 × 16 = 2403→ 3 × 16⁰ = 3- Výsledok: 256 + 240 + 3 = 499
Prevod z binárnej na hexadecimálnu sústavu
- Rozdeľ binárne číslo na skupiny po 4 bity (sprava).
- Každú skupinu preveď na hex číslicu.
Príklad: Preveď 10110111 na hex.
1011= B0111= 7- Výsledok: B7
Trik: Nauč sa naspamäť hex hodnoty 0–F a prevod binárna ↔ hex zvládneš veľmi rýchlo, pretože sa vždy pracuje len so skupinami 4 bitov.
Kde sa hex používa v praxi?
- Farby na webe:
#FF5733— každá dvojica hexadecimálnych číslic udáva intenzitu červenej, zelenej a modrej (RGB). - MAC adresy:
A4:C3:F0:85:AC:2D - Pamäťové adresy: Debugger zobrazuje adresy ako
0x00401234 - ASCII kódy: Písmeno „A" má ASCII hodnotu
41v hex (= 65 v desiatočnej)
# Prevody čísel v Pythone
cislo = 255
print(f"Desiatková: {cislo}")
print(f"Hexadecimálna: {hex(cislo)}") # 0xff
print(f"Binárna: {bin(cislo)}") # 0b11111111
# Hex na desiatočnú
hex_hodnota = 0xFF
print(f"0xFF = {hex_hodnota}") # 255
Cvičné príklady
Preveď hexadecimálne číslo 3C na desiatočnú sústavu.
Zobraziť odpoveď
Aká farba v RGB zodpovedá hexadecimálnemu kódu #FF0000? Vysvetli, čo jednotlivé dvojice znamenajú.