Hexadecimální kalkulačka
Sčítejte, odčítejte a převádějte hexadecimální čísla. Provádějte hex aritmetiku a převádějte na decimální nebo binární. Zdarma.
Porozumění Hexadecimálnímu (základem 16): Základy
Hexadecimální (hex) je pozicální číselný systém s základem 16. Používá šestnáct různých symbolů: číslice 0–9 představují hodnoty od nuly do devíti a písmena A–F (nebo a–f) představují hodnoty deset až patnáct. Jedna hexadecimální číslice představuje přesně čtyři binární bity („nibble“), což z hexu dělá nejvhodnější způsob, jak představovat binární data v čitelném formátu pro člověka.
Pozicální hodnota každé hexadecimální číslice je mocninou 16. Pro hex číslo 2F4:
- 2 je v pozici 16² (256): 2 × 256 = 512
- F (15) je v pozici 16¹ (16): 15 × 16 = 240
- 4 je v pozici 16⁰ (1): 4 × 1 = 4
- Celková hodnota: 512 + 240 + 4 = 756 desetinné
Převod desetinného na hex: opakovaně dělit 16 a zaznamenávat zbyteky (nejprve zprava). 756 ÷ 16 = 47 R 4; 47 ÷ 16 = 2 R 15 (F); 2 ÷ 16 = 0 R 2. Čtení zbyteků vzhůru: 2F4₁₆ ✓. Většina programovacích jazyků prefixuje hexové literály znakem 0x: 0x2F4 = 756.
Tabulka převodu hex na desetinné
Rychlý odkaz pro převod jednoduchých hexadecimálních číslic a běžných hexadecimálních hodnot na desetinné:
| Hex | Desetinné | Binární | Obvyklý význam |
|---|---|---|---|
| 0x00 | 0 | 0000 0000 | Nulový bajt, lžička, vypnuto |
| 0x01 | 1 | 0000 0001 | True, zapnuto |
| 0x0A | 10 | 0000 1010 | Nová řádka (LF) |
| 0x0D | 13 | 0000 1101 | Řádek návratu (CR) |
| 0x1F | 31 | 0001 1111 | Oddělovač jednotek |
| 0x20 | 32 | 0010 0000 | Mezerový znak (ASCII) |
| 0x41 | 65 | 0100 0001 | 'A' v ASCII |
| 0x61 | 97 | 0110 0001 | 'a' v ASCII (malá písmena) |
| 0x7F | 127 | 0111 1111 | DEL znak; max. podepsaný nibble pár |
| 0x80 | 128 | 1000 0000 | Bit podepsaný (záporný v podepsaném bajtu) |
| 0xFF | 255 | 1111 1111 | Maximální nezáporný bajt; všechny bity nastaveny |
| 0x100 | 256 | 1 0000 0000 | Jedna více než max. bajt |
| 0xFFFF | 65 535 | 16 jedniček | Maximální 16-bitový nezáporný počet |
| 0xFFFFFF | 16 777 215 | 24 jedničky | Maximální 24-bit (16M barev) |
Vztah mezi hexem a binárním je přímý: každá hexadecimální číslice se mapuje přesně na čtyři bity. A = 1010, B = 1011, C = 1100, D = 1101, E = 1110, F = 1111. Převod 0xAB na binární: A = 1010, B = 1011 → 10101011₂ = 171₁₀.
Hexadecimální aritmetika: Přidání, Odečtení, Umnožování
Hexadecimální aritmetika sleduje stejná pravidla jako desetinná aritmetika, ale přenosy a půjčování se provádějí místo 10 místo 16. Porozumění hexadecimální aritmetice je důležité pro programování v assembleru, integrované systémy a čtení výstupu kompilátoru.
Příklad přidání: 3A + 27. Jednotky: A + 7 = 10 + 7 = 17 = 1×16 + 1 → zapište 1, půjčte 1. Šestnáctky: 3 + 2 + 1 (půjčování) = 6. Výsledek: 61₁₆ = 97₁₀. Ověřte: 58 + 39 = 97 ✓.
Příklad odečtení: C3 − 5F. Jednotky: 3 < F (15), takže půjčte: 3 + 16 − 15 = 4, a půjčte 1 do dalšího sloupce. Šestnáctky: C (12) − 5 − 1 (půjčování) = 6. Výsledek: 64₁₆ = 100₁₀. Ověřte: 195 − 95 = 100 ✓.
Příklad umnožování: 1A × 3. A × 3 = 30 = 1E₁₆ (zapište E, půjčte 1). 1 × 3 + 1 = 4. Výsledek: 4E₁₆ = 78₁₀. Ověřte: 26 × 3 = 78 ✓.
Pro složitější hexadecimální výpočty je často spolehlivější převést na desetinné, provést výpočet a poté převést zpět, pokud nejste hluboce zvyklí. Nicméně porozumění hexadecimální aritmetice poskytuje intuici pro uspořádání paměti, CPU registrů a reprezentaci dat.
Hex v webové designu: barvy
HTML a CSS barvy jsou jedním z nejviditelnějších aplikací hexu mimo programování. Barvy jsou vyjádřeny jako #RRGGBB, kde každý kanál se pohybuje od 00 (0 intenzity) do FF (255 = plná intenzita). To dává 256³ = 16 777 216 možných barev.
| Hex barva | Červená | Zelená | Modrá | Název barvy |
|---|---|---|---|---|
| #FF0000 | 255 | 0 | 0 | Čistá červená |
| #00FF00 | 0 | 255 | 0 | Čistá zelená (limonka) |
| #0000FF | 0 | 0 | 255 | Čistá modrá |
| #FFFF00 | 255 | 255 | 0 | Žlutá |
| #FF00FF | 255 | 0 | 255 | Magenta |
| #00FFFF | 0 | 255 | 255 | Modrá |
| #FFFFFF | 255 | 255 | 255 | Bílá |
| #000000 | 0 | 0 | 0 | Černá |
| #808080 | 128 | 128 | 128 | Střední šedá |
| #FF5733 | 255 | 87 | 51 | Intenzivní oranžová |
CSS také podporuje 4-dílné (#RGBA) a 8-dílné (#RRGGBBAA) hex barvy, kde AA je kanál alfa (00 = průhledná, FF = nepropustná). Kratší forma barev (#RGB) se rozšiřuje o opakování každé číslice: #F3A = #FF33AA.
Weboví designéři často upravují barvy změnou hodnot hexu. Přidání do kanálu červené zbarvuje barvy teplejší; odebrání je chladnější. Hex barvy s rovnými hodnotami R, G a B vždy produkují šedé tóny. Barva jako #7F7F7F je přesně 50% šedá (127 z 255 na každém kanálu).
Hex v programování: adresy paměti a manipulace s bitovými poli
V systémech programování je hex přirozeným jazykem pro adresy paměti, bitové příznaky a hardwarové registr. Každý programátor pracující v C, C++, assembleru nebo v embedded systémech setkání s hexem neustále narazí.
Adresy paměti: Na 32-bitovém systému se adresy pohybují od 0x00000000 do 0xFFFFFFFF (4 GB). Obvyklé rozsahy adres: 0x00000000–0x00FFFFFF (nízká paměť), 0x7FFFFFFF (maximální pozitivní 32-bitový int), 0x80000000 (začátek negativního prostoru v signed interpretaci), 0xFFFFFFFF (maximální nezáporný 32-bit). Na 64-bitových systémech se uživatelský prostor obvykle nachází v rozsahu 0x0000000000000000–0x00007FFFFFFFFFFF.
Manipulace s bitovými poli pomocí hexových mask: Bitové operace jsou vyjádřeny přirozeně v hexu proto, že se shodují s hranicemi niblů.
| Operace | Výraz | Účinek |
|---|---|---|
| Nastav bit 3 | x |= 0x08 | Forcujte bit 3 na 1, ostatní nezměňte |
| Odstranit bit 3 | x &= ~0x08 | Forcujte bit 3 na 0, ostatní nezměňte |
| Flip bit 3 | x ^= 0x08 | Flip bit 3, ostatní nezměňte |
| Zkontrolujte bit 3 | (x & 0x08) != 0 | Test, zda je bit 3 nastaven |
| Extrahujte nízký nibble | x & 0x0F | Získejte nižší 4 bity |
| Extrahujte vysoký nibble | (x >> 4) & 0x0F | Získejte horní 4 bity bajtu |
Slavné hexové konstanty: Programátoři vytvořili paměťové konstanty pro ladění a inicializaci: 0xDEADBEEF (používáno k označení neinicializované paměti v starých systémech IBM), 0xCAFEBABE (Java class file magic číslo), 0xFEEDFACE (Mach-O binární formát magické číslo), 0x0BADF00D (paměťový ladící sentinel), 0xDEADC0DE (používáno v iOS detekci crashu). Tyto konstanty se v hexových dumpích objevují jednoznačně, což je výhodné při ladění.
Signatury souborů a hexová forenzní analýza
Každý formát souboru má charakteristický posloupnost bajtů na začátku nazývanou „magické číslo“ nebo signaturu souboru. Hex editory a nástroje pro digitální forenzní analýzu používají tyto signatury k identifikaci typů souborů bez ohledu na příponu souboru. Znalost signatur souborů je pro obnovení dat, analýzu malware a digitální forenzní analýzu nezbytná.
| Typ souboru | Hex signatura (první bajty) | ASCII reprezentace |
|---|---|---|
| Obraz JPEG | FF D8 FF | ÿØÿ |
| Obraz PNG | 89 50 4E 47 0D 0A 1A 0A | .PNG.... |
| Dokument PDF | 25 50 44 46 | |
| Archiv ZIP | 50 4B 03 04 | PK.. |
| Obraz GIF | 47 49 46 38 | GIF8 |
| Spustitelný soubor ELF (Linux) | 7F 45 4C 46 | .ELF |
| Spustitelný soubor Windows PE | 4D 5A | MZ |
| Audio MP3 | FF FB nebo 49 44 33 | ÿû nebo ID3 |
| SQLite databáze | 53 51 4C 69 74 65 | SQLite |
Profesionálové v oblasti zabezpečení používají hex k prozkoumání binárních souborů bez důvěry k příponě souboru. Soubor s příponou „document.pdf“, který začíná 4D 5A, je ve skutečnosti spustitelný soubor Windows – běžný trik malware. Hexová analýza síťových paketů odhaluje protokoly, šifrovací hlavičky a potenciální útoky.
Porovnání základů čísel: desítkový, binární, oktalový, hexadecimální
Počítače používají různé základy čísel pro různé účely. Porozumění jejich vztahům pomáhá při čtení technické dokumentace, debugování a programování systému.
| Desítkový | Binární (základ 2) | Oktační (základ 8) | Hexadecimální (základ 16) |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 15 | 1111 | 17 | F |
| 16 | 0001 0000 | 20 | 10 |
| 64 | 0100 0000 | 100 | 40 |
| 128 | 1000 0000 | 200 | 80 |
| 255 | 1111 1111 | 377 | FF |
| 256 | 1 0000 0000 | 400 | 100 |
| 1024 | 100 0000 0000 | 2000 | 400 |
Oktační (základ 8) byl kdysi běžný v počítačové technice (je vidět v Unixových souborových právech: chmod 755 = 111 101 101 v binárním tvaru = rwxr-xr-x). Hexadecimální převzal oktační pro většinu účelů, protože 4 bity na číslici (hexadecimální) se lépe shodují s moderními 8-bitovými, 16-bitovými, 32-bitovými a 64-bitovými architekturami než 3 bity na číslici (oktační).
Nejčastější dotazy
Jak rychle převést mezi hexadecimálním a binárním kódem?
Každý hexadecimální znak odpovídá přesně 4 binárním bitům: 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. Převést 0xB7: B=1011, 7=0111 → 10110111₂. Převést 11001010₂: rozdělit na nibble: 1100=C, 1010=A → 0xCA.
Proč používají CSS barvy v hexadecimálním kódu?
CSS používá hexadecimální kód, protože každý kanál RGB (0-255) se vejde přesně do dvou hexadecimálních znaků (00-FF). Formát #RRGGBB je kompaktní, jednoznačný a mapuje přímo na 24bitový model barev používaný hardwarovými displeji. HTML převzal hexadecimální barvy v počátcích 90. let od X11 barevných definic a konvence zůstala standardní od té doby.
Co znamená 0xFF v desetinném čísle?
0xFF = 15×16 + 15 = 240 + 15 = 255. V binárním kódu FF = 1111 1111, což znamená, že jsou nastaveny všechny 8 bitů. 255 je maximální hodnota nezáporného bajtu (uint8), maximální intenzita pro každý kanál RGB barev a objevuje se často v síťovém programování (255.255.255.255 je broadcastová adresa) a výpočetní technice.
Co je rozdíl mezi 0x1F a 0xF1?
Jsou to různé čísla s stejnými číslicemi v jiném pořadí. 0x1F = 1×16 + 15 = 31 desetinné číslo. 0xF1 = 15×16 + 1 = 241 desetinné číslo. V binárním kódu: 0x1F = 0001 1111; 0xF1 = 1111 0001. Pořadí čísel má význam, stejně jako 19 ≠ 91 v desetinném čísle.
Jaký je počet hexadecimálních znaků potřebných pro zobrazení 32bitového čísla?
Stále 8 hexadecimálních znaků (protože 16⁸ = 2³², pokrývají všechny 32bitové hodnoty od 0x00000000 do 0xFFFFFFFF). Adresy paměti v 32bitových systémech jsou zobrazeny jako 8místné hexadecimální čísla. Pro 64bitová čísla potřebujete 16 hexadecimálních znaků (0x0000000000000000 až 0xFFFFFFFFFFFFFFFF).
Co znamená prefix "0x" v hexadecimálním čísle?
Prefix "0x" je konvence používána v C a většině programovacích jazyků, aby označovala, že následuje hexadecimální číslo. "0x" znamená "hex" (znak 'x' naznačuje hexadecimální). Další notace: závěrečný 'h' v assembleru (FFh), předpona '#' v CSS a některých kontextech (#FF0000) a předpona '$' v některých starších jazycích ($FF).
Jak je hexadecimální kód používán v IP adresách?
IPv4 adresy (například 192.168.1.1) lze vyjádřit v hexadecimálním kódu: každý oktet v hexadecimálním kódu. 192.168.1.1 = 0xC0 0xA8 0x01 0x01 = 0xC0A80101. IPv6 adresy jsou již psány v hexadecimálním kódu: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. To činí manipulaci s IPv6 adresami mnohem jednodušší s hexadecimálním aritmetickým kódováním.
Co je hexadecimální editor a kdy bych ho použil?
Hexadecimální editor zobrazuje a edituje soubory jako soubory v čisté formě v hexadecimálním kódu. Obvyklé použití: zkoumání signatur souborů pro identifikaci typů souborů, editace binárních souborů s údaji, odhalování softwaru, analýza síťových protokolů, obnova dat z poškozených souborů a digitální forenzní analýza. Populární hexadecimální editory jsou HxD (Windows), hex fiend (Mac) a xxd (přepisovací příkazový nástroj Unix).
Proč je hexadecimální kód používán místo desetinného čísla v počítačové technice?
Protože počítače pracují v binárním kódu (základ 2) a 16 = 2⁴ — hexadecimální kód se dokonale shoduje s binárním kódem. Jeden hexadecimální znak = 4 bitů, dva hexadecimální znaky = 1 bajt (8 bitů), čtyři hexadecimální znaky = 16 bitů, osm hexadecimálních znaků = 32 bitů. Desetinné číslo nemá žádný takový čistý vztah s mocninami 2, což činí hexadecimální kód mnohem přirozenějším pro vyjádření binárních dat kompaktně.
Jak převést hexadecimální barvu na hodnoty RGB?
Rozdělit šestimístný hexadecimální kód na tři dvojité skupiny: #RRGGBB. Převést každý z nich na desetinné číslo. Příklad: #4A90E2 → R=0x4A=74, G=0x90=144, B=0xE2=226. Takže tato barva je rgb(74, 144, 226) — střední modrá. Pro obrácení: převést každé desetinné číslo na dvojité hexadecimální znaky a spojit: rgb(255, 87, 51) → #FF5733.
Hexadecimální v síťovém programování a protokolech
Síťová komunikace používá hexadecimální čísla rozsáhle. MAC adresy — hardware identifikátory pro síťové rozhraní — jsou psány jako 6 hexadecimálních bajtů oddělených dvojtečkami nebo pomlčkami: například 00:1A:2B:3C:4D:5E. První tři bajty (00:1A:2B) identifikují výrobce (Organizationally Unique Identifier, OUI), zatímco poslední tři (3C:4D:5E) identifikují konkrétní zařízení.
IPv6 adresy jsou 128 bitů vyjádřených jako 8 skupin po 4 hexadecimálních číslech: 2001:0DB8:AC10:FE01:0000:0000:0000:0000. Předpony nul v skupinách lze vynechat a po sobě jdoucí skupiny nulami zaplněné lze zkrátit znakem "::", což dává 2001:DB8:AC10:FE01::. Porozumění hexadecimálním číslům je důležité pro čtení IPv6 adres, podsítových mask, a tabulek směrování.
Ethernetové rámce, IP balíčky, TCP segmenty — všechna mají pole vyjádřená v hexadecimálním číslu v nástrojích pro analýzu síťového provozu jako je Wireshark. TCP SYN balíček ukazuje pole příznaků jako 0x002 (jen SYN bit nastavený); SYN-ACK ukazuje 0x012 (SYN + ACK bit nastavený). Čtení těchto hexadecimálních hodnot přímo z capture paketů je základním dovedností pro síťový debugging.
Unicode a Hex: Kódování znaků
Unicode, univerzální standard kódování znaků, přiřazuje každému znaku kódový bod vyjádřený v hexadecimálním číslu. Základní multilingvní rovina zahrnuje rozsah U+0000 až U+FFFF. Příklady:
| Znak | Unicode kódový bod | UTF-8 kódování (hex) | Popis |
|---|---|---|---|
| A | U+0041 | 41 | Latinské velká písmeno A |
| α | U+03B1 | CE B1 | Řecké malé písmeno alfa |
| € | U+20AC | E2 82 AC | Evropská měna |
| 中 | U+4E2D | E4 B8 AD | Čínský znak „střed“ |
| 😀 | U+1F600 | F0 9F 98 80 | Smějící tvář emoji |
| © | U+00A9 | C2 A9 | Právní symbol |
UTF-8 kóduje ASCII znaky (U+0000 až U+007F) v 1 bajtu stejným způsobem jako jejich ASCII hodnota. Znaků U+0080 až U+07FF používá 2 bajty, U+0800 až U+FFFF používá 3 bajty a znaky za U+FFFF (například většina emoji) používá 4 bajty. Tato proměnná délka kódování, vše reprezentovaná v hexadecimálním číslu, je důvodem, proč porozumění hexadecimálním číslům pomáhá při debugování problémů s kódováním textu v webových aplikacích.