Hoe het werkt
Opslageenheden worden op twee verschillende manieren geteld en allebei zijn ze correct. Het decimale stelsel, dat schijffabrikanten en het Internationale Stelsel van Eenheden gebruiken, vermenigvuldigt bij elk voorvoegsel met 1000: een kB is 1000 bytes, een MB een miljoen en een TB een biljoen. Het binaire stelsel, dat met de computers is ontstaan, vermenigvuldigt met 1024, omdat geheugen en bussen in machten van twee worden geadresseerd.
Het probleem is dat beide stelsels decennialang dezelfde namen gebruikten. Wanneer de Windows Verkenner "GB" schrijft, rekent hij in werkelijkheid met gibibytes, oftewel hij deelt drie keer door 1024. Daarom verschijnt een schijf van 1 TB, die precies een biljoen bytes bevat, op het scherm als 931,32 GB: er ontbreekt niets, alleen de telregel is veranderd. Sinds 1998 lost de norm IEC 80000-13 die dubbelzinnigheid op met de binaire voorvoegsels KiB, MiB, GiB en TiB.
Deze tool rekent een capaciteit tegelijk om naar alle drie de families —decimaal, binair en bits— en toont het exacte aantal bytes, het cijfer dat de fabrikant opgeeft en het cijfer dat het besturingssysteem zal tonen, met het verschil in procenten. Alle berekeningen gebeuren in de browser.
Voorbeelden
1 TB931,32 GBDe schijf bevat 1.000.000.000.000 bytes, precies wat de doos belooft. Het systeem deelt ze drie keer door 1024 en toont 931,32 GB, wat strikt genomen 931,32 GiB is. Op het scherm lijkt bijna 69 GB te ontbreken; op de schijf ontbreekt geen enkele byte.1 GiB1073741824 BEen gibibyte is 2^30 bytes. Een decimale gigabyte is 1.000.000.000, dus de binaire is 7,37 % groter. Het is hetzelfde verschil dat scheidt wat jij bedoelt als je om "een gig" vraagt van wat elk programma eronder verstaat.4 TB3,64 TiBHoe groter het voorvoegsel, hoe verder de twee stelsels uit elkaar lopen: 2,34 % bij kilo, 6,87 % bij giga en 9,05 % bij tera. Daarom wordt het gevoel van een "te kleine schijf" juist erger bij grote schijven.100 Mbit12,5 MBNetwerkverbindingen worden in bits gemeten en opslag in bytes. Een verbinding van 100 Mbit/s haalt maximaal 12,5 MB per seconde binnen, want elke byte is 8 bits. Die ene berekening verklaart de helft van de klachten bij internetproviders.Gebruiksscenario's
- Begrijpen waarom een schijf van 1 TB of een USB-stick van 64 GB minder capaciteit tonen dan op de verpakking staat.
- De grootte in bytes die een API, een log of het commando ls -l teruggeeft omzetten naar iets leesbaars.
- De grootte van een back-up of een image vergelijken tussen twee tools die met verschillende maatstaven meten.
- Quota, volumes of uploadlimieten bepalen wanneer de documentatie in MiB spreekt en de interface in MB.
- De snelheid van een verbinding in Mbit/s omrekenen naar de werkelijke downloadsnelheid in MB/s.
- Een klant met cijfers uitleggen dat de gekochte schijf niet minder ruimte heeft dan beloofd.
Veelgestelde vragen
Ik kocht een schijf van 1 TB en ik zie 931 GB, ben ik opgelicht?
Nee. De schijf bevat 1.000.000.000.000 bytes, en dat is wat 1 TB betekent in het decimale stelsel dat alle fabrikanten gebruiken. Windows neemt diezelfde bytes, deelt ze drie keer door 1024, komt op 931,32 uit en plakt er het etiket "GB" op in plaats van "GiB". Het is een etiketprobleem, geen capaciteitsprobleem: alle bytes zijn er. Wat wél echt verdwijnt, en dat staat er los van, is wat het bestandssysteem bij het formatteren reserveert.
Wat is het verschil tussen GB en GiB?
Een GB is 1.000.000.000 bytes (10^9) en een GiB is 1.073.741.824 (2^30). De gibibyte is 7,37 % groter. Dezelfde verhouding herhaalt zich op elk niveau: kB tegenover KiB, MB tegenover MiB, TB tegenover TiB. De binaire symbolen hebben een "i" in het midden en worden uitgesproken als kibi, mebi, gibi en tebi.
Tonen alle besturingssystemen hetzelfde?
Nee, en dat maakt de verwarring groter. Windows rekent in machten van 1024 maar zet er GB en TB bij, dus toont het 931 GB voor een schijf van 1 TB. macOS meet sinds 2009 decimaal, waardoor dezelfde schijf als 1 TB verschijnt. Op Linux hangt het van de tool af: df -h en ls -lh gebruiken 1024, df -H en ls -l --si gebruiken 1000, en veel hulpprogramma's schrijven al GiB waar dat hoort. De schijf is nooit veranderd; degene die meet wel.
Waarom klopt het werkgeheugen wél met wat op de doos staat?
Omdat geheugen in machten van twee wordt gemaakt en geadresseerd: een module van "16 GB" bevat in werkelijkheid 16 GiB, oftewel 17.179.869.184 bytes. Omdat het besturingssysteem ook binair telt, komen beide getallen overeen en merkt niemand er iets van. Bij schijven is het omgekeerd: de fabrikant telt decimaal en het systeem binair, en het verschil springt in het oog.
Hoeveel groeit het verschil per voorvoegsel?
Het stapelt zich op met 2,4 % per niveau. Het getal dat het systeem toont is 2,34 % kleiner bij kilo, 4,63 % bij mega, 6,87 % bij giga, 9,05 % bij tera, 11,18 % bij peta en 13,26 % bij exa. Daarom is het verschil bij een bestand van een paar kB niet te merken, terwijl het bij een array van meerdere petabytes honderden terabytes aan verwachting scheelt.
Is een Mbit hetzelfde als een MB?
Nee, en het verschil is een factor acht. Netwerkverbindingen worden in bits per seconde gemeten en opslag in bytes, en een byte is 8 bits. Een verbinding van 300 Mbit/s levert hooguit 37,5 MB/s aan download, nog voordat je de protocolheaders eraf trekt. Bovendien zijn netwerkvoorvoegsels altijd decimaal: een Mbit is een miljoen bits, nooit 1.048.576.
Waarom mist mijn SSD nog meer ruimte?
Bovenop het verschil tussen decimaal en binair komen nog twee dingen. Het eerste is overprovisioning: de controller houdt een deel van het flashgeheugen achter de hand, dat niet bruikbaar is, om versleten blokken te vervangen en het schrijven te versnellen. Het tweede is het bestandssysteem, dat meteen bij het formatteren ruimte opslokt aan tabellen, journal en metadata. Geen van beide is een fout: het is de prijs die je betaalt om de schijf te laten werken en meegaan.
Welke eenheid kun je dan het beste in documentatie gebruiken?
Die geen twijfel laat bestaan. Wordt de waarde met machten van 1024 berekend, schrijf dan MiB of GiB; wordt ze met machten van 1000 berekend, schrijf dan MB of GB. In een API of een configuratiebestand is het veiligst om het aantal bytes rechtstreeks te tonen en de interface te laten kiezen hoe het weergegeven wordt. Dat is één regel code die uren discussie bespaart over waarom twee tools verschillende cijfers voor hetzelfde bestand melden.