Bits, bytes en computergeheugen
Computers stellen informatie voor met patronen van bits. Een bit heeft twee mogelijke waarden. Meestal schrijven we die als 0 en 1. Een groep van acht bits heet een byte.
Bits kunnen getallen, tekst, afbeeldingen en geluid voorstellen als een programma weet hoe het dat patroon moet lezen. Het patroon zelf vertelt niet wat het betekent.
Maak getalkaartjes
Neem vier kaartjes met 8, 4, 2 en 1. Draai een kaartje omhoog bij een bit van 1 en omlaag bij een bit van 0. Tel de zichtbare waarden op.
Het patroon 1101 geeft 8 + 4 + 0 + 1. Dat is dertien. Deze manier om getallen te schrijven heet binair. Acht bits geven 256 verschillende patronen. Daarmee kun je de gehele getallen 0 tot en met 255 voorstellen. Dat betekent niet dat elk Pliro-getal in één byte wordt bewaard.
Lees een bitpatroon
Voor dit proefje heeft Pliro geen bijzondere binaire getalnotatie nodig. We gebruiken gewone getallen in een lijst.
# taal: nl
laat bits = [1, 1, 0, 1]
laat waarde = 0
voor bit in bits:
zet waarde = waarde * 2 + bit
zeg waarde
Vermenigvuldigen met twee maakt plaats voor het volgende binaire cijfer. Het bit optellen zet dat cijfer op zijn plaats. De tussenwaarden na de rondes zijn 1, 3, 6 en 13.
Voorspel en probeer
Welk gewoon getal stelt 1101 voor?
13
Jouw uitdaging
Probeer [1, 0, 1] met kaartjes voor 4, 2 en 1. Voorspel eerst de waarde. Gebruik alleen nullen en enen in de lijst. Andere getallen beschrijven geen bits.
Geheugen en bewaren
Werkgeheugen, vaak RAM genoemd, lijkt op een bureau voor dingen die een draaiend programma gebruikt. Opgeslagen gegevens lijken meer op een kast die een bestand kan bewaren nadat het programma sluit. De broncode opslaan bewaart niet automatisch de huidige score.
Een veelgemaakte fout
Eén zichtbaar teken is niet altijd één byte. Pliro-broncode gebruikt UTF-8. Daarin kunnen verschillende tekens verschillende aantallen bytes gebruiken. lengte telt codepunten in tekst, geen bytes in een bestand. Je kunt leren programmeren zonder de bytegrootte van elke waarde uit te rekenen.
KiB en MiB: grotere hoeveelheden tellen
Een KiB (kibibyte) is 1.024 bytes. Een MiB (mebibyte) is 1.024 KiB, ofwel 1.048.576 bytes. Pliro’s bewaargrenzen gebruiken deze eenheden. De decimale labels kB en MB betekenen 1.000 en 1.000.000 bytes. Lees het label in plaats van aan te nemen dat iedere “kilo” hetzelfde aantal betekent.
Een grens van 64 KiB is een bytegrens. Bij UTF-8 kunnen teksten evenveel codepunten hebben en toch verschillende aantallen bytes gebruiken. Opgeslagen JSON bevat ook leestekens en veldnamen.
