Att Skriva Om Samma Värde i Binärt, Oktalt, Decimalt och Hexadecimalt
En talbas (eller “radix”) är hur många distinkta siffror ett sifferssystem använder innan det går över till nästa positionsvärde — decimalsystemet använder 10 (0–9), binärt använder 2 (0–1), oktalt använder 8 (0–7), och hexadecimalt använder 16 (0–9 sedan A–F). Ange ett heltal i någon av dessa fyra baser, så visar denna kalkylator samma värde skrivet i alla fyra samtidigt.
Binärt är hur datorer representerar varje värde internt (varje siffra är en “bit”); hexadecimalt är en vanlig förkortning för binärt inom programmering (varje hex-siffra representerar exakt 4 binära siffror, så det är mycket mer kompakt att läsa och skriva); oktalt dyker upp i äldre Unix-filrättigheter och vissa lågnivåsammanhang. Decimalt är bara det vardagliga bas-10-systemet.
Formeln
Varje positionellt sifferssystem fungerar på samma sätt: varje siffra multipliceras med basen upphöjd till dess positionsvärde, och summeras sedan:
där är siffran vid position (räknat från 0 vid siffran längst till höger). Att omvandla till en annan bas dividerar upprepade gånger decimalvärdet med den nya basen, och noterar varje rest — det omvända av summan ovan.
Räkneexempel
Att omvandla binärtalet 11111111 till dess tre andra baser:
- Läs från höger till vänster, varje
1bidrar med sitt positionsvärde: . - Decimalt: 255.
- Oktalt: att dividera 255 med 8 upprepade gånger (255 ÷ 8 = 31 r7, 31 ÷ 8 = 3 r7, 3 ÷ 8 = 0 r3) läser resterna nedifrån och upp som 377.
- Hexadecimalt: 255 ÷ 16 = 15 r15, 15 ÷ 16 = 0 r15 — båda resterna är 15 (F i hex), vilket ger FF.
Viktiga faktorer att tänka på
- En enda byte (8 bitar) kan representera exakt 256 distinkta värden — 0 till 255 i decimalt, eller 00 till FF i hexadecimalt. Det är exakt varför 255/FF är ett så vanligt referensvärde inom datavetenskap — det är det maximala värde en enda byte kan hålla, vilket dyker upp överallt från RGB-färgkanaler (0-255 per kanal) till nätverk och filformat.
- Oktalt var historiskt vanligare än det är idag, till stor del på grund av äldre datorordstorlekar. Oktalt (bas 8) mappar rent mot grupper om 3 binära siffror, vilket passade datorer byggda kring ordstorlekar delbara med 3 bitar — modern datateknik har till stor del övergått till hexadecimalt (som mappar mot grupper om 4 bitar) eftersom det mesta av modern hårdvara använder ordstorlekar delbara med 4 och 8, även om oktalt fortfarande förekommer i specifika sammanhang som Unix-filrättighetsnotation (t.ex. chmod 755).
- Ett vanligt programmerarfel är att blanda ihop ett tals bas enbart utifrån sammanhanget. Siffrorna “10” betyder mycket olika värden beroende på bas — 10 i decimalt, 2 i binärt, 8 i oktalt, 16 i hexadecimalt — vilket är varför programmeringsspråk vanligtvis kräver ett uttryckligt prefix (som 0x för hex eller 0b för binärt) för att ta bort all tvetydighet om vilken bas som avses.
- Vilket heltal som helst kan i teorin representeras i VILKEN bas som helst, inte bara dessa fyra. Binärt, oktalt, decimalt och hexadecimalt är helt enkelt de fyra baserna med mest vanlig användning i verkligheten inom datateknik och vardagsmatematik — samma positionsnotationsprincip denna kalkylator använder sträcker sig till vilken bas som helst, som bas 3, bas 20, eller bas 60 (grunden för hur tid och vinklar traditionellt delas upp).
Vanliga Misstag
- Att läsa ett tal med blandad bas utan prefix som decimalt som standard. “10” betyder tio i decimalt men bara två i binärt — kontrollera alltid (eller ange) vilken bas ett tal är skrivet i innan du räknar med det.
- Att anta att inledande nollor ändrar värdet. Precis som i decimalt är
0011i binärt samma värde som11— inledande nollor spelar bara roll för formatering med fast bredd (som att visa en hel byte), inte för talets faktiska värde. - Att glömma att hex-siffror över 9 använder bokstäver, inte tvåsiffriga tal. Hexadecimalt tio
skrivs som
A, inte10— att skriva10i hex betyder faktiskt sexton i decimalt, en vanlig källa till betydande fel. - Att försöka omvandla ett negativt tal direkt. Som FAQ:n ovan nämner beror negativa binära/hex-värden på en vald bitbredd och en tvåkomplement-konvention — det finns ingen enda entydig omvandling som det gör för icke-negativa heltal.
Bra att Veta
- Arbetar du med nätverksadresser istället för godtyckliga tal? IP-subnät Kalkylator tillämpar samma binär/decimal-relation specifikt på IPv4-adresser.
- Behöver du mycket stora eller mycket små decimaltal i kompakt form? Grundpotensform Kalkylator hanterar den typen av omvandling istället.
- Nyfiken på ett mycket äldre, positionsrelaterat sifferssystem? Romerska Siffror Kalkylator omvandlar till och från romerska siffror, som använder en helt annan (icke-positionell) metod.