Skip to content

Variabelen in het computergeheugen

Een variabele in je programma is een stukje geheugen waar je informatie in kan opslaan. Je kunt het geheugen zien als een grote verzameling van vakjes waar je getallen in kunt zetten. Elk vakje heeft een adres, en je kunt het vakje uitlezen door het adres op te geven. Omdat het vervelend is om alle adressen uit je hoofd te leren, geef je een naam aan een vakje.

Eén vakje in het geheugen is precies één byte groot. Een byte kan 256 verschillende waarden bevatten en bijvoorbeeld een getal tussen 0 en 255 representeren.

Als je data wil opslaan die groter is dan één byte, dan heb je meerdere vakjes (bytes) nodig. Je kunt dan meerdere vakjes achter elkaar gebruiken. Samen vormen deze vakjes een stukje geheugen dat je kunt gebruiken om data in op te slaan.

Voorbeeld: opslaan van een unsigned int

Een integer (geheel) getal is in de meeste systemen 4 bytes groot. Men spreekt dan van een 32-bits integer want deze is namelijk 4x8 bits groot. De bytes waaruit de integer bestaat worden achter elkaar in het geheugen opgeslagen.

Zo kunnen de bytes van de volgende integer worden opgeslagen:

byte adres 0x0 0x1 0x2 0x3
byte waarde 20 123 1 10

De volgorde van de bytes is van “least significant byte” (LSB) naar “most significant byte” (MSB). De LSB is de byte met het laagste adres, en de MSB is de byte met het hoogste adres. In dit geval is de LSB de byte met adres 0x0 en de MSB de byte met adres 0x3.

De integer wordt nu:

\[ 020 + 123 \cdot 256 + 001 \cdot 256^2 + 010 \cdot 256^3 = 167869204 \]

Voorbeeld: opslaan van een string

Een string is een datatype dat in veel talen wordt gebruikt om tekst in op te slaan. In de basis is een string niets anders een reeks bytes die achter elkaar worden opgeslagen. Iedere byte staat voor een karakter. De bytes worden achter elkaar opgeslagen, en de string wordt afgesloten met een speciaal karakter dat aangeeft dat de string is afgelopen. In de C programmeertaal is dit karakter de nul-byte (\0).

Zo kunnen de bytes van de volgende string worden opgeslagen:

byte adres 0x0 0x1 0x2 0x3 0x4 0x5 0x6
byte waarde 72 101 108 108 111 32 0

De string wordt nu: Hello. De nul-byte aan het einde van de string wordt niet weergegeven. Deze byte geeft aan dat de string is afgelopen.

NB In veel talen worden strings gemanaged door een speciale string-klasse. Deze klasse bevat een aantal functies die je kunt gebruiken om strings te manipuleren.

In onderstaande applicatie kan je zelf experimenteren met de manier waarop variabelen worden opgeslagen. Voer aan de linkerkant de gegevens in van de variabele die je wil opslaan. De applicatie laat vervolgens zien hoe de variabele wordt opgeslagen in het geheugen.

Oefening: variabelen in het geheugen.

Gebruik bovenstaande applicatie om de volgende getallen als int in het geheugen op te slaan:

  • 1
  • 256
  • 512
  • 65536
  • -65536
  • 4294967296
  • 4294967295

Analyseer de resultaten. Kan je de uitkomsten verklaren ?