Ga naar hoofdinhoud

Talstelsels

Als programmeur kom je regelmatig getallen tegen die er anders uitzien dan je gewend bent. CSS-kleuren zoals #FF5733, bestandsrechten zoals chmod 755, of een IPv6-adres — ze werken allemaal met andere talstelsels. In dit hoofdstuk leer je hoe die stelsels werken, hoe je er tussen omrekent en waarom ze zo handig zijn in de informatica.

Wat is een talstelsel?

Een talstelsel is een afgesproken manier om getallen voor te stellen met symbolen. Het grondtal bepaalt hoeveel symbolen er zijn en welke waarden de posities in een getal hebben.

TalstelselGrondtalSymbolen
Decimaal100 1 2 3 4 5 6 7 8 9
Binair20 1
Hexadecimaal160 1 2 3 4 5 6 7 8 9 A B C D E F

Positionele waarde

In elk talstelsel bepaalt de positie van een cijfer zijn waarde. Dat principe ken je al uit het decimale stelsel: in het getal 253 staat elke positie voor een macht van 10.

25310=(2×102)+(5×101)+(3×100)=200+50+3253_{10} = (2 \times 10^2) + (5 \times 10^1) + (3 \times 10^0) = 200 + 50 + 3

Hoe verder naar links, hoe hoger de macht. Hetzelfde principe geldt voor binair en hexadecimaal — maar dan met machten van 2 of 16.

Je ziet in bovenstaande formule het getal 25310253_{10}. Het kleine getal rechtsonder — de subscript — geeft het grondtal aan. Het vertelt je in welk talstelsel het getal staat: 25310253_{10} is 253 in het tientallige stelsel, 101121011_2 is een binair getal en FF16\text{FF}_{16} is hexadecimaal.

Machten

In de notatie GMG^M staat G voor het grondtal — de basis van het talstelsel — en M voor de macht, de positie of exponent. Hoe groter M, hoe groter de waarde van die positie.

Een machtsverheffing GMG^M betekent: vermenigvuldig GG precies MM keer met zichzelf.

23=2×2×2=82^3 = 2 \times 2 \times 2 = 8

Speciaal geval: elk getal tot de macht 0 is altijd 1.

20=1100=1160=12^0 = 1 \qquad 10^0 = 1 \qquad 16^0 = 1

De machten van 2 kom je in de informatica constant tegen. Leer ze kennen:

202^0212^1222^2232^3242^4252^5262^6272^7282^82102^{10}
12481632641282561024

Notatie

Als we met meerdere talstelsels tegelijk werken, geven we het grondtal aan met een subscript rechtsonder:

10112(binair)FF16(hexadecimaal)4210(decimaal)1011_2 \quad \text{(binair)} \qquad \text{FF}_{16} \quad \text{(hexadecimaal)} \qquad 42_{10} \quad \text{(decimaal)}

In code zie je ook andere notaties: 0b1011 voor binair en 0xFF voor hexadecimaal.

Wat leer je in dit hoofdstuk?

SectieWat je leert
BinairHoe computers rekenen met 0 en 1
HexadecimaalCompacte notatie voor binaire data
ConversieOmrekenen tussen decimaal, binair en hex
Bitwise operatiesRekenen op bitniveau: AND, OR, XOR, shifts
TekstcoderingHoe tekst als getallen wordt opgeslagen: ASCII en UTF-8