Getallen,Tientallig, Binair en anders                                               <laatst bijgewerkt:  2020-12-06>
In het kort:t  
We zijn allemaal gewend aan het tientallig stelsel, de manier om getallen op te schrijven in veelvouden van 10, 100. 1000, enz.
Maar hoe zit zo'n getalsysteem nou precies in elkaar, en wat voor andere systemen zijn er mogelijk?
Het tweetallige -binaire- systeem heeft een paar voordelen die bij computers en andere digitaal audio spullen uiterst handig zijn.

Verwante onderwerpen:
Analoog en Digitaal,  A-D en D-A omzetting.        

In het dagelijks leven gebruiken we meestal het tientallig getalstelsel. Dat is niet zo zeer omdat dat beter is dan andere talstelsels, maar omdat mensen doorgaans 10 vingers aan de beide handen hebben. Het is historisch gegroeid, we zijn er mee opgegroeid, we zijn er er aan gewend en de meesten van ons kennen op het eerste gezicht geen ander stelsel, behalve misschien de Romeinse cijfers. Voor het benoemen van de minuten en secondes van de tijd en de hoeken gebruiken we echter een 60-tallig stelsel, en voor de uren van de dag een 24-tallig stelsel, zij het dat we deze opschrijven in het decimale stelsel. Je merkt het verschil als je er sommen mee gaat maken.

Wiskundig gezien is onze voorkeur voor het 10-tallig stelsel een tamelijk willekeurige. Er zijn weinig goede gronden om het ene systeem te verkiezen boven het andere, en de meeste eigenschappen van getallen (bijv. deelbaarheid, GGD, KGV, priemgetallen,  perfecte getallen etc.) zijn niet afhankelijk van het getalstelsel. (de 9-proef gaat alleen in het 10-tallig stelsel, maar in een andertallig stelsel bestaat er vast wel iets soortgelijks) 

 

Hoe zit zo'n decimaal getal nu eigenlijk in elkaar? We zijn er zo vertrouwd mee dat we meestal niet stilstaan bij de systematiek.

Neem het getal vierhonderdvierenveertigkommavier. We schrijven 444,4 maar wat staat er dan precies?

 

Lees het eens als: 4 maal honderd + 4 maal tien + 4 maal één + 4 maal een tiende. Je ziet dat het zelfde cijfer 4 totaal van betekenis verandert als het op een andere plaats staat. Het cijfer net links van de komma heeft een "gewicht" van 1. Het cijfer links daarnaast "weegt" 10 x zo zwaar, het 3e cijfer vóór de komma "weegt" 100 x  zo zwaar., enzovoorts, iedere keer 10 x zwaarder.

Rechts van de komma worden de "gewichten" van de cijfers steeds kleiner. 1/10, 1/100, 1/1000  enz. In principe kan dit naar beide zijden tot in het oneindige uitgebreid worden.

Die komma, in de engelstalige omgeving wordt daarvoor de punt gebruikt, wordt alleen genoteerd als er ook cijfers aan de rechterkant staan. Hele getallen worden alom zonder komma's opgeschreven.

Met de cijfers die we op elke positie gebruiken moeten we 10 verschillende waarden kunnen aangeven. We hebben dan ook tien verschillende symbolen nodig, en dat zijn de de cijfers "0", " 1", " 2",  "3",  "4",  "5", " 6", " 7", " 8", en " 9" geworden. Merk op dat de "10" niet als symbool voorkomt in het tientallig stelsel.  

 

Voor de wiskundigen: De algemene vorm van een getal is: Som van de reeks  A(n) * G ^ n waarbij A(n) het cijfer op de n-de positie is, en G het grondtal. De n wordt vanaf  het scheidingsteken (de "decimale komma" ) in positieve richting naar links geteld vanaf nul en negatief naar rechts.  
Op elk geheel en positief grondtal  >1 kan een bruikbaar getalsysteem gebaseerd worden. 
Het is misschien wel aardig om eens uit te zoeken of je ook iets zinnigs kunt maken met een negatieve basis of met een niet gehele basis. Op het eerste gezicht vrees ik dat het een puinhoop wordt.

 

Het tweetallige of  binaire systeem is op precies dezelfde manier opgebouwd, alleen zijn de "gewichten" van de cijfers anders.

Het eerste cijfer links van de komma weegt "1", zoals in elk talstelsel, maar het cijfer links daarvan "2", en vervolgens "4", "8" , "16", en zo iedere keer het dubbele, waar in het decimale systeem elke positie naar links het 10-voudige gewicht krijgt. Verder kent het binaire systeem alleen de cijfers "0" en "1".

 

De wat grotere getallen hebben in de binaire notatie al gauw zoveel cijfers dat het voor mensen onoverzichtelijk wordt. 

De veel gebruikte Hexadecimale notatie is een voor mensen wat hanteerbaardere notatie van binaire getallen. Elk groepje van 4 binare cijfers wordt voorgsteld door 1 hex- cijfer. Hexadecimaal is dus niet een ander talstelsel, maar een manier van opschrijven om het voor mensen beter leesbaar te maken. Voor de hexadecimale "cijfers" voor decimaal 10 en hoger worden de (hoofd) letters A t/m F gebruikt.

 

Een stukje tellen. Je ziet het binaire getal, het bijbehorende decimale getal en de hexadecimale voorstelling; Merk op dat de meest rechtse bits (de cijfers van een binair getal noemen we "bit") het snelst veranderen. Dat zijn de "lichtste" cijfers of de "minst significante" bitjes. Je zult deze term "least significant bit" regelmatig tegenkomen. De tegenhanger is het "meest significante bit", het MSB, het "Most Significant Bit". In dit voorbeeld heeft het MSB een gewicht van 8, maar gebruikelijker zijn MSB gewichten van 128 (bij 8-bit getallen), of  32768 (bij 16-bit audio, zoals op de CD) 

Voor de C- programmeurs: Als een C-compiler dit formaat zou ondersteunen zouden we het een "unsigned nibble" noemen.

 

bin            dec         hex


1111      15       F

1110      14       E

1101      13       D

1100      12       C

1011      11       B

1010      10       A

1001       9       9

1000       8       8

0111       7       7

0110       6       6

0101       5       5

0100       4       4

0011       3       3

0010       2       2

0001       1       1

0000       0       0 

Met deze 4-bit getallen kunnen we 16 verschillende waardes noteren. Met de voor de CD gebruikelijke 16 bit zijn dat er 65536. Met 24 bit audio zijn het er 16,777,216 ruim 16 miljoen dus.

 

Negatieve getallen

In het dagelijks gebruik geven we negatieve getallen aan met een min-teken. Bijv: -300.

In de digitale techniek willen we om uiteenlopende redenen geen bijzonder teken om het negatief aan te geven: 1 van de bitjes in het getal moet dat maar vertellen. In de loop der tijd zijn er diverse methoden bedacht om negatieve getallen te noteren, maar er worden er tegenwoordig nog maar twee gebruikt: "Offset Binary" en "Two's Complement". In de audio techniek wordt uitsluitend "Two's Complement" gebruikt en daarvan vind je hieronder een voorbeeldje.

 

bin            dec         hex

0111       7       7

0110       6       6

0101       5       5

0100       4       4

0011       3       3

0010       2       2

0001       1       1

0000       0       0

1111      -1       F

1110      -2       E

1101      -3       D

1100      -4       C

1011      -5       B

1010      -6       A

1001      -7       9

1000      -8       8

 

Je ziet dat de nul nu in het midden ligt. De positieve getallen gaan net zo als in het voorbeeld hierboven, maar slechts tot de helft van het bereik. Alle getallen die in het eerste voorbeeld groter of gelijk zijn aan 8 zijn nu negatief.

Voor de C- programmeurs: Als een C-compiler dit formaat zou ondersteunen zouden we het een "signed nibble" noemen.

Het getalbereik is hier dus van plus 7 tot - 8. Nog steeds 16 verschillende waardes als je de nul meetelt. In het CD-geval waar negatieve waardes gebruikt worden is het bereik -32768 to + 32767.  Nog steeds 65536 verschillende nivo's, alleen ligt nul nu in het midden. De meeste C- compilers kennen dit formaat als een "signed integer".

Het belangrijkste voordeel van de 2-complement notatie is dat het optellen of aftrekken voor positieve en negatieve getallen op dezelfde manier gaat. Ik werk dat hier niet verder uit, er is ruimschoots informatie te vinden op internet. Zoek op twee-complement.   

Merk op dat de hexadecimale notatie zich niets aantrekt van het teken. Die notatie is alleen voor mensen bedoeld, en geeft alleen het bitpatroon weer. Als er sprake is van getallen die ook negatief kunnen zijn, dan zijn hexadecimale getallen die met een 8 of hoger beginnen negatief.

Het meest significante bit wordt ook wel het "teken" bit genoemd., eng: "sign bit"


Tafels van vermenigvuldiging.

Veel van ons hebben vroeger op school de "tafels" erin moeten stampen door het klassikaal opdreunen van "één keer twee is twee, twee keer twee is vier, enz...." Als je nog eens terugdenkt aan die tijd herinner je je misschien dat we de tafels van nul en één niet hoefden te leren; de tafel van 0 levert altijd nul op, en de tafel van één altijd het getal waarmee je vermenigvuldigt. Ze zijn zogezegd triviaal.
De grap is nu dat bij het tweetallige systeem alleen die triviale tafels van 0 en 1 nodig zijn, en dat maakt het vermenigvuldigen aanzienlijk eenvoudiger. 

 

Binaire getallen met "cijfers achter de komma"

Als we in het dagelijks gebruik getallen willen opschrijven die niet geheel zijn gebruiken we cijfers "achter de komma" zoals 2,20371.  Zo'n getal noemt dus ook een aantal tienden, honderdsten, duizendsten etc....

In de wereld van de binare getallen kan dit volgens het zelfde systeem. Het worden dan echter halven, kwarten, achtsten, enz. Het is echter erg ongebrukelijk om het zo te noteren. Bijna altijd wordt zo'n getal eerst zo vaak met 2 vermenigvuldigd of door 2 gedeeld dat er uitsluitend nog cijfers "achter de komma" staan. In een aparte groep bitjes  wordt genoteerd hoevaak het getal gedeeld of vermenigvuldigd is om het zover te krijgen.

Deze notatie staat bekend als "floating point", "drijvende komma", of als "mantissa / exponent" notatie. In de audio techniek komen we deze notatie bijna nooit tegen.


Elektrische representatie van getallen.

In het tientallig stelsel zou je voor ieder cijfer 10 verschillende spanningen nodig hebben om een getal aan te geven. Dat leidt tot erg ingewikkelde schakelingen om  zulke getallen in een geheugen op te slaan of er mee te rekenen.

Met het tweetallig stelsel heb je maar twee spanningsnivo's nodig, bijv. 3 Volt voor een 1 en 0 Volt voor een 0. Dat leidt tot veel simpelere schakelingen.