A hexadecimális számrendszer (röviden hex) a 16-os alapú helyiértékes számrendszer. Nevét a görög/latin előtagokból kapta: a hexa (6) és a deca (10) összevonásakor kapott elnevezés jelzi a 16-os bázist. A hexadecimális számjegyek 16 féle értéket képviselnek: az 0–9 számjegyeket és az angol ábécéből vett betűket A, B, C, D, E, F, ahol A = decimális 10 és F = decimális 15. Számrendszerek között gyakran a hex a legkényelmesebb a számítástechnikában a bitek egyszerű csoportosíthatósága miatt.
Miért használjuk a hexet a számítástechnikában?
Az emberek mindennapi élete a tizedes (decimális) rendszerre épül, mert tíz ujjunk van. A számítógépek működése viszont bináris: minden bit két állapotot vehet fel (0 vagy 1). A hosszú bináris sorozatok olvashatóságának javítása érdekében a biteket csoportosítjuk. A négyes csoport (4 bit) 16 különböző állapotot tud képviselni, ezért kiválóan alkalmas egy hexadecimális számjegyre. Egy ilyen négyes bitcsoport neve a számítástechnikai szóhasználatban nibble (néha nybble vagy magyarul félbyte), két nibble pedig egy bájt (8 bit).
Szimbólumok és helyiértékek
A hexadecimális számjegyek: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Egy hex szám helyiértékei 16 hatványai: az utolsó számjegy 16^0-t, a mellette lévő 16^1-et, majd 16^2-t stb. képvisel. Például a 3A7 hex érték decimálisra átszámítva: 3·16^2 + 10·16^1 + 7·16^0 = 768 + 160 + 7 = 935.
Jelölési konvenciók
- Gyakori előtag a 0x, például 0x63, amely egyértelművé teszi, hogy hexről van szó.
- Egyes környezetekben az h utótagot használják (assembler stílus), például 63h. Ha a hex érték betűvel kezdődik, gyakran tesznek elé 0-t (például 0FFh), hogy elkerüljék az értelmezési gondokat.
- HTML/CSS színek esetén a hex kód formátuma #RRGGBB (például #FF00CC), ahol minden kettős hex szám a vörös, zöld és kék komponensek 0–255 közötti értékét adja meg.
- A hex betűk (A–F) kis- és nagybetűje nem számít: 0x3a7 = 0x3A7.
Konverziók — hogyan váltsunk
Hex → decimális: összegezzük minden számjegy értékét a megfelelő 16 hatványával. Példa: 0x3A7 = 3·16^2 + 10·16 + 7 = 935.
Decimális → hex: osztási maradék módszer: a számot 16-tal osztjuk, a maradék a legkisebb helyiértékű hexjegy, majd az osztás hányadosát ismét 16-tal osztjuk, amíg a hányados nulla nem lesz. Példa: 2748 decimális:
- 2748 ÷ 16 = 171 maradék 12 → C
- 171 ÷ 16 = 10 maradék 11 → B
- 10 ÷ 16 = 0 maradék 10 → A
Bináris ↔ hex: mivel 4 bit = 1 hexjegy, egyszerű a konverzió: a bináris számot jobbról négyes csoportokra tördeljük (szükség szerint balra nullát pótolunk), majd minden négyes helyet átalakítjuk egy hexjeggyé. Példa: bináris 11011011 → csoportosítva 1101 1011 → 1101 = D, 1011 = B → 0xDB (decimálisan 219).
Gyakorlati példák és alkalmazások
- Memória- és címtartományok megadása: a programozók és rendszermérnökök memóriacímet gyakran hexben írnak, mert byteszerű határok jól láthatók (például 0x1000).
- Színkódok a weben: #RRGGBB, például #FF00CC jelentése: R = 255, G = 0, B = 204.
- Hibakeresés és dumpok: bináris fájlok vagy memóriatartalmak vizsgálatakor hexadecimális megjelenítés szokásos (hexdump), mert rövidebb és áttekinthetőbb, mint a tiszta bináris forma.
- További felhasználás: gépi kódok, protokollok, szerverlogok, ellenőrzőösszegek és titkosítási előfeldolgozások gyakran használnak hex formátumot.
További megjegyzések
- A hex értékek értelmezése függ attól, hogy előjeles (signed) vagy előjelnélküli (unsigned) értékként tekintjük-e őket. Például egy 8 bites értékként 0xFF unsignedként 255, kétkomplementes előjelesként pedig −1.
- Az oktális (oktális) rendszert korábban gyakrabban használták bizonyos géparchitektúrákban (3 bit = 1 oktális számjegy). A hex azonban a modern architektúrákban sokkal elterjedtebb, mivel könnyen illeszkedik a 4 bites csoportokhoz.
- Ha hex számokról olvasol régi forrásokban, találkozhatsz eltérő jelölésekkel (például 63h, 0x63, #63), ezért mindig figyeld a kontextust.
Összefoglalva: a hexadecimális rendszer praktikus, tömör és a bináris adatok emberi olvasásához jól illeszkedik. A bitek négyes csoportokra rendezése révén egy hexjegy könnyen megfeleltethető egy nibble-nek, két nibble pedig egy bájtnak, így a hex a számítástechnikai adatok leírásának alapvető eszköze.