Sekstentallsystemet

Sekstentallsystemet, bedre kjent som det heksadesimale tallsystemet, forkortet hex, er et tallsystem med grunntall eller base 16. Navnet «heksadesimal» er en hybrid sammensatt av det greske hexa (έξι (exi)) for «seks» og decimal fra det latinske ordet for «ti».

Tallsystemet har 16 ulike siffer: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E og F. Det tallsystemet vi bruker til vanlig kalles titallsystemet eller det desimale system. De heksadesimale sifrene A, B, C, D, E og F representerer titallsystemets verdier 10, 11, 12, 13, 14 og 15.

Når det er tale om ulike tallsystemer, bruker matematikere grunntallet (tallbasen) i senket skrift (subskript) etter tallet. Forrige setning kan da skrives slik: A16 = 1010, B16 = 1110, C16 = 1210, D16 = 1310, E16 = 1410, F16 = 1510. Grunntallet kan eventuelt skrives med bokstaver, på denne formen:  Ahex = 10dec.

De første 32 positive heltallene skrives på følgende måte:
 Titallsystemet (n10) 0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32 Sekstentallsystemet (n8) 0  1  2  3  4  5  6  7  8  9   A   B   C    D    E   F  10  11  12  13  14  15  16  17  18  19  1A  1B  1C  1D  1E  1F  20

Det heksadesimale tallsystemet er meget nyttig i arbeid med datamaskiner. Årsaken er at det er nært forbundet med totallsystemet, bedre kjent som det binære tallsystemet,  som datamaskiner er basert på. Sammenhengen er slik: Siden 16 = 24, kan ethvert firesifret binært tall skrives som et ensifret heksadesimalt tall og omvendt. Fire bit (fire binære siffer) kan altså uttrykkes ved ett enkelt heksadesimalt siffer. (Se tabellen nedenfor.) En byte som består av 8 bit kan da kompakt angis med et tosifret heksadesimalt tall. Dette er en stor fordel for mennesker, som leser for eksempel «B4» mye lettere enn byten «10110100».

 Titallsystemets 0–15 i fire ulike tallsystem
Tabellen nedenfor viser titallsystemets verdier 0–15 uttrykt i henholdsvis sekstentall-, titall-, åttetall- og totallsystemet.

                       0hex  = 0dec  = 0oct   0000          1hex  =  1dec  =  1oct   0001        2hex  =  2dec =   2oct   0010        3hex  =  3dec  =  3oct   0011                              4hex  =  4dec =   4oct   0100        5hex  =  5dec  =  5oct   0101        6hex  =  6dec =   6oct   0110    7hex  =  7dec  =  7oct   0111                           8hex  =  8dec  =  10oct   1000      9hex  =  9dec =   11oct   1001      Ahex =  10dec  =  12oct   1010     Bhex =  11dec  =   13oct   1011                         Chex =  12dec  =  14oct   1100     Dhex =  13dec =   15oct   1101     Ehex =  14dec =   16oct   1110     Fhex =  15dec  =  17oct   1111                         

 Omregning fra heksadesimalt til desimalt og omvendt 
Vi vet fra vanlig titallsmatematikk at et flersifret tall, for eksempel 273, har følgende betydning:

27310 = 2·102 + 7·101 + 3·100 = 200 + 70 + 3 = 273

Når man skal regne om (konvertere) et tall fra heksadesimalt til desimalt går man ut fra samme prinsipp:  siffer nr. 1 bakfra skal multipliseres med grunntallet i nullte potens (160=1), siffer nr. 2 med grunntallet i første potens (161=16) osv. Å konvertere det heksadesimale 2D4 til desimalt blir da slik:

2D416 = (2·162 + 13·161 + 4·160)10 = 51210 + 20810 + 410 = 72410

For å konvertere et tall fra titallsystemet til sekstentallsystemet må man gjentatte ganger utføre heltallsdivisjon med grunntallet 16 og merke seg resten, som vist i eksempelet med tallet 724 nedenfor:
 Heltalldivisjon  Rest 724/16 = 45  4 45/16 = 2  13 = D16  2/16 = 0  2  ↑
Så begynner man med restene nedenfra. Tallet 724 blir dermed 2D416 i sekstentallsystemet.

Notasjon i ulike programmeringsspråk
Det er mange måter å betegne heksadesimale tall i ulike programmeringsspråk:
 Ada og VHDL omslutter heksadesimale tall med «numeriske tegn», f.eks. «16#5A3#». (Merk: Ada godtar denne notasjonen for alle tallsystemer fra 2 til 16, for både heltall (integer) og flyttall.)
 C, C++ og andre språk med tilsvarende syntaks (sånn som Java) prefikser heksadesimale tall med «0x», f.eks. «0x5A3». 0-tallet i startet blir brukt fordi tall må starte med et numerisk tegn, og «x» står for heksadesimal.
 Pascal og noen Assembler-kompilatorer indikerer heksadesimaler med en tilføyd «h» (hvis noen av tallene starter med en bokstav, så tilføyer man også «0» i starten), f.eks. «0A3Ch», «5A3h».
 Andre assembler-kompilatorer (AT&T, Motorola) og noen versjoner av BASIC bruker prefikset «$», f.eks. «$5A3».
 Noen versjoner av BASIC prefikserer heksadesimale tall med «&h», f.eks. «&h5A3».
 ActionScript, programmeringsspråket til Adobe Flash, omtaler heksadesimale tall med 0x, eks. 0xFFFFFF.

Det finnes ingen enighet om en felles notasjonsstandard, så alle konvensjonene over er i bruk, noen ganger også i samme fremstillng. Forøvrig, siden det er få andre bruksområder for disse, byr dette på lite problemer.

 Brøker 
Sekstentallsystemet er bra til å lage brøker med (begge sider heksadesimaltallsuttrykk):

1/2 = 0,8
1/3 = 0,5555...
1/4 = 0,4
1/5 = 0,3333...
1/6 = 0,2AAAA...
1/8 = 0,2
1/A = 0,19999...
1/C = 0,15555...
1/F = 0,1111...

Fordi tallbasen er kvadratisk, danner heksadesimaler oftere uløselige brøker enn titallsystemet. Repeterende desimaler oppstår når nevneren har en primfaktor som ikke finnes i telleren. I sammenheng med heksadesimale tall, gjelder dette hvis og bare hvis nevneren ikke er en toer-potens.

Se tallsystemer for en oversikt over systemer med andre tallbaser.

 Se også 
 Webfarger, også kalt heksadesimalfarger

Referanser

Kategori:Tallsystemer