Voor de informatie-eenheden bytes1, bits2 en woorden3 worden vaak voorvoegsels gebruikt om grote hoeveelheden te kunnen kwantificeren. Traditioneel werden hiervoor de SI-voorvoegsels4 kilo5, mega6, giga7, tera8 etc. gebruikt, maar in de computerwereld werden ze anders gebruikt dan officieel voorgeschreven. Omdat opslagcapaciteiten vaak in machten van 2 uitgedrukt worden en $$2^{10} = 1024$$ zo dicht bij 1000 ligt, werd ooit bedacht dat het handig zou zijn niet 1000 bytes, maar 1024 bytes een kilobyte te noemen. Dit werd verwarrend toen de opslagcapaciteiten groter werden, want daardoor werd de afwijking ook groter. Bovendien werden 1000 en 1024 door elkaar gebruikt. Zo heeft een diskette9 van 1,44 megabyte niet een capaciteit van $$1,44 \times 1024 \times 1024$$ bytes, en ook niet van $$1,44 \times 1000 \times 1000$$ bytes, maar van $$1,44 \times 1024 \times 1000$$ bytes (1440 kibibyte10).
De grootte van het interne geheugen11 (RAM12) in een computer wordt traditioneel in "megabytes" van $$1024 \times 1024$$ bytes (tegenwoordig "mebibytes", afgekort MiB, zie onder) aangegeven, maar de capaciteit van extern geheugen13 (onder andere harde schijven14 en geheugenkaarten15) wordt in megabytes van $$1000 \times 1000$$ bytes of in gigabytes van $$1000 \times 1000 \times 1000$$ bytes opgegeven. Daarentegen wordt de omvang van bestanden weer vaak in de binaire eenheden uitgedrukt. Dit — gecombineerd met het feit dat de opgegeven capaciteit van extern geheugen meestal de brutocapaciteit is en er na het formatteren16 netto minder overblijft — kan er toe leiden dat een "bestand van 95 MB" (eigenlijk 95 MiB) niet past op een geheugendrager waarop een capaciteit van 100 MB vermeld staat. Telecommunicatiesnelheden worden meestal in machten van 1000 uitgedrukt — een lijn van 34 Mbit/s transporteert dus 34.000.000 bits per seconde. Soms worden echter ook op dit gebied beide stelsels door elkaar gebruikt.
Omdat het verschil tussen de SI-waarden17 en de op machten van twee gebaseerde waarden met de groeiende capaciteiten van computers steeds groter wordt, is in 1998 door de International Electrotechnical Commission18 besloten deze verwarring uit de wereld te helpen met een nieuwe standaard voor de voorvoegsels. Er zijn nieuwe, binaire voorvoegsels bedacht, afgeleid van de bestaande voorvoegsels maar met -bi- als tweede lettergreep: kibi-, mebi-, gibi-, tebi- enzovoorts. Als afkorting wordt de traditionele letter, gevolgd door i gebruikt.
SI | IEC | ||||||
---|---|---|---|---|---|---|---|
kilo | K | $$10^3$$ | 1.000 | kibi | Ki | $$2^{10}$$ | 1.024 |
mega | M | $$10^6$$ | 1.000.000 | mebi | Mi | $$2^{20}$$ | 1.048.576 |
giga | G | $$10^9$$ | 1.000.000.000 | gibi | Gi | $$2^{30}$$ | 1.073.741.824 |
tera | T | $$10^{12}$$ | - | tebi | Ti | $$2^{40}$$ | - |
peta | P | $$10^{15}$$ | - | pebi | Pi | $$2^{50}$$ | - |
exa | E | $$10^{18}$$ | - | exbi | Ei | $$2^{60}$$ | - |
zetta | Z | $$10^{21}$$ | - | zebi | Zi | $$2^{70}$$ | - |
yotta | Y | $$10^{24}$$ | - | yobi | Yi | $$2^{80}$$ | - |
Sindsdien is het niet meer gewenst de gewone voorvoegsels kilo, mega, giga, tera, peta en exa te gebruiken voor machten van twee: een kilobyte is gewoon 1000 bytes, de hoeveelheid van 1024 bytes heet nu kibibyte. Ook tussen de megabyte (1.000.000 bytes) en de mebibyte (1.048.576 bytes) is er nu een duidelijk verschil. Deze nieuwe standaard wordt echter nog lang niet overal gebruikt.
Overigens geldt voor zowel de zettabyte als voor de zebibyte (en ook voor de yottabyte/yobibyte) dat gegevenshoeveelheden in deze orde van grootte nagenoeg niet voorkomen en dat men deze benamingen in de praktijk dus niet of nauwelijks tegen zal komen.
De invoer bestaat uit 4 natuurlijke getallen die elk op een afzonderlijke regel staan. Deze getallen drukken een aantal bytes uit in SI-eenheden, en stellen respectievelijk het aantal gigabytes, megabytes, kilobytes en bytes voor. De laatste drie waarden liggen daarbij telkens tussen 0 en 999 (grenzen inbegrepen).
Schrijf het totaal aantal bytes dat omschreven wordt in de invoer uit in bytes (eerste regel) en in IEC-eenheden (tweede regel). De omschrijving in IEC-eenheden moet respectievelijk het aantal gibibytes, mebibytes, kibibytes en bytes weergeven, waarbij de laatste drie waarden telkens tussen 0 en 1023 (grenzen inbegrepen) moeten liggen. Gebruik het formaat uit onderstaand voorbeeld als template voor het uitschrijven van de uitvoer.
Invoer:
2
980
259
6
Uitvoer:
2980259006b
2Gib, 794Mib, 201Kib, 190b