Wiskunde/Talstelsels
Uit Wikibooks
|
|
| Hoofdstukken | |
Waarschijnlijk zonder het te weten, gebruik je standaard al een talstelsel bij het rekenen: het decimale talstelsel. Dit hoofdstuk gaat over het gebruik van verschillende talstelsels en hoe je kunt omrekenen van het ene talstelsel naar het andere.
Inhoud |
[bewerken] Leesbaarheidsregels
Om in dit hoofdstuk geen verwarring te krijgen tussen de verschillende talstelsels, worden alle getallen op de plek waar het niet uit de context opgemaakt kan worden, gevolgd door het grondtal van hun talstelsel tussen (). Zo staat 10(10) voor het getal 10 in het decimale stelsel en 10(2) voor het getal 2 (eigenlijk: 2(10)), weergegeven in het binaire stelsel. In het hexadecimale stelsel is het getal 10 (10(16)) het getal 16.
Verder is het gebruikelijk om, wanneer je een getal binair opschrijft, de cijfers te groeperen per 4 of per 8, om de leesbaarheid te bevorderen. In dit hoofdstuk worden ze gegroepeerd per 4.
[bewerken] Wat zijn talstelsels?
Een talstelsel is een systeem om getallen weer te geven in de vorm van een rij cijfers. De plaats die een cijfer in de rij inneemt bepaalt hoe we de bijdrage van dat cijfer aan het getal moeten interpreteren. Talstelsels zijn daarom positiestelsels. Zo wordt in het alledaagse decimale stelsels het getal 1432 opgevat als
1 x 1000 = 1000 (de 1 staat op positie 4 en vertegenwoordigt daarom 1 1000-tal)
4 x 100 = 400 (de 4 staat op positie 3 en vertegenwoordigt daarom 4 100-tallen)
3 x 10 = 30 (de 3 staat op positie 2 en vertegenwoordigt daarom 3 10-tallen)
2 x 1 = 2 (de 2 staat op positie 1 en vertegenwoordigt daarom 2 eenheden)
----- +
samen 1432 (decimaal)
De bijdrage van een cijfer is het door dat cijfer bepaalde veelvoud van een macht van het grondtal. De macht volgt uit de positie van het cijfer, en is een minder dan de positie. Op elke positie staat daarom een teken, cijfer, uit de range 0, 1,..., grondtal-1. Zo kunnen willekeurige getallen genoteerd worden met behulp van een beperkt aantal verschillende cijfers, namelijk niet meer dan het gebruikte grondtal.
In het octale stelsel, dus met grondtal 8, gebruikt men de cijfers 0, 1, ..., 7. Het getal 1432 in het octale stelsel betekent:
1 x 512 = 512 (de 1 staat op positie 4 en vertegenwoordigt daarom 1 512-tal)
4 x 64 = 256 (de 4 staat op positie 3 en vertegenwoordigt daarom 4 64-tallen)
3 x 8 = 24 (de 3 staat op positie 2 en vertegenwoordigt daarom 3 8-tallen)
2 x 1 = 2 (de 2 staat op positie 1 en vertegenwoordigt daarom 2 eenheden)
----- +
samen 794 (decimaal)
- Er kunnen nullen vóór het daadwerkelijke getal staan zonder de waarde ervan te beïnvloeden. Zo is 1 hetzelfde als 01 en 001. Om de leesbaarheid te bevorderen, worden vaak de voorloopnullen weggelaten.
We vergelijken het tellen in een paar talstelsels:
Telvoorbeeld:
decimaal octaal binair hexadecimaal 0 0 0 0 1 1 1 1 2 2 10 2 3 3 11 3 4 4 100 4 5 5 101 5 6 6 110 6 7 7 111 7 8 10 1000 8 9 11 1001 9 10 12 1010 A 11 13 1011 B 12 14 1100 C 13 15 1101 D 14 16 1110 E 15 17 1111 F 16 20 10000 10 17 21 10001 11 18 22 10010 12 19 23 10011 13 20 24 10100 14 21 25 10101 15
We zien dat in het hexadecimale stelsel, waar 16 cijfers nodig zijn, de letters A, B, C, D, E en F als cijfer gebruikt worden.
Een voorbeeldje (decimale stelsel):
008 009 010 <-- overgang 011 .. 018 019 020 <-- overgang 021 .. 098 099 100 <-- twee overgangen 101
- Alle talstelsel hebben een nul (0)
- Het grootste cijfer in een talstelsel, is (grondtal - 1), omdat de nul ook meetelt als cijfer. Zo is het grootste cijfer in het decimale stelsel een 9, in het octale stelsel een 7 (octo = 8) en in het binaire stelsel een 1 (bi = 2).
[bewerken] Het decimale talstelsel
Het decimale talstelsel is het meest gebruikte talstelsel. Dit talstelsel gebruikt tien (deca = tien) cijfers. Deze zijn als volgt (van klein naar groot):
0 1 2 3 4 5 6 7 8 9
De normale rekenregels zijn hier op van toepassing.
Telvoorbeeld:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 .. 19 20 21
[bewerken] Het binaire talstelsel
Het binaire talstelsel wordt bijna niet gebruikt door de mens. Een computer gebruikt dit stelsel vaak intern. Dit talstelsel gebruikt twee (bi = twee) cijfers, dus 0 en 1. Telvoorbeeld:
binair decimaal
0 0
1 1
10 2
11 3
100 4
101 5
110 6
111 7
1000 8
1001 9
1010 10
1011 11
1100 12
1101 13
1110 14
1111 15
[bewerken] Het octale talstelsel
Het octale talstelsel wordt bijna niet gebruikt. Dit talstelsel gebruikt acht (octo = acht) cijfers. Deze zijn als volgt (van klein naar groot):
0 1 2 3 4 5 6 7
Telvoorbeeld:
octaal decimaal
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
10 8
11 9
12 10
.. ..
16 14
17 15
20 16
21 17
[bewerken] Het hexadecimale talstelsel
Het hexadecimale talstelsel wordt bijna niet gebruikt. Dit talstelsel gebruikt 16 (hexadeca = 16) cijfers. Deze zijn als volgt (van klein naar groot):
0 1 2 3 4 5 6 7 8 9 A B C D E F
Hier zie je dat naast de bekende tien cijfers 0 t/m 9, de zes letters A t/m F ook als cijfer gebruikt worden.
Telvoorbeeld:
hex decimaal 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 A 10 B 11 C 12 D 13 E 14 F 15 10 16 11 17 12 18 .. .. 1E 30 1F 31 20 32 21 33
[bewerken] Omrekenen
Om van het ene talstelsel om te rekenen naar het andere, is een aantal methoden.
Als voorbeeld rekenen we het getal 214365(7) om naar de decimale voorstelling.
Schrijf de cijfers onder elkaar en achter elk cijfer de bijbehorende macht van het grondtal en bereken de bijdrage van elk cijfer:
2 75 = 2 x 16807 = 33614
1 74 = 1 x 2401 = 2401
4 73 = 4 x 343 = 1372
3 72 = 3 x 49 = 147
6 71 = 6 x 7 = 42
5 70 = 5 x 1 = 5
----- +
214365(7) = 37581 (decimaal)
Een handig algoritme, dat zich ook goed leent om geprogrammeerd te worden is:
- neem het meest linkse cijfer
- 2
- is dit het laatste cijfer dan zijn we klaar
- vermenigvuldig met het grondtal
- 2 x 7 = 14
- tel het volgende cijfer er bij op
- 14 + 1 = 15
- is dit het laatste cijfer dan zijn we klaar (herhaling van eerdere stappen)
- vermenigvuldig met het grondtal
- 15 x 7 = 105
- tel het volgende cijfer er bij op
- 105 + 4 = 109
- is dit het laatste cijfer dan zijn we klaar (herhaling van eerdere stappen)
- vermenigvuldig met het grondtal
- 109 x 7 = 763
- tel het volgende cijfer er bij op
- 763 + 3 = 766
- 766 x 7 = 5362
- 5362 + 6 = 5368
- 5368 x 7 = 37576
- 37576 + 5 = 37581
- is dit het laatste cijfer dan zijn we klaar, ja.
Deze manier van omwerken gaat natuurlijk ook de andere kant op, dus van decimaal naar bijvoorbeeld het 7-tallig stelsel. Als voorbeeld bepalen we hoe 37581 (decimaal) in het 7-tallig stelsel geschreven wordt. Het is wel een lastige methode omdat we goed erop moeten letten dat we nu in dit nieuwe stelsel zullen moeten rekenen.
decimaal 7-tallig
3 104 = 3 x 41104 = 153315
7 103 = 10 x 2626 = 26260
5 102 = 5 x 202 = 1313
8 101 = 11 x 13 = 143
1 100 = 1 x 1 = 1
------ +
37581 (decimaal) = 214365(7)
Dit is natuurlijk een erg lastige methode, maar er is gelukkig ook een andere waarin we gewoon (decimaal) kunnen rekenen. Die methode is eigenlijk de omgekeerde weg die in het bovenstaande (handige) algoritme werd gevolgd. In plaats van steeds met het grondtal 7 te vermenigvuldigen, delen we er door.
37581 = 5368 x 7 + 5
5368 = 766 x 7 + 6
766 = 109 x 7 + 3
109 = 15 x 7 + 4
15 = 2 x 7 + 1
2 = 0 x 7 + 2
De resten, van onder naar boven gelezen, vormen het gevraagde getal 214365(7).
[bewerken] Van een ander stelsel naar het decimale stelsel
Als voorbeeld hier de werking van het decimale stelsel:
- Gegeven getal 238
- Dit getal kan als volgt worden ontleed (zie Rekenkunde voor rekenregels)
- 10 * 10 * 1 * 2 = 200
- 10 * 1 * 3 = 30
- 1 * 8 = 8
- Bij elkaar opgeteld is dit weer 238.
Deze berekening kan ook worden geschreven als volgt:
- 2 * 102 = 2 * 100 = 200
- 3 * 101 = 3 * 10 = 30
- 8 * 100 = 8 * 1 = 8
De methode die hier wordt gebruikt, maakt gebruik van het 'gewicht' van een cijfer. Elk cijfer krijgt een 'gewicht'. De gewichten worden toegekend van rechts naar links, beginnend bij 0, overeenkomend met de positie van het cijfer. Het gewicht van een cijfer is een macht van het grondtal van het stelsel. De bedoelde macht is één minder dan de positie van het cijfer. Als volgt:
macht 210 ----------- getal 238
Vervolgens wordt elk cijfer vermenigvuldigd met het <gewicht>. Het grondtal is het talstelsel (in dit voorbeeld 10). Zo krijg je dus: 238 = 102 * 2 + 101 * 3 + 100 * 8
Om 472(8) om te rekenen naar een decimaal getal volgen we de volgende stappen:
- Bepaal de gewichten voor elk cijfer
- Reken voor elk cijfer de macht uit mbv grondtal tot de macht gewicht
- De uitkomst van elk cijfer bij 2 wordt vermenigvuldigd met het cijfer zelf.
De uitwerking is dus als volgt:
- 472(8)
gewicht 210 ----------- getal 472
- 82, 81, 80
- 82 * 4 + 81 * 7 + 80 * 2
- Resultaat:
Dus 
[bewerken] Van het decimale stelsel naar een ander stelsel
Het omrekenen van het decimale stelsel naar een ander stelsel is een stukje ingewikkelder. Het is met makkelijkst uit te leggen aan de hand van een voorbeeld.
Stel, we willen 1203(10) omzetten naar hexadecimaal. Het getal moet worden gedeeld door het grondtal van het doel stelsel (in dit geval 16). Het aantal restwaarden wordt opgeschreven. De gehele waarde wordt meegenomen voor de volgende berekening, totdat de gehele waarde in het doel stelsel voorkomt.
- 1203(10)
- = 1203(10) / 16(10) = 75(10) rest 3 (3 opschrijven)
- = 75(10) / 16(10) = 4 rest 11(10) (11(10) opschrijven)
- = 4 (4 opschrijven, 4 komt voor in het hexadecimale stelsel, stop)
Nu moet er nog een vertaling plaatsvinden voor 11(10).
11(10) == B(16).
De opgeschreven waarden moet gelezen worden van onder naar boven. Het onderste getal is het meest linkse getal. De uitkomst is dus 4B3(16).
1203(10) == 4B3(16)
[bewerken] Shortcuts
Om van het ene stelsel naar het andere om te rekenen, wordt vaak als tussenkomst het decimale stelsel gebruikt. Wil men van octaal naar hexadecimaal, dan is het vaak octaal -> decimaal -> hexadecimaal. Dit vergroot de kans op rekenfouten aanzienlijk.
Zo zijn er handigheidjes om van binair naar hexadecimaal om te rekenen, zonder tussenkomst van het decimale stelsel. De truk zit hem er in, dat een groep van 4 cijfers in het binaire stelsel, precies één cijfer in het hexadecimale stelsel heeft.
binair hex 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F
Zolang je bovenstaande tabel in gedachten houdt, kun je elke kant op omrekenen. Wil je weten wat 30F2(16) is in binair? Neem elk getal apart en schrijf deze op:
- 3 = 0011(2)
- 0 = 0000(2)
- F(16) = 1111(2)
- 2 = 0010(2)
Wanneer je dit nu achter elkaar zet (van boven naar beneden), krijg je: 0011 0000 1111 0010(2).
Conclusie: 30F2(16) == 0011 0000 1111 0010(2).
De andere kant op werkt net zo makkelijk. Wil je weten wat 11000011110010(2) is in hexadecimaal?
Groepeer eerst het binaire getal per 4 cijfers, beginnend aan de rechter kant.
- 11 0000 1111 0010(2)
Is er op het eind geen groep van 4, dan kun je hier nullen aan toevoegen.
- 0011 0000 1111 0010(2)
Nu kun je per groep kijken welke cijfer er bij hoort
- 0011(2) = 3
- 0000(2) = 0
- 1111(2) = F(16)
- 0010(2) = 2
Zet het resultaat weer achter elkaar (van boven naar beneden): 30F2(16).
Zo kun je ook binair <-> octaal (3 binaire cijfers = 1 octaal cijfer).
| Deze pagina is vrijgegeven onder de GNU Free Documentation License (GFDL) en nog niet onder CC-BY-SA. Klik hier voor meer informatie.
Wilt u deze tekst gebruiken onder de Creative Commons CC-BY-SA licentie? |
[[Bestand:Onderwerp[[Afbeelding:
{| class="prettytable" |- Tekst die niet geïnterpreteerd wordt. |} {| {{prettytable}} |- | 1 || 2 |- | 3 || 4 {| {{prettytable}} |- | 1 || 2 |- | 3 || 4<math>'''Vul hier de formule in'''[[[Media:http://nl.wikibooks.org WikibooksNL]]]</math> |} |} ]]]]
Citefout: De tag <ref> bestaat, maar de tag <references/> is niet aangetroffen
