Hexadecimális számrendszer (hex): definíció, konverzió és számítástechnikai alkalmazás
Ismerd meg a hexadecimális számrendszer működését, konverziós módszereit és gyakorlati számítástechnikai alkalmazásait részletes példákkal és gyors tippekkel.
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.
Hexadecimális értékek
A hexadecimális számrendszer hasonlít a nyolcjegyű számrendszerhez (8-as bázis), mivel mindkettő könnyen összehasonlítható a bináris számrendszerrel. A hexadecimális számrendszer négybites bináris kódolást használ. Ez azt jelenti, hogy a hexadecimális számrendszerben minden egyes számjegy megegyezik a bináris számrendszer négy számjegyével. Az oktális hárombites bináris rendszert használ.
A tízes számrendszerben az első számjegy az egyes hely, a balra következő számjegy a tízes hely, a következő a százas hely stb. A hexadecimális rendszerben minden egyes számjegy 16 érték lehet, nem pedig 10. Ez azt jelenti, hogy a számjegyek az egyes hely, a tizenhatos hely, a következő pedig a 256-os hely. Tehát 1h = 1 tizedesjegy, 10h = 16 tizedesjegy, és 100h = 256 tizedesjegy.
A hexadecimális számok példaértékei binárisra, oktálisra és decimálisra átalakítva.
|
Átalakítás
Bináris to hexadecimális átváltás
A számok binárisról hexára történő átváltása csoportosítási módszert használ. A bináris számot jobbról kezdődően négy számjegyből álló csoportokra osztjuk. Ezeket a csoportokat ezután hexadecimális számjegyekké alakítjuk át, ahogy a fenti táblázatban látható a 0-tól F-ig terjedő hexadecimális számok esetében. A hexa számjegyek mindegyikét binárisra változtatjuk, és a csoportosítást általában eltávolítjuk.
| Bináris | Csoportosítások | Hex | |||
| 01100101 | 0110 | 0101 | 65 | ||
| 010010110110 | 0100 | 1011 | 0110 | 4B6 | |
| 1101011101011010 | 1101 | 0111 | 0101 | 1010 | D75A |
Ha egy bináris számban a bitek száma nem 4 többszöröse, akkor nullákkal töltik fel, hogy azzá váljon. Példák:
- bináris 110 = 0110, ami 6 Hex.
- bináris 010010 = 00010010, ami 12 hexa.
Hexadecimális to Decimális
Egy szám hexadecimálisból decimálisra történő átalakítása kétféleképpen lehetséges.
Az első módszer a kézi átalakítás során gyakrabban fordul elő:
- Használja a decimális értéket minden egyes hexadecimális számjegyhez. A 0-9 esetében ez ugyanaz, de A = 10, B = 11, C = 12, D = 13, E = 14 és F = 15.
- Tartsa az alábbiakban az egyes lépéseknél átalakított számok összegét.
- Kezdje a legkevésbé jelentős hexadecimális számjegyekkel. Ez a jobb oldali számjegy. Ez lesz az összeg első eleme.
- Vegyük a második legkevésbé jelentős számjegyet. Ez a jobb oldali számjegy mellett van. Szorozzuk meg a számjegy tizedes értékét 16-tal. Ezt add hozzá az összeghez.
- Ugyanígy járjunk el a harmadik legkevésbé jelentős számjegy esetében is, de szorozzuk meg 162-vel (azaz 16 négyzetével, azaz 256-tal). Adjuk hozzá az összeghez.
- Folytassuk ezt minden egyes számjegy esetében, minden egyes helyet megszorozva egy másik 16-os hatványával. (4096, 65536 stb.)
|
| Helyszín | |||||
| 6 | 5 | 4 | 3 | 2 | 1 | |
| Érték | 1048576 (165) | 65536 (164) | 4096 (163) | 256 (162) | 16(161) | 1 (160) |
A következő módszert gyakrabban alkalmazzuk, amikor egy számot szoftverben alakítunk át. Nem kell tudnia, hány számjegyű a szám, mielőtt elkezdi, és soha nem szoroz többet 16-nál, de papíron hosszabbnak tűnik.
- Használja a decimális értéket minden egyes hexadecimális számjegyhez. A 0-9 esetében ez ugyanaz, de A = 10, B = 11, C = 12, D = 13, E = 14 és F = 15.
- Tartsa az alábbiakban az egyes lépéseknél átalakított számok összegét.
- Kezdje a legjelentősebb számjeggyel (a bal szélső számjegy). Ez az összeg első eleme.
- Ha van még egy számjegy, szorozza meg az összeget 16-tal, és adja hozzá a következő számjegy tizedes értékét.
- Ismételje meg a fenti lépést, amíg nincs több számjegy.
Példa: módszer: 5Fh és 3425h decimálisra, 1. módszer
|
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Példa: módszer: 5Fh és 3425h decimálisra, 2. módszer
|
|
|
|
| |||||||||||||||||||||||||||||||||||||||||
Kapcsolódó oldalak
- Bináris számrendszer
- Oktális számrendszer
- Tizedes számrendszer
Kérdések és válaszok
K: Mi a hexadecimális számrendszer?
V: A hexadecimális számrendszer egy 16 szimbólumból álló 16-os bázisú számrendszer.
K: Mi az a tíz szimbólum, amelyet a tízes számrendszerben (10-es bázis) használnak?
V: A tízes számrendszerben (10-es bázis) használt tíz szimbólum a 0,1,2,3,4,5,6,7,8 és 9.
K: Milyen hat extra szimbólumot használ a hexadecimális rendszer?
V: A hexadecimális rendszer az angol ábécéből vett betűket használja: A, B, C, D, E és F.
K: Hány bitet tartalmaz egy bájt a modern számítógépeken?
V: A modern számítógépeken egy bájt általában nyolc bitet tartalmaz.
K: Mit neveznek a mérnökök és az informatikusok négybites értékeknek?
V: A mérnökök és informatikusok a négybites értékeket nibble-nek (néha nybble-nek) nevezik.
K: Hogyan lehet elkerülni a hexadecimális számok írásakor a más számrendszerekkel való összetévesztést?
V: A hexadecimális számok írásakor a más számrendszerekkel való összetévesztés elkerülése érdekében a szám után vagy előtt "h"-t vagy "0x"-t tehetünk. Például a 63h vagy 0x63 a 63 hexadecimális számot jelenti.
Keres