Skip to main content
🔬 Advanced

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:

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é:

HexDesetinnéBinárníObvyklý význam
0x0000000 0000Nulový bajt, lžička, vypnuto
0x0110000 0001True, zapnuto
0x0A100000 1010Nová řádka (LF)
0x0D130000 1101Řádek návratu (CR)
0x1F310001 1111Oddělovač jednotek
0x20320010 0000Mezerový znak (ASCII)
0x41650100 0001'A' v ASCII
0x61970110 0001'a' v ASCII (malá písmena)
0x7F1270111 1111DEL znak; max. podepsaný nibble pár
0x801281000 0000Bit podepsaný (záporný v podepsaném bajtu)
0xFF2551111 1111Maximální nezáporný bajt; všechny bity nastaveny
0x1002561 0000 0000Jedna více než max. bajt
0xFFFF65 53516 jedničekMaximální 16-bitový nezáporný počet
0xFFFFFF16 777 21524 jedničkyMaximá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
#FF000025500Čistá červená
#00FF0002550Čistá zelená (limonka)
#0000FF00255Čistá modrá
#FFFF002552550Žlutá
#FF00FF2550255Magenta
#00FFFF0255255Modrá
#FFFFFF255255255Bílá
#000000000Černá
#808080128128128Střední šedá
#FF57332558751Intenzivní 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ů.

OperaceVýrazÚčinek
Nastav bit 3x |= 0x08Forcujte bit 3 na 1, ostatní nezměňte
Odstranit bit 3x &= ~0x08Forcujte bit 3 na 0, ostatní nezměňte
Flip bit 3x ^= 0x08Flip bit 3, ostatní nezměňte
Zkontrolujte bit 3(x & 0x08) != 0Test, zda je bit 3 nastaven
Extrahujte nízký nibblex & 0x0FZískejte nižší 4 bity
Extrahujte vysoký nibble(x >> 4) & 0x0FZí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 souboruHex signatura (první bajty)ASCII reprezentace
Obraz JPEGFF D8 FFÿØÿ
Obraz PNG89 50 4E 47 0D 0A 1A 0A.PNG....
Dokument PDF25 50 44 46%PDF
Archiv ZIP50 4B 03 04PK..
Obraz GIF47 49 46 38GIF8
Spustitelný soubor ELF (Linux)7F 45 4C 46.ELF
Spustitelný soubor Windows PE4D 5AMZ
Audio MP3FF FB nebo 49 44 33ÿû nebo ID3
SQLite databáze53 51 4C 69 74 65SQLite

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)
0000000
81000108
10101012A
15111117F
160001 00002010
640100 000010040
1281000 000020080
2551111 1111377FF
2561 0000 0000400100
1024100 0000 00002000400

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:

ZnakUnicode kódový bodUTF-8 kódování (hex)Popis
AU+004141Latinské velká písmeno A
αU+03B1CE B1Řecké malé písmeno alfa
U+20ACE2 82 ACEvropská měna
U+4E2DE4 B8 ADČínský znak „střed“
😀U+1F600F0 9F 98 80Smějící tvář emoji
©U+00A9C2 A9Prá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.