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 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 een instructie in machinetaal alleen kan werken met getallen van één woord. Een programmeertaal moet een beetje harder werken om te werken te maken met waardes war meerdere woorden voor nodig zijn. Niet alle talen doen dit, maar de talen van het hoogste niveau wel.
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).