Binair, decimaal en hexadecimaal: zo reken je van het ene naar het andere om

Omrekenen tussen talstelsels lijkt magie, tot je ziet dat het altijd hetzelfde idee is: elk cijfer telt mee naargelang zijn plaats. Hier leer je met de hand van binair naar decimaal en van decimaal naar binair te rekenen, hexadecimaal zonder angst te lezen en tekst naar bits om te zetten, met uitgewerkte sommen en een tabel van 0 tot 15 om bij de hand te hebben.

Bijgewerkt:

Wat is een positiestelsel

In het decimale getal 4.095 is de 4 niet 4 waard: hij is 4.000 waard, omdat hij op de plaats van de duizendtallen staat. Elke positie vermenigvuldigt het cijfer met een macht van 10 (1, 10, 100, 1.000…). Dat is het positiestelsel, en het grondtal is het aantal verschillende cijfers dat gebruikt wordt: tien in het decimale stelsel.

Binair werkt hetzelfde, maar met grondtal 2: er bestaan alleen 0 en 1, en elke plaats is twee keer zoveel waard als de vorige. Hexadecimaal gebruikt grondtal 16: de zestien cijfers zijn 0 tot 9 en de letters A tot F, en elke plaats is 16 keer zoveel waard als de vorige. Computers werken binair omdat een schakeling maar twee toestanden hoeft te onderscheiden (uit en aan), en hexadecimaal is een korte manier om die bits op te schrijven.

Wat elke plaats waard is. Als je de machten van 2 tot en met 128 uit je hoofd kent, bespaar je je bijna alle rekenwerk.
Positie (van rechts naar links)Waarde in binairWaarde in hexadecimaal
1e11
2e216
3e4256
4e84.096
5e1665.536
6e321.048.576
7e6416.777.216
8e128268.435.456

Van binair naar decimaal, met de hand

Je schrijft elk cijfer op met de waarde van zijn plaats en telt alleen de plaatsen op waar een 1 staat. Voorbeeld met 1101: van rechts naar links zijn de plaatsen 1, 2, 4 en 8 waard.

  1. Schrijf het getal op en daaronder de waarde van elke positie: 1 1 0 1 boven 8 4 2 1.
  2. Kijk wat er op elke plaats staat: een 1 op de plaats van 8, een 1 op die van 4, een 0 op die van 2 en een 1 op die van 1.
  3. Negeer de plaatsen met een 0 (hier die van 2).
  4. Tel op: 8 + 4 + 0 + 1 = 13. Dus 1101 binair is 13 decimaal.

Met meer cijfers is het hetzelfde: 11111111 is 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, de grootste waarde die in 8 bits past. En 10110110 is 128 + 32 + 16 + 4 + 2 = 182.

Van decimaal naar binair, met herhaald delen

Je deelt het getal telkens door 2 en noteert de rest van elke deling (altijd 0 of 1), tot je bij quotiënt 0 uitkomt. De resten, van onder naar boven gelezen, vormen het binaire getal. Voorbeeld met 45:

Lees je de resten van onder naar boven, dan krijg je 101101. Tel om te controleren op: 32 + 8 + 4 + 1 = 45.

Er is ook een alternatieve methode die veel mensen fijner vinden: machten van 2 aftrekken van groot naar klein. Voor 200: de 128 past (er blijft 72 over), de 64 past (er blijft 8 over), de 32 en 16 passen niet, maar de 8 wel (er blijft 0 over). De gebruikte plaatsen zijn 128, 64 en 8, dus 200 = 11001000.

Hexadecimaal: zestien cijfers en een tabel om bij de hand te hebben

Omdat er geen cijfers bestaan voor 10 tot 15, worden de letters A, B, C, D, E en F gebruikt. Eén hexadecimaal cijfer komt precies overeen met vier bits (een «nibble»), en daarom is het zo handig: een byte van 8 bits schrijf je met slechts twee hexadecimale cijfers.

Om van hexadecimaal naar decimaal te rekenen vermenigvuldig je elk cijfer met de macht van 16 van zijn plaats en tel je op. Bijvoorbeeld 3F = 3 × 16 + 15 = 63 en A3 = 10 × 16 + 3 = 163.

Van 0 tot 15 in de vier talstelsels die de tool toont.
DecimaalBinair (4 bits)OctaalHexadecimaal
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

Waarom hexadecimaal wordt gebruikt: bytes, kleuren en adressen

Een byte is 8 bits en loopt van 0 tot 255 (00000000 tot 11111111). Bits met de hand opschrijven is traag en foutgevoelig; in hexadecimaal is dezelfde byte twee tekens, van 00 tot FF. Om van binair naar hexadecimaal te gaan, verdeel je de bits van rechts af in groepen van vier en vervang je elke groep door het cijfer uit de tabel. Voorbeeld: 11010111 splitst in 1101 en 0111, dat zijn D en 7, dus de waarde is D7. Decimaal is dat 13 × 16 + 7 = 215.

Het bekendste geval zijn webkleuren. In #FF8800 zitten drie bytes: FF voor rood (255), 88 voor groen (136) en 00 voor blauw (0). Het is een intens oranje: al het rood, iets meer dan de helft van het groen en geen blauw. Hexadecimaal komt ook voor in geheugenadressen, foutcodes en netwerkidentificaties.

Van tekst naar binair met ASCII

Een computer bewaart elke letter als een getal, en dat getal als bits. In de ASCII-tabel is de A gelijk aan 65, wat in binair van 8 bits 01000001 is. Het woord «Hi» bestaat uit twee letters: H is 72 (01001000) en i is 105 (01101001), dus het wordt geschreven als 01001000 01101001. Met «Hola» zijn het 72, 111, 108 en 97, dus 01001000 01101111 01101100 01100001, of in hexadecimaal 48 6F 6C 61.

De tool gebruikt de UTF-8-codering: voor gewone Engelse letters neemt elk teken één byte van 8 bits in, maar een é, een letter met trema of een emoji neemt meerdere bytes in, dus dat geeft meer dan 8 bits. De ñ bijvoorbeeld bestaat uit twee bytes: 11000011 10110001 (C3 B1 in hexadecimaal).

Zo doe je dit allemaal met de tool

De omzetter «Binair, decimaal en hex» is handig om je sommen met de hand te controleren of om lange getallen foutloos op te lossen.

  1. Typ het getal in het veld van zijn talstelsel: «Decimaal (grondtal 10)», «Binair (grondtal 2)», octaal of «Hexadecimaal (grondtal 16)». De andere drie worden vanzelf ingevuld.
  2. Als een cijfer niet bij het talstelsel hoort (bijvoorbeeld een 2 in binair), meldt de tool dat.
  3. Voor tekst typ je die in het veld «Tekst» en kijk je naar «Binair (8 bits per teken)» en het hexadecimale resultaat per byte. Je kunt ook bits in groepen van 8 plakken om terug naar tekst te gaan.
  4. Voor ongebruikelijke talstelsels gebruik je «Elk talstelsel (2 tot 36)»: je kiest het beginstelsel, het doelstelsel en het getal.

De beperkingen: de tool rekent alleen niet-negatieve gehele getallen om (zonder decimalen of teken) en zet niet zelf voorloopnullen neer, dus als je vaste 8 bits wilt, moet je zelf aanvullen (13 is 00001101). Niets van wat je typt verlaat je browser.

Veelgemaakte fouten

Uitgewerkte oefeningen

Probeer elke opgave op te lossen voordat je naar het antwoord kijkt en controleer daarna met de tool.

Veelgestelde vragen

Hoe reken ik 1101 van binair om naar decimaal?

Je telt de waarden op van de plaatsen waar een 1 staat: 8 + 4 + 1 = 13. Het tweede cijfer van rechts is een 0, dus de 2 telt niet mee.

Hoeveel is 255 in binair en in hexadecimaal?

255 is 11111111 in binair en FF in hexadecimaal. Het is de grootste waarde die in een byte van 8 bits past.

Waarom gebruikt hexadecimaal letters?

Omdat het zestien verschillende symbolen nodig heeft en het decimale stelsel er maar tien levert (0 tot 9). Daarom is A gelijk aan 10, B aan 11, C aan 12, D aan 13, E aan 14 en F aan 15.

Hoeveel verschillende getallen kun je met 8 bits schrijven?

256, van 0 tot 255. In het algemeen kun je met n bits 2 tot de macht n waarden weergeven.

Rekent de tool negatieve getallen of decimalen om?

Nee, alleen niet-negatieve gehele getallen. Voor tekst gebruikt hij UTF-8, dus letters met accenten en emoji's geven meer dan 8 bits.