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:
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 ?