Wat elke eenheid van gegevens is
byte B
Een byte is acht bits, en dat stond niet altijd vast: de eerste computers gebruikten er zes, zeven of negen. Acht won omdat er een teken in past en omdat het getal netjes in helften uiteenvalt.
kilobyte kB
Een kilobyte is 1.000 bytes als een normalisatie-instituut hem definieert en 1.024 als een besturingssysteem dat doet. Deze pagina rekent met 1.000; de eenheid van 1.024 heet kibibyte.
megabyte MB
Een megabyte is een miljoen bytes. Fabrikanten van opslag hebben altijd decimaal geteld, en daarom lijken hun getallen groter dan wat de computer laat zien.
gigabyte GB
Een gigabyte is een miljard bytes, in de decimale betekenis die schijffabrikanten, databundels en videogroottes hanteren.
terabyte TB
Een terabyte is duizend miljard bytes, oftewel 10¹². Een schijf die als 1 TB verkocht wordt heeft precies dat: de ruimte die lijkt te ontbreken is onenigheid over eenheden en geen tekort.
kibibyte KiB
Een kibibyte is precies 1.024 bytes. De naam is in 1998 ingevoerd zodat «kilobyte» weer 1.000 kon betekenen, al is de gewoonte nooit helemaal aangeslagen.
mebibyte MiB
Een mebibyte is 1.024 kibibyte, oftewel 1.048.576 bytes. De hulpmiddelen van Linux en de geheugengetallen bedoelen vrijwel altijd dit, ook als er «MB» staat.
gibibyte GiB
Een gibibyte is 1.073.741.824 bytes, ongeveer 7 % meer dan een gigabyte. Windows meet in gibibytes maar noemt ze «GB», en daarin zit het hele raadsel van de verdwenen ruimte.
tebibyte TiB
Een tebibyte is 1.024 gibibyte. De afstand tot de terabyte groeit bij elke trede: 2,4 % bij kilo, 4,9 % bij mega, 7,4 % bij giga en 10 % bij tera.
Opmerkingen bij de gangbare omrekeningen van gegevens
gb naar mb
Het duizendtal dat deze pagina gebruikt, en wie het nog meer gebruikt
Deze pagina deelt door duizend omdat dat is wat het voorvoegsel betekent. Kilo, mega en giga zijn SI-voorvoegsels voor 10³, 10⁶ en 10⁹, en ze dragen die waarden bij elke andere grootheid — een kilometer, een megawatt. Toegepast op bytes geven ze 1.000, 1.000.000 en 1.000.000.000.
Het rivaliserende systeem is echt en deze pagina is het niet. Machten van 1.024 geven de kibibyte, mebibyte en gibibyte — KiB, MiB en GiB — en dat is waar de meeste desktopbesturingssystemen in tellen, wat voor letters ze ook afdrukken.
byte naar gb
Waar het bytegetal op je scherm vandaan komt
Exacte bytegetallen komen van gereedschap dat weigert af te ronden: stat en ls -l, een Content-Length-header, de groottekolom in een objectopslag, een logregel over een upload. Geen daarvan probeert leesbaar te zijn — ze melden wat het bestandssysteem daadwerkelijk vasthoudt, vandaar dat het getal tien of elf cijfers lang is.
Die exactheid is de reden om daarvandaan te beginnen in plaats van vanaf een vriendelijker getal. Het bytegetal is het bestand; elke andere weergave van de grootte is een afgeronde vertaling ervan, en de vertalingen zijn het onderling oneens.
byte naar gib
Een ruwe bytetelling laat geen ruimte voor onenigheid
Software geeft groottes in bytes met een reden: een bytetelling heeft geen prefix om te interpreteren, geen afronding om ongedaan te maken en geen landinstelling erin, dus een metrics-scrape, een logregel en een API-respons zijn onderling te vergelijken zonder dat iedereen het eerst eens hoeft te worden over wat een G betekent. Precies die eigenschap maakt de getallen onleesbaar: 17.179.869.184 zegt niets totdat het door iets gedeeld is.
De juiste deler is 1.073.741.824 wanneer het omringende systeem binair rekent, wat voor geheugen, pagecache, bestandssysteemgebruik en de meeste besturingssysteemtellers het geval is. Dat cijfer geeft precies 16 GiB. Delen door een miljard in plaats daarvan geeft 17,18 en verbergt dat het getal een schone macht van twee was.
byte naar kb
Op deze schaal is elk byte nog te tellen
Onder een megabyte is het ruwe bytegetal nog niet onleesbaar, en dat verandert waar de omzetting voor dient. Niemand zet 27.504 bytes om naar kilobyte omdat het getal onbegrijpelijk is; het gebeurt omdat alles waar je het tegen wilt afzetten — een assetbudget, een limiet op een formulier, een ander bestand dat iemand op 30 kB schatte — in kilobytes staat.
Dat maakt precisie hier goedkoop. Eén decimaal draagt honderd bytes en twee dragen er tien, dus 27,5 kB en 27,50 kB zijn allebei eerlijk en het tweede is geen opvulling. Hogerop houdt elk extra cijfer op iets te betekenen, maar op deze schaal is een tiende kilobyte een echte hoeveelheid die je uit een bestand kunt halen.
byte naar kib
Eén bestand, twee getallen: ls -l tegen ls -lh
Draai `ls -l` en je krijgt een exact aantal bytes, wat het bestandssysteem vastlegt en wat elke API die een grootte rapporteert teruggeeft. Draai `ls -lh` op hetzelfde bestand en je krijgt iets als 24K. Er is niets aan het bestand veranderd tussen de twee commando’s — het tweede deelde door 1.024, rondde af, en plakte een letter erachter die niet zegt welke schaal gebruikt is.
Dat is de reden om bytes met de hand om te zetten naar KiB. Het exacte getal is degene dat moet overeenkomen met een header, een hashgrens of een quotum; het afgeronde getal is wat een collega je terugzegt vanuit een terminal. Kunnen schakelen tussen beide zonder te gokken welke basis het gereedschap gebruikte, is de hele vaardigheid hier.
byte naar mb
Waarom een machine je eerst bytes geeft
Bytes zijn wat elke laag onder de weergave daadwerkelijk telt. Een mapoverzicht zonder opmaakvlaggen, het st_size-veld van een stat-aanroep, een Content-Length-header, de groottekolom in een objectopslag — allemaal gehele getallen in bytes, want een byte is de ene eenheid hier zonder dialect.
Precies daarom geven interfaces dat door. Zodra een grootte in megabyte is omgezet heeft ze een deler en een afronding gekregen, en geen van beide reist mee met het getal. Een API die 5242880 teruggeeft heeft iets ondubbelzinnigs gezegd; een API die "5,24 MB" teruggeeft heeft iets gezegd dat een voetnoot nodig heeft.