Op deze pagina, ga je leren hoe computers gehele getallen opslaan.
Zoals je wel weet, komen getallen overal voor in algoritmes, zelfs als getallen niet het onderwerp zijn. De gebruiker kan bijvoorbeeld geïnteresseerd zijn in een plaatje, maar dat plaatje is een abstractie, de gegevens waaruit de afbeelding bestaat zijn getallen. Getallen worden ook gebruikt om bijvoorbeeld een specifiek element in een lijst te vinden. De komende pagina's, zal je dieper ingaan op getallen in de computer.
5! = 1 \times 2 \times 3 \times 4 \times 5 = 120
Probeer deze invoeren uit:De "e+" betekent "tien keer de macht van" dus deze notatie betekent 2,6525285981219103 × 1032 = 265.252.859.812.191.030.000.000.000.000.000.
breedte: Het aantal bits dat een CPU kan verwerken tegelijkertijd
woord: een binaire reeks van een bepaald aantal bits
Dus waarom toonde Snap! het resultaat van 20! in natuurlijke hele getallen maar dat van 30! in wetenschappelijke notatie? Elke computer is ontworpen met een bepaalde breedte, het aantal bits dat de processor tegelijk van het geheugen leest of in het geheugen schrijft. Dat aantal bits wordt een woord genoemd. Sinds 2016 hebben de meeste nieuwe computers een breedte van 64 bits. De eerste microcomputer, verkocht in 1971, was 4 bits breed!
Een 64-bit woord representeert 264 verschillende waardes. De helft van die waardes worden gebruikt om negatieve getallen weer te geven, één waarde voor 0 en de rest voor positieve getallen. De helft van 264 ( wat 263 = 9.223.372.036.854.775.808 is) is ongeveer 9 × 1018. 20! is ongeveer 2,4 × 1018 en past dus nog net in een 64-bit woord. Maar 30! is te groot, 2,6 × 1033 is veel groter dan in een 64-bit woord past. Daarom geeft de computer aan dat er een overflow error is, en berekent Snap! een benadering.
Waarom kunnen programmeertalen niet gewoon meer dan een woord gebruiken om een heel getal te representeren? Dat kunnen ze. Het probleem is dat één instructie in machinetaal alleen kan werken met getallen van één woord. Het is hierdoor iets lastiger om een programmate schrijven om getallen groter dan één woord op te tellen. Dit is niet zo voor alle talen, het komt vooral voor bij talen van laag niveau.
30!
. 200!
. Het gerapporteerde resultaat past niet op je scherm, maar je kan op het
deze manier zien:
200!
(Tel dit niet met de hand; je hebt een computer).