At Omskrive Den Samme Værdi På Tværs af Binært, Oktalt, Decimalt og Hexadecimalt
Et talsystem (eller “radix”) er, hvor mange forskellige cifre et talsystem bruger, før det overfører til den næste pladsværdi — decimal bruger 10 (0–9), binært bruger 2 (0–1), oktalt bruger 8 (0–7), og hexadecimalt bruger 16 (0–9 og derefter A–F). Indtast et helt tal i et hvilket som helst af disse fire talsystemer, og denne beregner viser den samme værdi skrevet i alle fire på én gang.
Binært er, hvordan computere repræsenterer hver værdi internt (hvert ciffer er én “bit”); hexadecimal er en almindelig forkortelse for binært i programmering (hvert hex-ciffer står for præcis 4 binære cifre, så det er langt mere kompakt at læse og indtaste); oktalt dukker op i ældre Unix-filrettigheder og nogle lavniveau-sammenhænge. Decimal er blot hverdagens base-10-system.
Formlen
Ethvert positionelt talsystem virker på samme måde: hvert ciffer ganges med talsystemet opløftet i dets pladsværdipotens, og summeres derefter:
hvor er cifferet ved position (talt fra 0 ved det yderste højre ciffer). At konvertere til et andet talsystem dividerer gentagne gange decimalværdien med det nye talsystem, og noterer hver rest — det omvendte af summen ovenfor.
Eksempel
At konvertere binært 11111111 til dets tre andre talsystemer:
- Læs fra højre til venstre, hver
1bidrager med sin pladsværdi: . - Decimalt: 255.
- Oktalt: at dividere 255 med 8 gentagne gange (255 ÷ 8 = 31 r7, 31 ÷ 8 = 3 r7, 3 ÷ 8 = 0 r3) læser resterne bund-til-top som 377.
- Hexadecimalt: 255 ÷ 16 = 15 r15, 15 ÷ 16 = 0 r15 — begge rester er 15 (F i hex), hvilket giver FF.
Vigtige Faktorer At Overveje
- En enkelt byte (8 bit) kan repræsentere præcis 256 forskellige værdier — 0 til 255 i decimal, eller 00 til FF i hexadecimal. Dette er præcis grunden til, at 255/FF er en så almindelig referenceværdi inden for databehandling — det er den maksimale værdi, en enkelt byte kan indeholde, hvilket dukker op overalt fra RGB-farvekanaler (0-255 per kanal) til netværk og filformater.
- Oktal var historisk mere almindeligt, end det er i dag, hovedsageligt på grund af ældre computerordstørrelser. Oktal (base 8) passer pænt sammen med grupper af 3 binære cifre, hvilket passede computere bygget omkring ordstørrelser delelige med 3 bit — moderne databehandling er hovedsageligt skiftet til hexadecimal (som passer sammen med grupper af 4 bit), da de fleste moderne hardwaredele bruger ordstørrelser delelige med 4 og 8, selvom oktal stadig optræder i specifikke sammenhænge som Unix-filrettighedsnotation (f.eks. chmod 755).
- En almindelig programmørfejl er at forveksle et tals talsystem ud fra konteksten alene. Cifrene “10” betyder meget forskellige værdier afhængigt af talsystemet — 10 i decimal, 2 i binært, 8 i oktalt, 16 i hexadecimalt — hvilket er grunden til, at programmeringssprog typisk kræver et eksplicit præfiks (som 0x for hex eller 0b for binært) for at fjerne enhver tvetydighed om, hvilket talsystem der menes.
- Ethvert helt tal kan teoretisk repræsenteres i ETHVERT talsystem, ikke kun disse fire. Binært, oktalt, decimalt og hexadecimalt er blot de fire talsystemer med den mest almindelige virkelige brug inden for databehandling og hverdagsmatematik — det samme positionelle notationsprincip, denne beregner bruger, udvides til ethvert talsystem, som base 3, base 20, eller base 60 (grundlaget for, hvordan tid og vinkler traditionelt opdeles).
Almindelige Fejl
- At læse et tal med et blandet talsystem uden præfiks som decimal som standard. “10” betyder ti i decimal, men kun to i binært — tjek altid (eller angiv), hvilket talsystem et tal er skrevet i, før du regner med det.
- At antage, at foranstillede nuller ændrer værdien. Ligesom i decimal er
0011i binært den samme værdi som11— foranstillede nuller er kun meningsfulde til fastbredde-formatering (som at vise en hel byte), ikke for tallets faktiske værdi. - At glemme, at hex-cifre over 9 bruger bogstaver, ikke tocifrede tal. Hexadecimalt ti skrives
som
A, ikke10— at skrive10i hex betyder faktisk seksten i decimal, en almindelig kilde til betydelige fejl. - At forsøge at konvertere et negativt tal direkte. Som FAQ’en ovenfor bemærker, afhænger negative binære/hex-værdier af en valgt bitbredde og en to’s-komplement-konvention — der er ingen enkelt entydig konvertering, som der er for ikke-negative hele tal.
Godt at Vide
- Arbejder du med netværksadresser i stedet for vilkårlige tal? IP Subnet Beregner anvender det samme binære/decimale forhold specifikt på IPv4-adresser.
- Har du brug for meget store eller meget små decimaltal i en kompakt form? Videnskabelig Notation Beregner håndterer den slags konvertering i stedet.
- Nysgerrig efter et meget ældre, positionsrelateret talsystem? Romertal Beregner konverterer til og fra romertal, som bruger en helt anden (ikke-positionel) tilgang.