Sekstentallsystemet

(Omdirigert fra «Heksadesimaltall»)

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 rediger

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

0hex = 0dec = 0oct 0 0 0 0
1hex = 1dec = 1oct 0 0 0 1
2hex = 2dec = 2oct 0 0 1 0
3hex = 3dec = 3oct 0 0 1 1
4hex = 4dec = 4oct 0 1 0 0
5hex = 5dec = 5oct 0 1 0 1
6hex = 6dec = 6oct 0 1 1 0
7hex = 7dec = 7oct 0 1 1 1
8hex = 8dec = 10oct 1 0 0 0
9hex = 9dec = 11oct 1 0 0 1
Ahex = 10dec = 12oct 1 0 1 0
Bhex = 11dec = 13oct 1 0 1 1
Chex = 12dec = 14oct 1 1 0 0
Dhex = 13dec = 15oct 1 1 0 1
Ehex = 14dec = 16oct 1 1 1 0
Fhex = 15dec = 17oct 1 1 1 1

Omregning fra heksadesimalt til desimalt og omvendt rediger

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 rediger

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 rediger

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å rediger

Referanser rediger