Hopp til innhold

Sekstentallsystemet

Fra Wikipedia, den frie encyklopedi
(Omdirigert fra «Hexadesimal»)

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) 01234567891011121314151617181920212223242526272829303132
Sekstentallsystemet (n8) 0123456789ABCDEF101112131415161718191A1B1C1D1E1F20

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 | rediger kilde]

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

0hex=0dec=0oct0000
1hex=1dec=1oct0001
2hex=2dec=2oct0010
3hex=3dec=3oct0011
4hex=4dec=4oct0100
5hex=5dec=5oct0101
6hex=6dec=6oct0110
7hex=7dec=7oct0111
8hex=8dec=10oct1000
9hex=9dec=11oct1001
Ahex=10dec=12oct1010
Bhex=11dec=13oct1011
Chex=12dec=14oct1100
Dhex=13dec=15oct1101
Ehex=14dec=16oct1110
Fhex=15dec=17oct1111

Omregning fra heksadesimalt til desimalt og omvendt

[rediger | rediger kilde]

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:

HeltalldivisjonRest
724/16 = 454
45/16 = 213 = D16
2/16 = 02

Så begynner man med restene nedenfra. Tallet 724 blir dermed 2D416 i sekstentallsystemet.

Notasjon i ulike programmeringsspråk

[rediger | rediger kilde]

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.

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.

Referanser

[rediger | rediger kilde]