Gå til innhold

Det Heksadesimale tallsystemet


Anbefalte innlegg

Heksadesimal (også kjent som sekstentallsystemet) er et tall system med 16 ulike siffer, det benytter 0 - 9 fra det desimale tallsystemet, og deretter A - F. A = 10, B = 11, osv. Merk at C, C++ og andre språk med lignende syntaks (f.eks Java) prefikser heksadesimale tall med "0x" (uten gåseøyne), f.eks 0x5F. Datamaskiner liker heksadesimale tall siden bits og bytes er svært lett å representere med dette tallsystemet. En byte er lik FF, og FF er lik 255(desimalt).

 

 

Telle i heksadesimal

 

Hvordan vi teller i det desimale tallsystemet: Vi teller først fra 0 til 9, så begynner vi på nytt med 1 tall først, 10, 11, 12 osv. Dette fortsetter helt opp til tallet 19, da begynner vi på nytt med tallet 2 først, 20, 21, 22 osv. Håper dere ser systemet. Vis du lurer på hvorfor vi begynner med 1 først og ikke 0, er dette fordi da vi begynner å telle opp til 9, bruker vi egentlig 0. Null har ingen verdi, så det er ikke noe poeng å sette den først. Så ville det jo og sett litt dumt ut å telle slik: 00, 01, 02, 03 osv.

 

Hvordan vi teller i det heksadesimale tallsystemet: Dette gjør vi helt likt som i det desimale tallsystemet, bare vi ikke teller opp til 9, men F (15). Altså vi teller fra 0 til F, etter dette setter vi 1 først. Da vi kommer til 1F, setter vi tallet 2 først, og fortsetter.

 

Eksempel:

Hex:  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
Des:  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

 

 

Gjøre desimal om til heksadesimal

 

Dere har sikkert dividert med rest. Det vil si at dere sitter igjen med et helt tall og en rest. Måten vi går fram på for å gjøre desimal om til heksadesimal: Vi deler tallet på 16 (siden tallsystemet har en base på 16), og noterer resten. Deretter tar vi tallet vi fikk fra divisjons stykket og deler det på 16, så noterer vi resten. Og slik fortsetter vi.

 

La oss gjøre 95 om til heksadesimal:

95:16 = 5, rest = F (15)
5:16 = 0, rest = 5

95 (desimal) = 5F (heksadesimal)

Som du kansje ser, lager vi resultatet ut fra resten. Merk og at om du sitter igjen med et tall som er mindre en 16, blir det tallet resten. Som: 5:16 = 0, rest 5.

 

 

Gjøre heksadesimal om til desimal

 

Her bruker vi bare formelen: siffer * tallsystem ^ posisjon. Merk at posisjon begynner på 0.

 

La oss gjøre 5F om til desimal:

   5 * 16 ^ 1 + F(15) * 16 ^ 0
= 5 * 16 + 15 * 1
= 80 + 15
= 95

 

Noen ord til sist

 

Om det er noe som er feil kan du godt ta det over pm eller poste så skal jeg rette det snarest, eller så er det bare å stille spørsmål om du lurer på noe. Hvis noen føler for det kan de godt poste denne andre plasser eller bruke den på en hjemmeside, så lenge ingenting blir endret og navne mitt kommer med ;)

 

Magnus Hauge Bakke

  • Liker 1
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

Rart at jeg faktisk tidligere idag tenkte på å spørre deg om å lage en slik guide :D

 

Takk! Skal begynne å lese på den nå :thumbs:

Lenke til kommentar

Nok en fin guide om tallsystemer.

 

Du kunne kanskje lagt til hvor lett det er å gå fra hex til bin og bin til hex? Dette er veldig lett om man "lærer" seg å telle til 15 i binær.

 

C0FFEEh om til binær:

 C   0     F    F   E    E
1100 0000 1111 1111 1110 1110

 

Like lett å gå andre veien:

 

11011110101011011011111011101111b om til hex:

Vi deler tallet opp i deler på 4 bit:

1101 1110 1010 1101 1011 1110 1110 1111
D    E    A     D   B     E   E    F

 

EDIT: Du kan forresten legge til at man også bruker h som suffiks etter tallet for å indikere at det er heksadesimal i en del språk (for det meste assembly.)

Endret av Jaffe
Lenke til kommentar

Jeg skrev at vi bruker 0x som suffiks i f.eks C, C++, Java eller lignende. Men kan sikkert slenge på at vi bruker h i f.eks assembly. Skal og legge til hvordan du gjør om til binær og omvendt, fikser dette i morgen ;)

Lenke til kommentar
  • 2 måneder senere...
  • 5 år senere...
  • 2 måneder senere...

Hex-fargekode er noe som aktivt brukes, samt kutter ned lengden i forhold til f. eks RGB. Det er utrolig lett å konvertere mellom disse da de har en direkte sammenheng, her har du et eksempel (i python):

 

# -*- coding: utf-8 -*-
def rgb_to_hex(r,g,b): #Forenkling: integer til hex format %x..:
  rgb = (r,g,b)
  print '%x%x%x' % rgb

def rgb2hex(r,g,b):
  hexchars = "0123456789ABCDEF"
  print hexchars[r / 16] + hexchars[r % 16] \
 + hexchars[g / 16] + hexchars[g % 16] \
 + hexchars[b / 16] + hexchars[b % 16]

rgb_to_hex(255,210,255)  
rgb2hex(255,210,255)

 

Kort forklaring...

Module (%) er brukt for å hente "resten".

 

EG, for å konvertere #FFFFFF til RGB må vi gjøre slik:

F = 15

F * 16 + F = 255

 

Andre veien...

F = 15 = 255 / 16

F = 15 = 255 % 16 <------ Henter "resten"

255=FF

Endret av warpie
Lenke til kommentar
  • 7 måneder senere...

Hei! Driver med det heksadesimale tallsystemet i matte nå, men vet ikke helt om jeg har forstått det rikitig, og kommer ikke helt videre i oppgaven eller.

 

Har prøvd å tegnet ned en tallinje for å forstå det bedre. Har kommet til:

FA - FB - FC - FD - FE - FF - 160 (?) - 161 - 162 - 163 - 164 - 165 - 166 - 167 -168 -169 .. er dette riktig? Og hvordan fortsetter den nå?

 

Har søkt litt rundt på nettet, men står bare om hvilken symboler som brukes, og det har jeg forsåvidt skjønt. Håper på hjelp!

Lenke til kommentar

Hei! Driver med det heksadesimale tallsystemet i matte nå, men vet ikke helt om jeg har forstått det rikitig, og kommer ikke helt videre i oppgaven eller.

 

Har prøvd å tegnet ned en tallinje for å forstå det bedre. Har kommet til:

FA - FB - FC - FD - FE - FF - 160 (?) - 161 - 162 - 163 - 164 - 165 - 166 - 167 -168 -169 .. er dette riktig? Og hvordan fortsetter den nå?

 

Har søkt litt rundt på nettet, men står bare om hvilken symboler som brukes, og det har jeg forsåvidt skjønt. Håper på hjelp!

Nei, det er feil, tallinjen går slik:

 

FA - FB - FC - FD - FE - FF - 100 - 101 - 102 - 103 - 104 - 105 - 106 - 107 - 108 - 109 - 10A osv.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...