Waarom werken computers met alleen nullen en enen? Vandaag hebben we Steven Pemberton, een onderzoeker by het Centrum Wiskunde en Informatica, in Amsterdam, om ons vraag te beantwoorden. Interessant weetje: Stevens tutor, zeg maar zijn studiebegeleider, op universiteit in Engeland, was de man die de allereerste transistor computer bouwde.
Steven, welkom. Waarom werken computers alleen met nullen en enen?
Het is een interessante vraag, maar eigenlijk een te grote simplificatie. Om te vergelijken, kijk naar huizen: huizen bestaan uit kamers, de kamers worden gemaakt met muren, de muren zijn gebouwd van bakstenen, en bakstenen zijn gemaakt van aan mekaar gedrukt korrels zand. Maar we zeggen niet "Huizen zijn alleen gebouwd van zand".
Of nog een voorbeeld: als je schrijft met een zwarte pen op papier, dan met de pen maak je lijnen, en die lijnen vormen letters, de letters vormen woorden, de woorden zinnen, de zinnen alinea's, de alinea's hoofdstukken, de hoofdstukken boeken. Maar je zegt niet "schrijven is alleen gedaan met zwart en wit".
Dus als nullen en enen de zandkorrels van de computers zijn, wat zijn dan de bakstenen?
Getallen! Kijk, als je een hoofdletter A tikt op je computer, wordt dat dan opgeslagen in de computer als het getal 65.
Waarom 65?
Geen reden an sich. Het is gewoon een internationale afspraak dat een A is 65. En B 66, weliswaar.
Maar hoe weet de computer dat dat een A is, en niet, bijvoorbeeld een bedrag geld of iets anders?
Door context. Stel, je loopt door een drukke straat en je hoort vlaarden gesprekken. Je hoort iemand "1650" zeggen. Wat is dat? Misschien een jaargetal: "Het gebouw was in 1650 gebouwd". Of een tijd "Mijn trein vertrekt om 1650". Of een geld bedrag "Dat boek kost 16.50", of duurder "Mijn laptop kostte 1650". Alleen door de context kan je weten wat met "1650" was bedoeld. Zo ook in computers: 65 zou de letter A kunnen zijn, of een geld bedrag, of een leeftijd, of honderden andere dingen. Het is alleen hoe het gebruikt wordt in een programma dat bepaalt wat het representeert.
Dus getallen zijn de bakstenen van de computerkunde, en worden gebruikt om anderen dingen te bouwen. Bestaan computer getallen dan uit alleen nullen en enen?
Inderdaad. Ik zal het uitleggen. Neem een kilometer teller in een auto. In het begin staat hij op "000". Na een kilometer, staat er 001, en na nog een kilometer 002. Ieder kilometer gaat de rechter schijf een klik verder. Maar na 9 kilometers, staat hij op 009, en bij de volgende kilometer gaat de 9 terug naar 0, maar dat heeft het effect om de naastliggende schijf van 0 naar 1 te gaan, en heb je 010. Na 19 kilometers gereden te hebben staat hij op 19, en nog een kilometer gaat de 9 naar 0, en de 1 naar 2. Enzovoorts.
Nou stel dat je een kilometer teller had die bestond uit alleen nullen en enen. Hij staat op 000, en je rijdt een kilometer. Dan staat hij op 001, maar bij de volgende kilometer gaat de 1 terug naar 0, en dat heeft het effect om van de naastliggende 0 een 1 van te maken. Dus na 2 kilometers staat hij op 010. Dat representeert "2". Na nog een kilometer, staat hij op "011" wat representeert 3. En bij de volgende kilometer, gaat de rechter 1 een 0 worden, wat telt een op bij de naastliggende 1, dat ook dus een nul wordt, wat het effect heeft om van de derde 0 een 1 te maken. Dus heb je "100", wat staat voor 4. Enzovoorts. Dus bijvoorbeeld 111 staat voor 7.
Zo kan je alle getallen representeren met alleen maar nullen en enen. Maar waarom zou je dat willen?
Eenvoud.
Kijk, om twee cijfers op te tellen, 2 plus 2 is 4, 2 plus 3 is 5, enz., omdat je tien cijfers heb van 0 tot 9, heb je 10 maal 10 regels, 100 regels te onthouden. Ook met vermenigvuldigen: er zijn honderd regels van 2 maal 3 is 6, 2 maal 4 is 8 enz.
Maar met nullen en enen zijn dat er maar 4! 0+0=0, 0+1=1, 1+0=1, 1+1=10, (één nul, dwz 2). Ook met vermenigvuldigen 0×0=0, 0×1=0, 1×0=0, 1×1=1.
Als je die regels wil opslaan in electronica, is het veel simpler, goedkoper, en kennelijk sneller, om 4 regels te gebruiken in plaats van 100.
Dus in opsomming: op de aller aller laagste niveau werken computers inderdaad met nullen en enen voor reden van simpliciteit, en economie, maar op hogere niveau's worden zelden gedacht in enen en nullen maar in hogere concepten, zoals letters, woorden, documenten, beelden.
Why do computers work with only zeros and ones?
Today we have Steven Pemberton, a researcher at the Centrum Wiskunde en Informatica, in Amsterdam, to answer our question. Interesting fact: Steven's tutor at university in England was the man who built the very first transistor computer. Steven, welcome. Why do computers work with only zeros and ones?
It's an interesting question, but actually an oversimplification. To compare, look at houses: houses are made of rooms, the rooms are made of walls, the walls are built of bricks, and bricks are made of grains of sand pressed together. But we don't say "Houses are built only of sand". Or another example: when you write with a black pen on paper, with the pen you make lines, and those lines form letters, the letters form words, the words sentences, the sentences paragraphs, the paragraphs chapters, the chapters books. But we don't say "writing is only black lines on white".
So if zeros and ones are the grains of sand in computers, what are the bricks?
Numbers! For instance, if you type a capital A on your computer, that is stored in the computer as the number 65.
Why 65?
No reason in itself. It's just an international convention that an A is 65. And B is 66, and so on.
But how does the computer know that that is an A, and not, for example, an amount of money or something else?
By context. Suppose you're walking down a busy street and you hear snippets of conversations. You hear someone say "1650". What is that? Maybe a year: "The building was built in 1650". Or a time: "My train leaves at 16:50". Or an amount of money: "That book costs 16.50", or more expensive: "My laptop cost 1650". Only from context can you know what was meant by "1650". So too in computers: 65 could be the letter A, or an amount of money, or an age, or a hundred other things. It is only how it is used in a program that determines what it represents.
So numbers are the bricks of computing, and are used to build other things. Are computer numbers just zeros and ones?
Indeed. Let me explain. Take an odometer in a car. At first, it reads "000." After one kilometer, it reads 001, and after another kilometer, 002. With each kilometer, the right dial moves one click forward. But after 9 kilometers, it's at 009, and the next kilometer the 9 goes back to 0, but that has the effect of moving the adjacent disk from 0 to 1, and you have 010. After driving 19 kilometers, it's at 19, and another kilometer the 9 goes to 0, and the 1 to 2. And so on.
Now, suppose you had a kilometer counter that consisted of only zeros and ones. It's at 000, and you drive one kilometer. Then it's at 001, but the next kilometer, the 1 goes back to 0, and that has the effect of making the adjacent 0 a 1. So after 2 kilometers, it's at 010. That represents "2". After another kilometer, it's at "011," which represents 3. And the next kilometer, the right 1 becomes a 0, which adds one to the adjacent 1, which also becomes a zero, which has the effect of making the third 0 a 1. So you have "100," which represents 4. And so on. So for example 111 stands for 7. That way you can represent all numbers with just zeros and ones.
But why would you want to do that?
Simplicity. For instance, to add two digits, 2 plus 2 is 4, 2 plus 3 is 5, etc., because you have ten digits from 0 to 9, you have 10 times 10 rules, 100 rules to remember. Also with multiplication: there are a hundred rules of 2 times 3 is 6, 2 times 4 is 8 etc.
× | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
2 | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 |
3 | 0 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 |
4 | 0 | 4 | 8 | 7 | 16 | 20 | 24 | 28 | 32 | 36 |
5 | 0 | 5 | 10 | 8 | 20 | 25 | 30 | 35 | 40 | 45 |
6 | 0 | 6 | 12 | 9 | 24 | 30 | 36 | 42 | 48 | 54 |
7 | 0 | 7 | 14 | 10 | 28 | 35 | 42 | 49 | 56 | 63 |
8 | 0 | 8 | 16 | 11 | 32 | 40 | 48 | 56 | 64 | 72 |
9 | 0 | 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 |
But with zeros and ones there are only 4! 0+0=0, 0+1=1, 1+0=1, 1+1=10, (one zero, i.e. 2). Also with multiplication 0×0=0, 0×1=0, 1×0=0, 1×1=1.
+ | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 10 |
If you want to store those rules in electronics, it is much simpler, cheaper, and apparently faster, to use 4 rules instead of 100.
So in summary: at the very lowest level computers indeed work with zeros and ones for simplicity and economy, but at higher levels we rarely think in ones and zeros but in higher concepts, such as letters, words, documents, images.