1.2 Getalstelsels
Er bestaan allerlei verschillende getalstelsels.
In onze maatschappij werken we voornamelijk met het decimale stelsel voor het gewone rekenwerk.
Soms komen we ook Romeinse getallen tegen boven de deur van het klaslokaal of op kerkgebouwen.
In de computerwereld wordt meestal met binaire of hexadecimale getallen gewerkt.
Romeinse getallen
Romeinse getallen zie je wel op oude gebouwen, waarop dan staat aangegeven wanneer het gebouwd is.
Daarbij worden de letters I, V, X, enz. gebruikt. Die letters hebben een bepaalde waarde:
I = 1
V = 5
X = 10
L = 50
C = 100
D = 500
M = 1000
Als er meerdere letters gebruikt worden moet je die gewoon bij elkaar optellen.
Behalve als er een letter met een grotere waarde achter staat, dan moet je de waarde er van aftrekken.
Dus:
II = 2
III = 3
IV = 4
VI = 6
VII = 7
VIII = 8
IX = 9
XX = 20
XXX = 30
XL = 40
MMCMLXVI = 2966
Een nadeel van deze notatie is dat je erg lange en onoverzichtelijke getallen krijgt.
Decimale getallen
In ons decimale of tientallige getalstelsel gebruiken we maar 10 symbolen (cijfers) namelijk 0, 1, 2, 3, 4, 5, 6, 7, 8 en 9.
De waarde die de cijfers hebben hangt af van hun plaats, bijvoorbeeld:
3847 = 7 + 40 + 800 + 3000 = 7 × 100 + 4 × 101 + 8 × 102 + 3 × 103
Binaire getallen
In de computerwereld wordt meestal gewerkt met het
binaire of
tweetallige getalstelsel.
Daarin worden maar twee tekens gebruikt, namelijk 0 en 1.
Omdat een bit maar twee waarden kan aannemen, namelijk 0 en 1, is het tweetallig getalstelsel het voor de hand
liggende systeem voor de computer.
In het tientallig stelsel moet je een getal van achter naar voren lezen. Het laatste cijfer blijft gelijk, het cijfer daarvoor moet
keer 10, het cijfer daarvoor moet keer 100 (=10
2), het cijfer daarvoor moet keer 1000 (=10
3), enz.
In het binaire getalstelsel moet je een getal ook van achter naar voren lezen.
Het laatste cijfer blijft weer gelijk, het cijfer daarvoor moet
keer 2, het cijfer daarvoor moet keer 4 (=22), het cijfer daarvoor moet keer 8 (=23),
enz.
De decimale waarde van een binair getal kun je dus op de volgende manier bepalen:
101 = (van achter naar voor) 1 × 1 + 0 × 2 + 1 × 4 = 5
11011010 = 0 × 1 + 1 × 2 + 0 × 4 + 1 × 8 + 1 × 16 + 0 × 32 + 1 × 64 + 1 × 128 = 2 + 8 + 16 + 64 + 128 = 208
11111111 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255,
en dat is het grootste getal dat met een byte is te maken!
Hoe maak je van een decimaal getal een binair getal?
Deel het getal steeds door 2 (totdat de uitkomst 0 is) en schrijf de rest op (die kan dus 0 of 1 zijn).
Schrijf daarna de resten achter elkaar (achterstevoren) op, en je hebt de uitkomst.
Voorbeeld (we nemen 29)
29 delen door 2 is 14 rest 1
14 delen door 2 is 7 rest 0
7 delen door 2 is 3 rest 1
3 delen door 2 is 1 rest 1
1 delen door 2 is 0 rest 1
De resten in omgekeerde volgorde geven het binaire getal: 11101
Nog een voorbeeld: 205
205 is kleiner dan 256, dus het is in één byte (dus 8 bits) te schrijven.
205 delen door 2 is 102 rest 1
102 delen door 2 is 51 rest 0
51 delen door 2 is 25 rest 1
25 delen door 2 is 12 rest 1
12 delen door 2 is 6 rest 0
6 delen door 2 is 3 rest 0
3 delen door 2 is 1 rest 1
1 delen door 2 is 0 rest 1
Dus 205 (decimaal) = 11001101 (binair)
Hexadecimale getallen
Naast het binaire en het decimale getalstelsel wordt in de informatica ook nog het
hexadecimale of
zestientallige getalstelsel gebruikt.
In het zestientallige of hexadecimale getalstelsel worden zestien tekens (cijfers genoemd) gebruikt.
Naast de cijfers 0 t/m 9 worden
ook de hoofdletters A t/m F gebuikt, met als waarden 10 t/m 15.
| decimaal |
hexadecimaal |
binair |
| 0 | 0 | 0 |
| 1 | 1 | 1 |
| 2 | 2 | 10 |
| 3 | 3 | 11 |
| 4 | 4 | 100 |
| 5 | 5 | 101 |
| 6 | 6 | 110 |
| 7 | 7 | 111 |
| 8 | 8 | 1000 |
| 9 | 9 | 1001 |
| 10 | A | 1010 |
| 11 | B | 1011 |
| 12 | C | 1100 |
| 13 | D | 1101 |
| 14 | E | 1110 |
| 15 | F | 1111 |
| 16 | 10 | 1 0000 |
| 17 | 11 | 1 0001 |
| 18 | 12 | 1 0010 |
| 19 | 13 | 1 0011 |
| 20 | 14 | 1 0100 |
In het hexadecimale getalstelsel lees je een getal, net zo als bij een binair en decimaal getal,
ook van achter naar voren.
Het laatste
cijfer blijft weer gelijk, het cijfer daarvoor moet
keer 16, het cijfer daarvoor moet keer 256 (=162), enz.
In de informatica worden eigenlijk alleen maar hexadecimale getallen van twee cijfers gebruikt.
Voorbeelden:
35 (hexadecimaal) = 3 × 16 + 5 = 53 (decimaal)
4B (hexadecimaal) = 4 × 16 + 11 = 75 (decimaal)
A7 (hexadecimaal) = 10 × 16 + 7 = 167 (decimaal)
BD (hexadecimaal) = 11 × 16 + 13 = 189 (decimaal)
FF (hexadecimaal) = 15 × 16 + 15 = 255 (decimaal), dus het grootste hexadecimale getal van twee cijfers is 255.
En dat is ook het
grootste binaire getal van 8 bits, dus een byte.
Dat is ook de reden dat hexadecimale getallen veel gebruikt worden in de informatica: getallen die in een byte passen zijn met twee
tekens te schijven in het hexadecimale getalstelsel.
Hoe maak je van een decimaal getal (kleiner dan 256) een hexadecimaal getal?
-
Deel het getal door 16
- Schrijf het getal dat er uitkomt op, en de rest er achter.
- Maar denk er om dat als de uitkomst of de rest groter dan 9 is, je 10 moet vervangen door A, 11 door B, 12 door C, 13 door D, 14 door E en 15 door F.
Neem bv 199
199 gedeeld door 16 is 12, en de rest is 7
Vervang 12 door C, dan is het antwoord dus C7
Hexadecimale getallen kom je bijvoorbeeld tegen in HTML-documenten, bij het aangeven van kleuren.
Met
style="color:#FF0098;" geef je aan wat de kleur van een stukje tekst is.
Je moet dan FF0098 verdelen in drie groepjes van 2: FF geeft aan wat de hoeveelheid rood is, maar dan als hexadecimaal getal,
00 geeft aan geeft aan wat de hoeveelheid groen is en 98 geeft de hoeveelheid blauw als hexadecimaal getal.