Hvad et positionssystem er
I det decimale tal 4.095 er 4-tallet ikke værd 4: det er værd 4.000, fordi det står på tusindernes plads. Hver position ganger cifret med en potens af 10 (1, 10, 100, 1.000 …). Det er et positionssystem, og grundtallet er antallet af forskellige cifre, man bruger: ti i det decimale.
Binær virker på samme måde, men med grundtal 2: der findes kun 0 og 1, og hver plads er dobbelt så meget værd som den forrige. Hexadecimal bruger grundtal 16: de seksten cifre er 0 til 9 og bogstaverne A til F, og hver plads er 16 gange så meget værd som den forrige. Computere arbejder i binær, fordi et kredsløb kun skal skelne mellem to tilstande (slukket og tændt), og hexadecimal er en kort måde at skrive disse bit på.
| Position (fra højre mod venstre) | Værdi i binær | Værdi i hexadecimal |
|---|---|---|
| 1. | 1 | 1 |
| 2. | 2 | 16 |
| 3. | 4 | 256 |
| 4. | 8 | 4.096 |
| 5. | 16 | 65.536 |
| 6. | 32 | 1.048.576 |
| 7. | 64 | 16.777.216 |
| 8. | 128 | 268.435.456 |
Fra binær til decimal, i hånden
Du skriver hvert ciffer med værdien af sin plads og lægger kun de pladser sammen, hvor der står et 1-tal. Eksempel med 1101: fra højre mod venstre er pladserne værd 1, 2, 4 og 8.
- Skriv tallet og under det værdien af hver position: 1 1 0 1 over 8 4 2 1.
- Se efter, hvad der står på hver plads: et 1-tal på 8'erens plads, et 1-tal på 4'erens, et 0 på 2'erens og et 1-tal på 1'erens.
- Ignorer de pladser, hvor der står 0 (her 2'erens).
- Læg sammen: 8 + 4 + 0 + 1 = 13. Så 1101 i binær er 13 i decimal.
Med flere cifre er det det samme: 11111111 er 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, den største værdi, der kan være i 8 bit. Og 10110110 er 128 + 32 + 16 + 4 + 2 = 182.
Fra decimal til binær, med gentagne divisioner
Du dividerer tallet med 2 igen og igen og noterer resten fra hver division (altid 0 eller 1), indtil kvotienten er 0. Resterne, læst nedefra og op, er det binære tal. Eksempel med 45:
- 45 ÷ 2 = 22, rest 1
- 22 ÷ 2 = 11, rest 0
- 11 ÷ 2 = 5, rest 1
- 5 ÷ 2 = 2, rest 1
- 2 ÷ 2 = 1, rest 0
- 1 ÷ 2 = 0, rest 1
Læser du resterne nedefra og op, får du 101101. For at kontrollere det lægger du sammen: 32 + 8 + 4 + 1 = 45.
Der er en alternativ metode, som mange foretrækker: træk potenser af 2 fra, fra den største til den mindste. For 200: 128 er der plads til (der er 72 tilbage), 64 er der plads til (der er 8 tilbage), 32 og 16 er der ikke plads til, men det er der til 8 (der er 0 tilbage). De brugte pladser er 128, 64 og 8, så 200 = 11001000.
Hexadecimal: seksten cifre og en tabel at have ved hånden
Da der ikke findes cifre for 10 til 15, bruger man bogstaverne A, B, C, D, E og F. Et hexadecimalt ciffer svarer præcis til fire bit (en «nibble»), og derfor er det så praktisk: en byte på 8 bit skrives med blot to hexadecimale cifre.
For at regne hexadecimal om til decimal ganger du hvert ciffer med den potens af 16, der hører til pladsen, og lægger sammen. For eksempel er 3F = 3 × 16 + 15 = 63 og A3 = 10 × 16 + 3 = 163.
| Decimal | Binær (4 bit) | Oktal | Hexadecimal |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
Hvorfor man bruger hexadecimal: bytes, farver og adresser
En byte er 8 bit og går fra 0 til 255 (00000000 til 11111111). At skrive bit i hånden er langsomt og giver let fejl; i hexadecimal er den samme byte to tegn, fra 00 til FF. For at regne binær om til hexadecimal deler du bittene i grupper på fire fra højre og erstatter hver gruppe med dens ciffer fra tabellen. Eksempel: 11010111 deles i 1101 og 0111, som er D og 7, så det er D7. Som decimal er det 13 × 16 + 7 = 215.
Det bedst kendte tilfælde er webfarver. I #FF8800 er der tre bytes: FF til rød (255), 88 til grøn (136) og 00 til blå (0). Det er en kraftig orange: al den røde, lidt over halvdelen af den grønne og ingen blå. Hexadecimal optræder også i hukommelsesadresser, fejlkoder og netværksidentifikatorer.
Fra tekst til binær med ASCII
En computer gemmer hvert bogstav som et tal, og det tal som bit. I ASCII-tabellen er A 65, som i binær med 8 bit er 01000001. Ordet «Hi» er to bogstaver: H er 72 (01001000) og i er 105 (01101001), så det skrives 01001000 01101001. Med «Hola» er det 72, 111, 108 og 97, altså 01001000 01101111 01101100 01100001, eller i hexadecimal 48 6F 6C 61.
Værktøjet bruger UTF-8-kodning: for de almindelige engelske bogstaver fylder hvert tegn én byte på 8 bit, men et æ, et ø, et å, et bogstav med accent eller en emoji fylder flere bytes og giver derfor mere end 8 bit. For eksempel er æ to bytes: 11000011 10100110 (C3 A6 i hexadecimal).
Sådan gør du det hele med værktøjet
Omregneren «Binær, decimal og hex» er god til at kontrollere dine udregninger i hånden eller til at løse lange tal uden fejl.
- Skriv tallet i feltet for dets talsystem: «Decimal (grundtal 10)», «Binær (grundtal 2)», oktal eller «Hexadecimal (grundtal 16)». De tre andre udfyldes af sig selv.
- Hvis cifret ikke passer til talsystemet (for eksempel et 2-tal i binær), giver værktøjet besked.
- Til tekst skriver du den i feltet «Tekst» og ser «Binær (8 bit pr. tegn)» og hexadecimal pr. byte. Du kan også indsætte bit i grupper på 8 for at komme tilbage til tekst.
- Til særlige talsystemer bruger du «Vilkårligt grundtal (2 til 36)»: du vælger det grundtal, du går fra, det, du går til, og tallet.
Grænserne: værktøjet regner kun hele tal, der ikke er negative (ingen decimaler og intet fortegn), og sætter ikke nuller foran for dig, så hvis du vil have fast 8 bit, skal du selv udfylde (13 er 00001101). Intet af det, du skriver, forlader din browser.
Almindelige fejl
- At læse resterne forkert vej: ved gentagne divisioner er den første rest cifret længst til højre, ikke det længst til venstre.
- At glemme nuller foran, når de er nødvendige: 13 er 1101, men som byte er det 00001101. Det har betydning, når længden er en del af data, som i en farve eller en netværksmaske.
- At forveksle bogstavet O med nullet eller hexadecimal B (11) med et 8-tal, når du kopierer. I hexadecimal er bogstaverne ens med stort og småt, men de er ikke det samme som et ciffer.
- At lade præfikset 0x eller tegnet # stå, når du omregner: de er kun mærker for, at tallet er hexadecimalt, og skal fjernes, før du indsætter.
- At tro, at 10 i binær er ti: det er to. Det samme «10» er værd 2, 10 eller 16 alt efter talsystemet.
Opgaver med løsning til at øve sig på
Prøv at løse hver enkelt, før du ser svaret, og kontrollér bagefter med værktøjet.
- Regn 10110110 om til decimal og hexadecimal. Svar: 128 + 32 + 16 + 4 + 2 = 182; i grupper på fire er 1011 0110 = B6.
- Regn 200 om til binær og hexadecimal. Svar: 11001000 og C8 (12 × 16 + 8 = 200).
- Regn 7F om til binær. Svar: 7 = 0111 og F = 1111, så 01111111, som i decimal er 127.
- Skriv «OK» i binær. Svar: O er 79 og K er 75, altså 01001111 01001011.
Ofte stillede spørgsmål
Hvordan regner jeg 1101 om fra binær til decimal?
Du lægger værdierne sammen for de pladser, hvor der står et 1-tal: 8 + 4 + 1 = 13. Det andet ciffer fra højre er et 0, så 2'eren tæller ikke med.
Hvad er 255 i binær og i hexadecimal?
255 er 11111111 i binær og FF i hexadecimal. Det er den største værdi, der kan være i en byte på 8 bit.
Hvorfor bruger hexadecimal bogstaver?
Fordi det har brug for seksten forskellige symboler, og det decimale system kun giver ti (0 til 9). Derfor er A værd 10, B værd 11, C værd 12, D værd 13, E værd 14 og F værd 15.
Hvor mange forskellige tal kan man skrive med 8 bit?
256, fra 0 til 255. Generelt kan man med n bit repræsentere 2 i n'te potens værdier.
Regner værktøjet negative tal eller tal med decimaler om?
Nej, kun hele tal, der ikke er negative. Til tekst bruger det UTF-8, så bogstaver med accent, æ, ø, å og emojis giver mere end 8 bit.