Hoe computers tellen met enen en nullen

We tellen zo vanzelfsprekend met tien cijfers dat we bijna vergeten dat het een keuze is. Nul tot en met negen, en daarna beginnen we opnieuw met een extra cijfer ervoor. Computers doen het compleet anders: zij kennen maar twee cijfers, nul en een. Alles wat je op een scherm ziet, elke foto, elk liedje en elke tekst, is uiteindelijk opgebouwd uit lange reeksen enen en nullen. Dat lijkt onhandig beperkt, maar het is juist de sleutel tot hun betrouwbaarheid. In dit artikel ontrafelen we hoe computers met slechts twee cijfers toch de hele wereld kunnen weergeven.
Waarom computers maar twee cijfers gebruiken
De reden is verrassend fysiek. In een computer bestaat alles uit minuscule schakelaars die stroom doorlaten of tegenhouden. Zo’n schakelaar heeft twee duidelijke standen: aan of uit. Er is geen betrouwbare tussenstand, want een half doorgelaten stroompje is lastig te onderscheiden van ruis. Door aan te wijzen als een en uit als nul, krijg je een systeem dat bijna niet in de war te brengen is. De computer hoeft nooit te twijfelen of een signaal nu een drie of een vier voorstelt; het is aan of uit, en verder niets.
Dit tweetallige of binaire stelsel is dus geen willekeurige gril, maar volgt rechtstreeks uit hoe de hardware werkt. Elk van die aan-of-uitwaarden heet een bit, een samentrekking van het Engelse binary digit. Een bit is de allerkleinste eenheid van informatie die er bestaat: het antwoord op een enkele ja-of-neevraag. Met genoeg van die piepkleine ja-of-neeschakelaars naast elkaar kun je verrassend veel uitdrukken.
Van bits naar grotere getallen
In ons vertrouwde tientallige stelsel staat elk cijfer voor een macht van tien. Het getal 235 betekent twee honderdtallen, drie tientallen en vijf eenheden. In het binaire stelsel werkt het net zo, alleen zijn het machten van twee: eenheden, tweetallen, viertallen, achttallen, zestientallen, enzovoort. Elke positie die je naar links opschuift, verdubbelt de waarde in plaats van te vertienvoudigen.
Neem de binaire reeks 1011. Van rechts naar links staat die voor een eenheid, een tweetal, geen viertal en een achttal. Tel je die op, dan krijg je een plus twee plus acht, samen elf. Zo stelt 1011 in computerland gewoon het getal elf voor. Het enige wat je hoeft te onthouden is dat elke plek een verdubbeling betekent en dat je alleen mag kiezen tussen wel meetellen of niet meetellen. Met vier bits kun je op deze manier alle getallen van nul tot en met vijftien maken, en met elke extra bit verdubbelt het aantal mogelijkheden.
Waarom bytes van acht bits handig zijn
In de praktijk groeperen computers bits vrijwel altijd in blokjes van acht, en zo’n blokje heet een byte. Met acht bits kun je tweehonderdzesenvijftig verschillende combinaties maken, van louter nullen tot louter enen. Dat aantal is niet toevallig gekozen: het bleek een prettige balans tussen genoeg mogelijkheden en niet te veel schakelaars tegelijk. Bestandsgroottes en geheugens worden daarom in bytes uitgedrukt, en de bekende voorvoegsels zoals kilobyte, megabyte en gigabyte bouwen daarop voort.
Een paar concrete voorbeelden maken duidelijk hoeveel je met deze bouwstenen kunt:
- Met een byte kun je een letter, cijfer of leesteken vastleggen volgens een afgesproken codetabel.
- Met drie bytes kun je een kleur mengen uit een dosis rood, groen en blauw, samen goed voor miljoenen kleurtinten.
- Met een lange reeks bytes leg je de helderheid van elk beeldpunt in een foto vast, punt voor punt.
- Met nog veel meer bytes bewaar je de duizenden geluidsmetingen per seconde die samen een muzieknummer vormen.
Van getallen naar letters, kleuren en klanken
De grote truc is dat een reeks enen en nullen op zichzelf niets betekent; de betekenis ontstaat door afspraak. Al vroeg spraken ontwerpers af welke bytecombinatie bij welke letter hoort. In zo’n codetabel staat bijvoorbeeld dat de hoofdletter A overeenkomt met het getal vijfenzestig. Typ je een A, dan slaat de computer intern gewoon dat getal op, en bij het weergeven zoekt hij in de tabel op welk lettervormpje daarbij hoort. Dezelfde logica geldt voor kleuren, waarbij drie getallen de hoeveelheid rood, groen en blauw bepalen.
Zo bezien is een computer een verbluffend simpele machine die maar een ding heel goed kan: enorme hoeveelheden aan-of-uitwaarden razendsnel verwerken. De rijkdom aan tekst, beeld en geluid die wij ervan terugkrijgen, komt niet doordat de machine die dingen begrijpt, maar doordat wij hebben afgesproken hoe getallen naar betekenis vertaald worden. De computer schuift nullen en enen heen en weer; de betekenis leggen wij erin.
Waarom dit voor jou als gebruiker uitmaakt
Je hoeft nooit zelf in binair te rekenen om een computer te gebruiken, maar een beetje besef van dit systeem maakt allerlei dagelijkse dingen ineens logisch. Het verklaart waarom geheugen en opslag in vreemd ogende getallen komen zoals tweeendertig of vierenzestig, telkens verdubbelingen van een macht van twee. Het maakt begrijpelijk waarom een hoge resolutie of een lange video zoveel meer ruimte inneemt: er zijn simpelweg meer beeldpunten en dus meer bytes nodig om alles vast te leggen.
Het geeft ook een gezond respect voor wat er onder de motorkap gebeurt wanneer je op een knop drukt. Achter de vloeiende animatie op je scherm gaan miljarden schakelingen schuil die per fractie van een seconde van aan naar uit wippen. Dat een zo eenvoudige basis, slechts twee toestanden, kan uitgroeien tot alles wat we van moderne apparaten verwachten, is een van de mooiste voorbeelden van hoe iets simpels iets ongelooflijk krachtigs kan voortbrengen. De volgende keer dat je een foto opent of een liedje afspeelt, weet je dat er in de kern niets anders gebeurt dan het razendsnel ordenen van enen en nullen.