Naar inhoud springen

Basiskennis informatica/Capaciteit

Uit Wikibooks

De hoeveelheid informatie die opgeslagen of verwerkt kan worden, wordt gemeten in bits, of in de daarvan afgeleide eenheid byte.

Bit en bitreeks

[bewerken]

Het binaire talstelsel stelt een bit voor met de twee waarden 0 en 1. De cijfers 2 t.e.m. 9 vanuit het decimale talstelsel bestaan dus niet in het binaire talstelsel.

Bits worden uiteraard met elkaar gecombineerd tot grotere gehelen - bitreeksen genaamd - om zo meer informatie te kunnen bevatten. Bijvoorbeeld:

0101110101         --> 10 bits = 10 b
0101110101111011   --> 16 bits = 16 b

Enkele weetjes:

  • Het woord bit is een portmanteau (samentrekking) van de Engelse woorden binary en digit, dus binair cijfer.
  • Er zit ook een woordspeling in, want bit betekent ook beetje.
  • Naast 0 of 1 kan een bit ook voorgesteld worden door aan of uit, ja of nee, hoog of laag, geladen of niet geladen.
  • T.o.v. 'gewone' computers heeft men het bij kwantumcomputers over een qubit.

Byte en nibble

[bewerken]

Bitreeksen kunnen snel lang worden, dus is er een gewoonte om deze per 8 (een byte) of per 4 (een nibble, half-byte, quadbit of quartet) te groeperen. Zo wordt de bitreeks van 16 bits (16 b) daarna voorgesteld door 2 bytes (2 B) en tenslotte door 4 nibbles. Let op dat de kleine b voor bit staat en de grote B voor byte!

0101110101111011    =   01011101 01111011    =   0101 1101 0111 1011

Enkele weetjes:

  • Helaas springen productspecificaties en reclames soms los om met het verschil tussen 'b' en 'B'. Nochtans is 32 b (32 bit) acht keer kleiner dan 32 B (32 bytes = 32 * 8 bits = 256 b), een heel groot verschil dus! En als 22 mm gelijk is aan 22 milimeter, dan zou 32 mb gelijk zijn aan 32 millibit. Millibit is echter een eenheid die niet wordt gebruikt: wellicht is hier 32 MB, nl. 32 megabyte bedoeld.
  • Een byte is het kleinste adresseerbare deel van het computergeheugen. Hiermee bedoelt men dat het niet mogelijk is om minder dan één byte uit het geheugen te lezen of ernaar te schrijven.
  • Het Engelse to nibble betekent knabbelen, waarbij er dus a.h.w. een hapje uit een byte is genomen (en to bite betekent als homofoon van byte bijten).
  • Er bestaan systemen (bv. bitslicers en microcontrollers) met een byte bestaande uit 5, 7, 9 of 12 of zelfs 14 bits. Voor deze cursus wordt er uitgegaan van een byte bestaande uit 8 bits (een byte als by eight), het meest gebruikelijke.

Bitruimte

[bewerken]

Het aantal bits die beschikbaar zijn om iets op te slaan, te verzenden of te adresseren, de bitruimte, ligt vaak vast. Dit aantal legt dus een beperking op aan de lengte van de bitreeks en dus het aantal gegevens die men kan behandelen.

  • Met 1 bit (.) heeft men slechts twee mogelijkheden, nl. 0 of 1.
  • Met 2 bits (..) zijn de mogelijkheden 00, 01, 10 en 11 (aantal = # = 4).
  • Met 3 bits (...) zijn de mogelijkheden 000, 001, 010, 011, 100, 101, 110, 111 (#=8). Merk op dat als je de bitruimte met 1 bit verhoogt, het aantal mogelijkheden direct verdubbelt!
  • Met 16 bits (................) is het heel veel werk om alle mogelijkheden te noteren. Een berekening voor het aantal is wel eenvoudig: voor de eerste positie zijn er 2 mogelijkheden, evenals voor de tweede en elke volgende positie. Het totaal aantal mogelijkheden verkrijgen we door het aantal mogelijkheden voor elke positie met elkaar te vermenigvuldigen. Dus #=65536, want:
2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 = 216 = 65536

De bitruimte bepaalt ook het grootst mogelijke getal dat je nog kan voorstellen: het maximum. Binair betekent dit dat op iedere bitpositie een 1 staat. Een bitruimte van 3 bits (...) betekent 111 als grootste binaire getal. Als je leert over talstelsels, dan zal je leren dat dit maximum 111(2)=7(10) is. Zonder kennis van talstelsels kan je het ook berekenen. Enkele voorbeelden:

Bitruimte n 3 16 32
Aantal mogelijkheden 2n 8=23 65 536=216 4 294 967 296=232
Grootste, decimale getal 2n-1 7=23-1 65 535=216-1 4 294 967 295‬=232-1

Stel dat je (RAM-)geheugen moet maken, waarbij dit geheugen uit cellen bestaat waarin je binaire informatie kan bewaren (a.h.w. de eerste kolom in een rekenblad). Dat moet je nadenken over de bitruimte per cel zodat je binaire info kan bewaren én over de bitruimte voor het vormen van een adres (de adresruimte). De combinatie zal bepalen hoeveel gegevens je kan wegschrijven of lezen. Hieronder drie voorbeelden met een verschil in adresruimte (en dus in het aantal adressen dat kan worden gevormd) en/of een verschil in opslagruimte (hoeveel bits er per cel kan worden opgeslagen). Merk op dat je extra capaciteit kan verkrijgen door een grotere adresruimte (per bit extra, dubbel zoveel capaciteit) en/of door meer bits per cel te bewaren.

Ter info enkele voorbeelden waarbij de gekozen bitruimte te weinig bleek te zijn:

  • Als je bij kleuren een te kleine bitruimte hebt (de kleurendiepte), dan kan er colour banding optreden.
  • De adresruimte van het RAM-geheugen hebben ze moeten uitbreiden van 32 naar 64 bits.[1]
  • De adresruimte van IPv4, nl. 32 bits is bij IPv6 uitgebreid tot 128 bits.[2].
  • De Millenniumbug: zie artikel.
  • Oude gps-systemen met verkeerde info: zie artikel.

Millenniumbug of Y2K-bug

De millenniumbug was een probleem dat in 20e eeuwse computersystemen ontstond doordat bij het opslaan van de datum alleen de laatste twee cijfers van het jaar werden gebruikt. Zo werd 29 december 1977 bijvoorbeeld opgeslagen als 29-12-77. In de beginperiode van de computer werd dat gedaan om te besparen op de toen erg dure geheugenruimte.

De millenniumbug zou problemen opleveren tijdens de overgang naar het jaar 2000, doordat de representatie van 1 januari 2000 gelijk is aan die van 1 januari 1900: 01-01-00. Voorraadsystemen zouden denken dat een product met vervaldatum 01-01-00 al een eeuw oud was. Of iemand die dan geboren was, zou a.h.w. 100 jaar oud zijn en als pasgeborene al recht hebben op een pensioen.

Op 1 januari 2020 waren er opnieuw problemen, omdat sommige programmeurs de Y2K-bug oplosten door 00 niet te herkennen als 1900, maar als een nieuw jaar (2000) en dat ze na 99 (dus 1999) zouden doortellen tot 20 (dus 2020). Eind 1999 dachten ze dat alle oude systemen tegen 2020 wel vervangen zouden zijn.

We zijn er trouwens nog niet vanaf, want in 2038 kunnen er opnieuw problemen zijn. Unix telt nl. het aantal dagen vanaf 1 januari 1970. En bij de oude systemen zou op 19 januari 2038 de bitruimte te klein kunnen zijn...

(nl) Twintig jaar oude millenniumbug sloeg op 1 januari opnieuw toe. VRT (2020-01-08). (nl) Millenniumbug doet met 20 jaar vertraging dan toch computers crashen. tweakers.net (2020-01-09).

Modder laat DOOM na 2,5 jaar onafgebroken draaien crashen

De game-klassieker Doom uit 1993 heeft een demofunctie, waarbij de inputs van een denkbeeldige speler uitgevoerd worden. Per loop van de demo gaat een gametic omhoog. Deze wordt bewaard in een 32bit-integer, signed (de helft is om negatieve getallen te bewaren, de ander voor positieve). Dat is dus 2147483647 ticks (=232 / 2 - 1) voordat de voorziene bitruimte te klein blijkt te zijn, er een integeroverflow plaatsvindt en de game crasht. De ticksnelheid van de Doom-port is 30Hz, dus zijn er 2147483647 / 30 = 71582788,23 seconden = ca. 2,27 jaar. Bij een ticksnelheid van 35 Hz zou de crash na 1,95 jaar gebeuren.

(nl) Modder laat DOOM na 2,5 jaar onafgebroken draaien crashen. tweakers.net (2025-09-17).

Oude gps-systemen kunnen verkeerde informatie weergeven

In het GPS-signaal zit de actuele week en de hoeveelheid seconden sinds het begin van die week. De ontvanger kan dit signaal weer vertalen in een formaat op basis van dagen, maanden en jaren. Het probleem is dat die weekinformatie wordt verstuurd in een binair getal van 10bit. Dat betekent dat er in totaal 1024 weken via het signaal verstuurd kunnen worden. Week 0 begon op 21 augustus in 1999, dus op 6 april 2019 zijn de 1024 weken voorbij en beginnen de satellieten weer vanaf '0' te tellen.

(nl) Oude gps-systemen kunnen vanaf volgende maand verkeerde informatie weergeven. tweakers.net (2019-03-05).

Veelvouden van bytes

[bewerken]

Vanuit basiseenheden kan je veelvouden definiëren. Zo kennen we de kilometer als 1000 meter, de kilogram als 1000 gram, de megawatt als 1.000.000 watt (een miljoen watt) of de gigawatt als 1.000.000.000 watt (een miljard watt). Analoog definieert men veelvouden voor bits of bytes. Maar hier wordt het wat ingewikkelder.

Alhoewel het prefix kilo- 1000 betekent, verwijst de term kilobyte met als symbool kB naar ofwel 1024 (10241 = 210) bytes ofwel 1000 (10001 = 103) bytes, al naargelang de context. In dit geval zijn er "slechts" 24 bytes verschil, maar bij grotere waarden zoals terabyte (TB) wordt het verschil wel heel groot: 10244 - 10004 = 99.511.627.776 bytes! Dit kan tot verwarring leiden.

Vanwege deze verwarring heeft het IEC in 2003 een nieuwe eenheid bedacht, nl. de kibibyte. Het binaire prefix kibi staat voor 1024 en dus is een kibibyte 1024 bytes. Het eenheidsymbool voor de kibibyte is KiB. Hiermee wordt het verschil tussen kibi (1024) en kilo (1000) duidelijk.

Veelvouden van bytes
met SI-voorvoegsel met IEC-voorvoegsel (binair) afwijking
tussen SI
en binair
symbool naam waarde nl symbool naam waarde
kB kilobyte 10001 = 103 kilo KiB kibibyte 10241 = 210 2,4%
MB megabyte 10002 = 106 miljoen MiB mebibyte 10242 = 220 4,9%
GB gigabyte 10003 = 109 miljard GiB gibibyte 10243 = 230 7,4%
TB terabyte 10004 = 1012 biljoen TiB tebibyte 10244 = 240 10,0%
PB petabyte 10005 = 1015 biljard PiB pebibyte 10245 = 250 12,6%
EB exabyte 10006 = 1018 triljoen EiB exbibyte 10246 = 260 15,3%
ZB zettabyte 10007 = 1021 triljard ZiB zebibyte 10247 = 270 18,1%
YB yottabyte 10008 = 1024 quadriljoen YiB yobibyte 10248 = 280 20,9%
RB ronnabyte 10009 = 1027 quadriljard RiB robibyte 10249 = 290 23,8%
QB quettabyte 100010 = 1030 quintiljoen QiB quebibyte 102410 = 2100 26,8%


Western Digital aangeklaagd om verschil GB en GiB

In de Verenigde Staten was Western Digital aangeklaagd wegens 'te kleine' harde schijven. Het probleem van de advocaten was dat WD adverteerde met gigabytes van 1.000.000.000 bytes, terwijl de meeste besturingssystemen de schijfgrootte in gigabytes van 1.073.741.824 bytes weergeven, zodat de bruikbare capaciteit bijna 7,4% kleiner lijkt. Strikt gezien had Western Digital gelijk, maar vele eindgebruikers dachten anders.

(nl) Western Digital aangeklaagd om verschil GB en GiB. tweakers.net (2006-03-23).

Het gebruik van kibi is helaas nog verre van ingeburgerd en zo blijft de verwarring bestaan bij programma's, besturingssystemen, reclamefolders en hardwarespecificaties:

  • Heel wat programma's van Microsoft gebruiken de kilo als 1024, oa. Windows Verkenner, computerbeheer en de systeemmonitor.
  • Heel wat programma's onder GNOME (en daarmee ook Ubuntu) maken een duidelijk onderscheid tussen kibi (1024) en kilo (1000), o.a. de bestandsbeheerder Nautilus, GParted (om partities aan te maken) en hun systeemmonitor.
  • Er zijn ook 'losse' programma's die dit onderscheid maken: zo zal de ftp-client FileZilla de bestandsoverdracht in MiB/s aangeven. Op andere plaatsen gebruikt hij x bytes in y seconden.
  • Let ook op met de Nederlandse woorden: zo is er een verschil tussen de korte en lange schaal. Als we bv. in het Engels miljard zeggen, dan kan dit in het Engels als billion vertaald worden! Het is dan beter het officiële SI- of IEC-voorvoegsel te gebruiken.

Omrekenen

[bewerken]

De verschillende eenheden kunnen natuurlijk in elkaar omgerekend worden. Enkele voorbeelden van omzettingen:

  • Bij een pc kan er 1 byte per geheugencel van het intern geheugen worden aangesproken. Stel dat hij een 32-bit adresruimte (bitruimte) heeft. Wat is de maximum capaciteit die kan worden aangesproken?
    • Het aantal mogelijke adressen is 232=4 294 967 296
    • In één geheugencel zit 1 byte, dus het geheel is 4 294 967 296 * 1 = 4 294 967 296 B = 4 294 967 296 / 230 = 4 GiB[3]
  • De 32-bit adresruimte bleek te weinig te zijn, daar men na een tijd meer dan 4 GiB wou kunnen aanspreken/adresseren. Er kwam een uitbreiding tot 64 bits. Wat is nu de maximumcapaciteit?
    • Het aantal mogelijke adressen is 264=18 446 744 073 709 551 616. Merk op dat dit niet 2 maal zo veel mogelijke adressen toelaat t.o.v. de 32 bit adresruimte, maar wel 232 keer meer!
    • In één geheugencel zit 1 byte, dus het geheel is 18 446 744 073 709 551 616 * 1 = 18 446 744 073 709 551 616 B = 18 446 744 073 709 551 616 / 240 = 16 777 216 TiB. Dat is 16 EiB (exbibyte)! Merk op dat dit theoretisch maximum beperkt wordt door de chipset, waardoor een bepaald moederbord bv. "slechts" 8 GiB aankan.
  • De systeemmonitor onder Ubuntu geeft aan dat er 1,4 GiB in gebruik is, en de vraag is hoeveel GB dat is. Dan wordt de omzetting:
  • De systeemmonitor onder Ubuntu geeft aan dat de downloadsnelheid 1,2 MiB/s is. De vraagt is hoeveel Mbps dat is, om zo te weten of het maximum uit de netwerkkaart gehaald wordt. Dan wordt de omzetting:

Referenties

[bewerken]
  1. Deze superuser.com-vraag legt het verschil uit tussen geheugen- en adresruimte door een vergelijking met auto's en parkeerplaatsen.
  2. Groter adresbereik bij IPv6
  3. De 4 GiB is een theoretische grens. Het is mogelijk om met 32 bit adresruimte voorbij de 4 GiB grens te gaan, maar dit bleek een nachtmerrie te zijn om te implementeren. Getuige dit interview met Linus Torvalds, die mee ontwikkelt aan de Linux-kernel.
Informatie afkomstig van Wikibooks NL, een onderdeel van de Wikimedia Foundation.