Hexadecimaal talstelsel

Getalsystemen

Het hexadecimale talstelsel is een talstelsel met het grondtal 16. Het is een positiestelsel waarin niet, zoals gebruikelijk in het tientallige stelsel, met tien cijfers wordt gewerkt, maar met zestien cijfers. Hexadecimaal betekent letterlijk zestientallig. De cijfers 0 t/m 9 worden daarom uitgebreid met 'A' (=10) t/m 'F' (=15), ook wel 'a' t/m 'f'. In deze context fungeren deze letters dus als cijfers. In de computerwereld wordt de hexadecimale voorstelling van getallen veel gebruikt, omdat deze manier van representeren goed aansluit bij de binaire representatie in de computer.

Het woord 'hexadecimaal' wordt vaak afgekort als 'hex', hoewel dit 'zes' betekent.

In het hexadecimale talstelsel komt iedere positie overeen met een macht van 16. Een hexadecimaal getal wordt voorgesteld door een rij cijfers :

waarin

met de betekenis:

In het hexadecimale talstelsel is bijvoorbeeld het getal ABC de voorstelling van het getal 2748 (= 10×256 + 11×16 + 12) in het decimale stelsel.

Met een binair getal van vier bits kunnen de getallen 0 t/m 15 worden weergegeven, dus juist een hexadecimaal getal bestaande uit één (hexadecimaal) cijfer. Door steeds groepen van vier opeenvolgende bits in een binair getal als een hexadecimaal cijfer te schrijven ontstaat een hexadecimaal getal, dat voor ons overzichtelijker is dan de rij 0-en en 1-en. De rij 11000101011000100101110101110010 bijvoorbeeld is voor mensen praktisch onleesbaar. Daarom worden de cijfers in groepjes van vier (nibbles) gegroepeerd. Dat wordt dan 1100-0101-0110-0010-0101-1101-0111-0010. Ieder viertal wordt vervolgens in een hexadecimaal cijfer omgezet: C5625D72. Dit is veel overzichtelijker.

hex dec oct bin
00 0 000 0000 0000
01 1 001 0000 0001
02 2 002 0000 0010
03 3 003 0000 0011
04 4 004 0000 0100
05 5 005 0000 0101
06 6 006 0000 0110
07 7 007 0000 0111
08 8 010 0000 1000
09 9 011 0000 1001
0A 10 012 0000 1010
0B 11 013 0000 1011
0C 12 014 0000 1100
0D 13 015 0000 1101
0E 14 016 0000 1110
0F 15 017 0000 1111
10 16 020 0001 0000
11 17 021 0001 0001
64 100 144 0110 0100
FF 255 377 1111 1111
100 256 400 1 0000 0000

Om duidelijk te maken dat men een hexadecimale waarde bedoelt, worden vaak enkele tekens toegevoegd. De hexadecimale getallen 35 en EB kunnen geschreven worden als '35x', '35h' en '0x35', respectievelijk 'EBx', 'EBh' en '0xEB'.

Bovendien geldt in bijna elke programmeertaal de eis dat een waarde met een 'echt' cijfer begint (dus niet met A-F). Zou men in een programmeertaal '35' schrijven, dan wordt dat decimaal opgevat. Daarom wordt daar van de drie genoemde notaties de derde gebruikt, dus met het voorvoegsel '0x'.

Enkele (on)mogelijkheden:

  • Het genoemde formaat 0xABCD
  • ABCDh (begint met een letter, niet mogelijk in veel programmeertalen)
  • 0ABCDh (door een nul toe te voegen wordt dat probleem verholpen)
  • $ABCD
  • x'ABCD'

Voorloopnullen

[bewerken | brontekst bewerken]

Omdat men bij een binaire notatie de status van iedere bit duidelijk wil maken, worden binaire getallen getoond in een formaat met voorloopnullen. Bij hexadecimale notaties zijn voorloopnullen ook heel gebruikelijk. Het gaat hier dan om een code die minder duidelijk zou worden indien er geen nullen aan voorafgaan.

Toepassing van het hexadecimale stelsel

[bewerken | brontekst bewerken]

Het hexadecimale stelsel wordt vrijwel alleen gebruikt door degenen die op laag niveau met computers werken. Dit is een gevolg van de binaire (tweetallige) werking van de computer en de opbouw en werking van de geheugens in de computer. Door de toepassing van hogere programmeertalen is kennis van het hexadecimale stelsel meestal geen directe noodzaak meer.

Het hexadecimale stelsel wordt onder andere gebruikt voor:

  • het aanduiden van kleuren in HTML als RGB-waarde. Zo is FFFFFF de waarde voor wit, en 000000 de waarde voor zwart.
    • 1e byte FF 00 00 is R is Rood. (#FF0000)
    • 2e byte 00 FF 00 is G is Groen. (#00FF00)
    • 3e byte 00 00 FF is B is Blauw. (#0000FF)
  • het weergeven van een MAC-adres zoals 00:0C:6E:D2:11:E6
  • het weergeven van een IP-adres (IPv6).
  • het bekijken van binaire bestanden (in hex-editors)