Talstelsels
Op de basisschool hebben we allemaal leren rekenen. Wij vinden het heel normaal dat het getal na 9 geschreven word als 10. Dit komt omdat we gewend zijn om te tellen en rekenen in het decimale talstelsel. Computers werken niet met dit stelsel maar met het binaire stelsel. Waar het decimale talstelsel 10 verschillende tekens heeft voor getallen (0,1,2,3,4,5,6,7,8 en 9) heeft het binaire stelsel er maar twee (0 en 1). Naast deze twee stelsels worden door programmeurs ook vaak hexadecimale (16 tekens) getallen gebruikt. Bij het hexadecimale stelsel lenen we de letters a t/m f om nog meer tekens te hebben. Een hexadecimaal getal kan dus de volgende tekens bevatten; 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e en f. De waarde 10 wordt dan ook in het hexadecimale stelsel geschreven als a.
Net als bij tellen in het decimale stelsel krijg je een nieuwe positie als de tekens op zijn. Na negen komt een-nul, oftewel 10. Binair tellen werkt hetzelfde 0, 1, 10, 11, 100, 101, 110, 111. Hieronder zie je een overzicht van de eerste 20 getallen in het decimale, binaire en hexadecimale stelsel.
Decimale stelsel |
Binaire stelsel |
Hexadecimale stelsel |
0 |
0 |
0 |
1 |
1 |
1 |
2 |
10 |
2 |
3 |
11 |
3 |
4 |
100 |
4 |
5 |
101 |
5 |
6 |
110 |
6 |
7 |
111 |
7 |
8 |
1000 |
8 |
9 |
1001 |
9 |
10 |
1010 |
A |
11 |
1011 |
B |
12 |
1100 |
C |
13 |
1101 |
D |
14 |
1110 |
E |
15 |
1111 |
F |
16 |
10000 |
10 |
17 |
10001 |
11 |
18 |
10010 |
12 |
19 |
10011 |
13 |
20 |
10100 |
14 |
Omrekenen
Als je werkt met verschillende talstelsels is het wel zo handig dat je het ene talstelsel kunt omrekenen naar het andere. In dit hoofdstuk wordt beschreven hoe je de volgende omrekeningen kunt uitvoeren:
- Binair omrekenen naar decimaal
- Decimaal omrekenen naar binair
- Hexadecimaal omrekenen naar decimaal
- Decimaal omrekenen naar hexadecimaal
Binair omrekenen naar decimaal:
Om een binair getal handmatig naar het decimale stelsel te converteren volgen we de stappen hieronder.
Als voorbeeld gebruiken we 10111001.
Binair |
1 |
|
0 |
|
1 |
|
1 |
|
1 |
|
0 |
|
0 |
|
1 |
|
|
|
x |
|
x |
|
x |
|
x |
|
x |
|
x |
|
x |
|
x |
|
|
Machten van 2 |
128 |
|
64 |
|
32 |
|
16 |
|
8 |
|
4 |
|
2 |
|
1 |
|
|
|
= |
|
= |
|
= |
|
= |
|
= |
|
= |
|
= |
|
= |
|
|
Decimaal |
128 |
+ |
0 |
+ |
32 |
+ |
16 |
+ |
8 |
+ |
0 |
+ |
0 |
+ |
1 |
= |
185 |
Decimaal omrekenen naar binair:
Om een decimaal getal handmatig naar het binaire stelsel te converteren volgen we de stappen hieronder.
- Deel het getal door 2
- Schrijf het restgetal op 1 of 0.
- Herhaal stap 1 en 2 tot de rest kleiner is dan 2.
- Schrijf de laatste rest op.
Als een voorbeeld gaan we het decimale getal 185 omrekenen naar het binaire stelsel.
- 185 / 2 → 92 rest 1,
- 92 / 2 → 46 rest 0,
- 46 / 2 → 23 rest 0,
- 23 / 2 → 11 rest 1,
- 11 / 2 → 5 rest 1,
- 5 / 2 → 2 rest 1,
- 2 / 2 → 1 rest 0,
- 1 / 2 → 0 rest 1,
Nu schrijven wij de resten op, we beginnen met de laatste. 1,0,1,1,1,0,0,1. Het decimale getal 185 is dus gelijk aan 10111001 in het binaire stelsel.
Hexadecimaal omrekenen naar decimaal:
Om een hexadecimaal getal handmatig naar het decimale stelsel te converteren volgen we de stappen hieronder.
Als voorbeeld gebruiken we EDC8.
Hexadecimaal |
E |
|
D |
|
C |
|
8 |
|
|
Decimaal |
14 |
|
13 |
|
12 |
|
8 |
|
|
|
x |
|
x |
|
x |
|
x |
|
|
Machten van 16 |
4096 |
|
256 |
|
16 |
|
1 |
|
|
|
= |
|
= |
|
= |
|
= |
|
|
|
57344 |
+ |
3328 |
+ |
192 |
+ |
8 |
= |
60872 |
Decimaal omrekenen naar hexadecimaal:
Voor de volgende omrekening gebruiken we de volgende tabel:
Decimaal |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
Hexadecimaal |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
Om een decimaal getal handmatig naar het hexadecimaal stelsel te converteren volgen we de stappen hieronder.
- Deel het getal door 16
- Schrijf het restgetal op.
- Herhaal stap 1 en 2 tot de rest kleiner is dan 16.
- Schrijf de laatste rest op.
Als een voorbeeld gaan we het decimale getal 2011 omrekenen naar het hexadecimale stelsel.
- 2011 / 16 → 125 rest 11,
- 125 / 16 → 7 rest 13,
- 7 / 16 → 0 rest 7
Nu schrijven wij de resten op, we beginnen met de laatste. 7, 13, 11. Uit de tabel lezen we af dat 7 is gelijk is aan 7, 13 gelijk is aan D en 11 gelijk is aan B. Het decimale getal 2011 is dus gelijk aan 7DB in het hexadecimale stelsel.
Diagnostische toets omrekenen
Toets: Diagnostische toets omrekenen
Start
Binair rekenen
Wij, mensen, rekenen in het decimaal stelsel. Computers doen dit niet. Om een computer in het decimale stelsel te laten rekenen zouden computers 10 staten van informatie moeten kennen, helaas kennen ze er maar 2, namelijk 1 of 0. Computers kennen nog een grote beperking, ze kunnen alleen maar optellen. Toch kunnen ze wel het verschil berekenen, verminigvuldigen en delen. In dit hoofdstuk leer je hoe een computer, en straks ook jij, binaire berekeningen kunt uitvoeren.
Optellen
Om getallen bij elkaar op te tellen hoef moet je een aantal regels volgen. De volgende tabel laat zien wat de mogelijke uitkomsten zijn van de optelacties:
0 |
+ |
0 |
= |
0 |
|
1 |
+ |
0 |
= |
1 |
|
0 |
+ |
1 |
= |
1 |
|
1 |
+ |
1 |
= |
10 |
Je schrijft de 0 op en schuift de 1 door naar de volgede positie. |
Als voorbeeld gaan we 1101 en 1111 bij elkaar optellen:
1. Schijf de getallen onder elkaar.
|
|
|
|
|
|
|
1101 |
|
1 |
1 |
0 |
1 |
|
1111 |
|
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
2. Tel de laatste kolom op 1 + 1 = 10; je schrijft de nul op en schuift de 1 door.
|
|
|
|
1 |
|
|
1101 |
|
1 |
1 |
0 |
1 |
|
1111 |
|
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
+ |
|
|
|
|
|
0 |
|
4. Tel de volgende kolom op 1 + 1 = 10; onthoud de 0 op en schuif de 1 door, daarna 0 + 1 = 1; schrijf de 1 op.
|
|
1 |
1 |
1 |
|
|
1101 |
|
1 |
1 |
0 |
1 |
|
1111 |
|
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
+ |
|
|
|
1 |
0 |
0 |
|
5. Tel de volgende kolom op 1 + 1 = 10; onthoud de 0 op en schuif de 1 door, daarna 0 + 1 = 1; schrijf de 1 op.
|
1 |
1 |
1 |
1 |
|
|
1101 |
|
1 |
1 |
0 |
1 |
|
1111 |
|
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
+ |
|
1 |
1 |
1 |
0 |
0 |
|
Aftrekken
Om twee getallen van elkaar af te trekken maakt de computer gebruik van Two's complement methode om negatieve getallen te maken. Aangezien een computer alleen kan optellen moeten we dus eerst een negatief getal maken. Laten we eerst even naar een decimaal voorbeeld kijken. We gaan de volgende berekeing uitvoeren: 11 - 5 = 6 . Hier staat eigelijk (+11) - (+5) = (+6), de plustekens schrijven we alleen nooit op. Deze aftreksom kunnen we ook schrijven als een optelsom. Hievoor moeten we eerst de +5 veranderen in -5. Als je dat doet dan krijg je: (+11) + (-5) = (+6). Nu gaan we dit toepassen in het binaire rekenen.
Laten we als voorbeeld de volgende berekening uitvoeren: 1111 - 101. Eerst maken we van het positieve getal 101 een binair negatieve versie:
We starten hiermee door het getal even lang te maken als het getal waar het het van af wilt trekken, in dit geval een extra 0.
Daarna maken we van iedere 1 een 0 te maken en omgekeerd:
Tot slot tellen we er 1 bij op:
Nu hebben we het positieve 101 omgezet in een binair negatieve waarde 1011. Deze waarde kunnen we nu optellen:
|
1 |
1 |
|
|
1 |
1 |
1 |
1 |
|
1 |
0 |
1 |
1 |
|
|
|
|
|
+ |
|
|
1 |
0 |
|
1 |
1 |
1 |
|
|
1 |
1 |
1 |
1 |
|
1 |
0 |
1 |
1 |
|
|
|
|
|
+ |
|
0 |
1 |
0 |
|
1 |
1 |
1 |
1 |
|
|
|
1 |
1 |
1 |
1 |
|
|
1 |
0 |
1 |
1 |
|
|
|
|
|
|
+ |
1 |
1 |
0 |
1 |
0 |
|
Omdat dit eigelijk een aftreksom maken we vervallen alle voorste tekens tot het reslutaat evenveel tekens heeft dan het langste begin getal. In dit geval vervalt de voorste 1.
Nog een voorbeeld:
110100 - 110 = ?
Omzetten naar negatief:
0 |
0 |
0 |
1 |
1 |
0 |
Aanvullen |
1 |
1 |
1 |
0 |
0 |
1 |
Omkeren |
1 |
1 |
1 |
0 |
1 |
0 |
1 erbij tellen |
Resultaat optellen en voorloop tekens verwijderen tot lengte langste getal:
|
1 |
|
|
|
|
|
|
|
1 |
1 |
0 |
1 |
0 |
0 |
|
|
1 |
1 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
+ |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
|
Het antwoord is 110100 - 110 = 101110
Vermenigvuldigen
Binair vermenigvuldigen is een eenvoudig process. Het is niet meer dan verschuiven en optellen van de factor. Als voorbeeld gaan we de volgende som uitrekenen: 1110 x 1010 = ?
Zet de getallen onder elkaar:
We starten nu van rechts naar links. Schrijf het bovenste getal over als er 1 staat en allemaal nullen als er een 0 staat. Het laatste teken van 1010 is een 0 dus allemaal nullen.
1 |
1 |
1 |
0 |
|
1 |
0 |
1 |
0 |
|
|
|
|
|
x |
0 |
0 |
0 |
0 |
|
Het voorlaatste teken is een 1 dus schrijven we het getal en omdat we met het voorlaatste getal bezig zijn voegen we één extra nul toe aan het einde:
|
1 |
1 |
1 |
0 |
|
|
1 |
0 |
1 |
0 |
|
|
|
|
|
|
x |
|
0 |
0 |
0 |
0 |
|
1 |
1 |
1 |
0 |
0 |
|
Het volgende getal is weer een 0, dus (vergeet te extra nullen niet):
|
|
1 |
1 |
1 |
0 |
|
|
|
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
x |
|
|
0 |
0 |
0 |
0 |
|
|
1 |
1 |
1 |
0 |
0 |
|
0 |
0 |
0 |
0 |
0 |
0 |
|
Als laatste hebben we en 1, dus (met 3 extra nullen):
|
|
|
1 |
1 |
1 |
0 |
|
|
|
|
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
x |
|
|
|
0 |
0 |
0 |
0 |
|
|
|
1 |
1 |
1 |
0 |
0 |
|
|
0 |
0 |
0 |
0 |
0 |
0 |
|
1 |
1 |
1 |
0 |
0 |
0 |
0 |
|
Tot slot tellen we alles op:
|
1 |
1 |
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
|
|
|
|
1 |
1 |
1 |
0 |
0 |
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
|
|
1 |
1 |
1 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
+ |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
|
Het antwoord:
1110 x 1010 = 10001100
Delen
Delen op een comuter is lastig omdat een computer alleen kan optellen. Om toch te kunnen delen tellen we iedere keer de deler bij zichzelf op tot we het bij het deelgetal zijn. Daarna bepalen we de rest.
We starten met een decimaal voobeeld:
4 |
5 |
/ |
7 |
= |
6r3 |
|
|
|
|
|
|
|
|
|
7 |
|
(1) |
|
|
|
7 |
+ |
(2) |
|
|
1 |
4 |
|
|
|
|
|
7 |
+ |
(3) |
|
|
2 |
1 |
|
|
|
|
|
7 |
+ |
(4) |
|
|
2 |
8 |
|
|
|
|
|
7 |
+ |
(5) |
|
|
3 |
5 |
|
|
|
|
|
7 |
+ |
(6) |
|
|
4 |
2 |
|
|
Nu in binair:
1 |
0 |
1 |
1 |
0 |
1 |
/ |
1 |
1 |
1 |
= |
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
|
(1) |
|
|
|
|
|
|
|
1 |
1 |
1 |
+ |
(10) |
|
|
|
|
|
|
1 |
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
+ |
(11) |
|
|
|
|
|
1 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
+ |
(100) |
|
|
|
|
|
1 |
1 |
1 |
0 |
0 |
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
+ |
(101) |
|
|
|
|
1 |
0 |
0 |
0 |
1 |
1 |
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
+ |
(110) |
|
|
|
|
1 |
0 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
+ |
|
|
|
|
|
1 |
1 |
0 |
0 |
0 |
1 |
|
te veel |
En de rest berekenen 101101-101010:
0 |
1 |
0 |
1 |
0 |
1 |
0 |
Aanvullen |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
Omkeren |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 erbij tellen |
Optellen:
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
1 |
0 |
1 |
1 |
0 |
1 |
|
|
1 |
0 |
1 |
0 |
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
+ |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
|
Antwoord:
101101 / 111 = 101 r 11
Oefenen
Oefenen met omrekenen en binair rekenen
Diagnostische toets binair rekenen
Test: Diagnostische toets binair rekenen
Start