# Bits, bytes en computergeheugen [Programmeergidsen](LEESMIJ.md) 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. ```pliro # 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? ```text 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](../begrippen/utf-8.md). 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](../begrippen/utf-8.md) kunnen teksten evenveel codepunten hebben en toch verschillende aantallen bytes gebruiken. Opgeslagen [JSON](../begrippen/json.md) bevat ook leestekens en veldnamen. ## Verder leren [Getallen](../syntaxis/getallen.md) · [Tekstbestanden](../syntaxis/tekstcodering.md) · [Gegevens bewaren](gegevens-bewaren.md)