Dane (binarne)

Megabajty kontra mebibajty — skąd się wzięły jednostki z „i"

9 lip 2026·11 min czytania·1760 słów
Świecąca szmaragdowa kość pamięci z binarnym strumieniem 1024 i przedrostkiem „mebi", na tle kosmicznej mgławicy w fiolecie i magencie

Kiedy pierwszy raz zobaczysz w menedżerze partycji napis MiB albo GiB, odruch jest naturalny: to literówka, ktoś się zamachnął przy klawiaturze. A jest dokładnie odwrotnie. To megabajt i gigabajt są jednostkami „na skróty", a mebibajt i gibibajt — te dziwne słowa z „i" w środku — są jedynymi, które mówią prawdę o tym, ile bajtów naprawdę mieści się w Twojej pamięci. Ta pozornie kosmetyczna różnica to owoc sześćdziesięciu lat inżynierskich kompromisów, marketingu i kilku prób reformy, które spektakularnie się nie przyjęły.

Jak „kilo" zaczęło znaczyć 1024

W latach 50. i 60. komputery nie były zgodne nawet co do tego, jak adresować pamięć. IBM 701 z 1952 roku był maszyną binarną i adresował 2048 słów po 36 bitów; zaprezentowany rok później IBM 702 był dziesiętny i operował na 10 000 znaków siedmiobitowych. Rozmiary pamięci opisywano wtedy po prostu dokładną liczbą.

Przełom przyszedł w połowie lat 60., gdy adresowanie binarne stało się standardem, a pamięć operacyjna zaczęła rosnąć potęgami dwójki. Inżynierowie zauważyli wtedy matematyczny zbieg okoliczności, który zaważył na kolejnych dekadach: dziesiąta potęga dwójki, 2¹⁰ = 1024, leży bardzo blisko tysiąca (10³ = 1000). Ponieważ metryczny przedrostek „kilo-" oznaczał dokładnie tysiąc, zaczęto go — dla wygody — stosować do wartości 1024. Rozjazd wynosił marne 2,4%, a każdy inżynier i tak rozumiał binarny kontekst. Skrót przyjął się w dokumentacji kultowych maszyn epoki: IBM System/360, CDC 7600, DEC PDP-11.

Problem w tym, że przy każdym kolejnym rzędzie wielkości ten drobny błąd się mnoży. Już pod koniec lat 60., gdy pojawiły się dyski liczone w milionach bajtów, dostrzeżono zagrożenie. Posypały się propozycje ratunku:

  • Donald Morrison (1968) chciał oznaczać 1024 grecką literą kappa (κ), a jej potęgi kolejnymi rzędami.
  • Wallace Givens odpowiedział skrótem „bK" (od binary kilo), zwracając uwagę, że greckich liter i tak nie da się wydrukować na ówczesnych drukarkach.
  • Bruce Alan Martin z Brookhaven National Laboratory poszedł najdalej: proponował porzucić metryczne przedrostki i pisać wykładniczo o podstawie 2, tak że 3B20 oznaczałoby 3 × 2²⁰.

Żadna z tych idei nie zdobyła poparcia przemysłu. Niejednoznaczność została z nami na kolejne trzy dekady.

Narodziny bibajtów: IEC kontra JEDEC

Chaos trzeba było w końcu uporządkować, ale najpierw został on... zalegalizowany. Stowarzyszenie JEDEC, które standaryzuje pamięci półprzewodnikowe, w normie JESD100B.01 oficjalnie zdefiniowało kilobajt, megabajt i gigabajt jako potęgi 1024. Odzwierciedlało to realną praktykę producentów RAM-u, ale wprost kłóciło się z układem SI, w którym „kilo", „mega" i „giga" to wyłącznie potęgi tysiąca.

Konflikt rozstrzygnęła Międzynarodowa Komisja Elektrotechniczna (IEC). W grudniu 1998 roku (publikacja: styczeń 1999) zatwierdziła nowe przedrostki binarne jako aneks do normy IEC 60027-2. Recepta na nazwy była prosta i sprytna: weź pierwsze dwie litery przedrostka SI i dodaj sylabę „bi" (od binary). Tak kilo + binary dało kibi, megamebi, gigagibi. W 2009 roku przedrostki trafiły do międzynarodowej normy ISO/IEC 80000, odbierając ostatecznie prawo do binarnego użycia symboli SI. Poparły je Międzynarodowy Komitet Miar i Wag (CIPM) oraz IEEE.

Poniższa tabela pokazuje pełną drabinę binarną — dokładnie te przeliczniki, na których działa konwerter danych binarnych NebulaMath. Ostatnia kolumna to sedno całego zamieszania: o ile jednostka binarna jest większa od swojego dziesiętnego imiennika.

Przedrostek IECSymbolWartość binarna (w bajtach)Odpowiednik SIO ile większy od SI
kibiKiB2¹⁰ = 1 024kB (10³)+2,40%
mebiMiB2²⁰ = 1 048 576MB (10⁶)+4,86%
gibiGiB2³⁰ = 1 073 741 824GB (10⁹)+7,37%
tebiTiB2⁴⁰ = 1 099 511 627 776TB (10¹²)+9,95%
pebiPiB2⁵⁰ = 1 125 899 906 842 624PB (10¹⁵)+12,59%

Drabina nie kończy się na pebibajtach. Wyżej są exbi (Ei), zebi (Zi) i yobi (Yi), a gdy w listopadzie 2022 roku dodano do SI dziesiętne przedrostki ronna i quetta, norma IEC 80000-13:2025 dorobiła im binarne odpowiedniki: robi (Ri, 2⁹⁰) oraz quebi (Qi, 2¹⁰⁰). Im wyżej, tym boleśniej: na poziomie yobibajta różnica między binarnym a dziesiętnym liczeniem przekracza już 20%.

Gdzie „i" jest jedynym słusznym wyborem

Skoro przedrostki binarne są takie kłopotliwe, po co je w ogóle utrzymywać? Bo istnieje świat, w którym potęgi dwójki nie są wygodną aproksymacją, lecz twardą fizyką sprzętu — i tam megabajt w sensie dziesiętnym po prostu nie ma sensu.

Ten świat to pamięć operacyjna (RAM). Układy pamięci adresuje się liniami binarnymi, więc ich pojemność z natury jest potęgą dwójki. Kość opisana jako „8 GB" to w istocie 8 × 2³⁰ bajtów, czyli poprawnie 8 GiB — i tu, w odróżnieniu od dysków, żaden producent nie „zaokrągla w dół". Z tego samego powodu binarnych jednostek trzymają się narzędzia, które operują na fizycznych blokach pamięci: menedżery partycji (GParted), monitory zasobów czy programy dbające o wyrównanie sektorów do granic bloków. Tam MiB i GiB to nie pedanteria, tylko warunek poprawności — sektor wypadający w połowie bloku oznacza realny spadek wydajności.

Ta sama logika rządzi rozmiarami plików i alokacją bloków w systemach plików. Dlatego oficjalna polityka jednostek w Ubuntu i Debianie jest twarda: jeśli program dzieli przez 1024, musi pisać KiB/MiB/GiB; jeśli dzieli przez 1000 — kB/MB/GB. Zapis „1 kB = 1024 B" jest tam traktowany jak zwykły błąd.

Hybrydy i anomalie fizycznych nośników

Zanim IEC uporządkowała nazewnictwo, rynek zdążył wyprodukować oznaczenia, które nie są ani szczerze binarne, ani szczerze dziesiętne. Najsłynniejsza jest dyskietka 3,5" HD „1,44 MB" — i jej etykieta to prawdopodobnie najbardziej absurdalna jednostka w historii informatyki.

Nośnik ma fizycznie 2880 sektorów po 512 bajtów, czyli 2880 × 512 = 1 474 560 bajtów. Podzielone przez czysty megabajt dziesiętny (10⁶) daje 1,47 MB; podzielone przez czysty mebibajt (2²⁰) daje 1,41 MiB. Skąd więc „1,44"? Z działania, którego nie da się obronić metodologicznie: producent podzielił pojemność przez 1000 × 1024 = 1 024 000 — jeden „megabajt" zdefiniowany jako iloczyn tysiąca (dziesiętnego) i 1024 (binarnego). To megabajt-mutant, hybryda obu systemów naraz.

Podobne kwiatki znajdziemy na płytach. „700 MB" na płycie CD-R to w rzeczywistości około 703 MiB danych użytkownika (czyli ~737 MB dziesiętnie) — etykieta wyrażona w mebibajtach, ale podpisana symbolem „MB". Z kolei płyty DVD są opisywane uczciwie dziesiętnie, dlatego system operacyjny liczący binarnie zawsze pokaże na nich „niedomiar".

NośnikEtykietaRzeczywiste bajtyDziesiętnie (SI)Binarnie (IEC)Charakter oznaczenia
Dyskietka 3,5" HD1,44 MB1 474 5601,47 MB1,41 MiBhybryda: „mega" = 1000 × 1024
Płyta CD-R700 MB737 280 000737,28 MB703,13 MiBmebibajty podpisane jako „MB"
DVD-5 (SL)4,7 GB4 700 000 0004,70 GB4,38 GiBszczery zapis dziesiętny (SI)
DVD-9 (DL)8,5 GB8 547 758 0808,55 GB7,96 GiBszczery zapis dziesiętny (SI)

Sieć nie zna binarności

Jest jednak dziedzina, która nigdy nie dała się wciągnąć w ten spór: transmisja danych. Przepustowość łącza mierzy się wyłącznie dziesiętnie, w bitach na sekundę — 1 Mb/s to równo 1 000 000 bitów na sekundę, bez wyjątków. Powód jest podwójny. Po pierwsze, urządzenia sieciowe przesyłają surowe impulsy — pojedyncze bity — a abstrakcja ośmiobitowego bajtu nie ma dla samej linii żadnego znaczenia konstrukcyjnego. Po drugie, dostawcom po prostu wygodniej: „300 Mb/s" brzmi lepiej niż uczciwie przeliczony na bajty transfer.

I właśnie na styku tych dwóch światów rodzi się największa dezorientacja użytkownika. Weźmy łącze Gigabit Ethernet, czyli 1 000 000 000 bitów na sekundę. Zamieńmy je na binarne mebibajty, w których system pokazuje postęp pobierania (zakładając idealny brak narzutu):

  • dzielimy przez 8 (bity → bajty): 125 000 000 B/s,
  • dzielimy przez 1024 (bajty → KiB): 122 070,31 KiB/s,
  • dzielimy przez 1024 (KiB → MiB): 119,21 MiB/s.

Dlatego menedżer pobierania na łączu „gigabitowym" nigdy nie pokaże okrągłych 125 MB/s, tylko jakieś dziwne 119 — i to jeszcze w najlepszym razie. W praktyce dochodzi narzut protokołów: każdy pakiet niesie nagłówki TCP/IP, a na warstwie fizycznej stosuje się kodowanie korekcyjne. Fast Ethernet używa np. schematu 4B5B, w którym każde 4 bity danych koduje się 5 bitami na łączu — stąd surowe 125 megabodów, by uzyskać użyteczne 100 Mb/s. Po odjęciu tych narzutów realny transfer rzadko przekracza 110–112 MiB/s. Użytkownik, który spodziewał się „125", widzi 112 i znów czuje się oszukany — choć nikt nic nie ukradł.

Dlaczego mebibajt wciąż jest sierotą

Standard ma ćwierć wieku, jest poprawny i logiczny — a mimo to niemal nikt go nie widuje. Główny powód jest jeden: Microsoft Windows, system setek milionów ludzi, konsekwentnie dzieli przez 1024, lecz podpisuje wynik dziesiętnym „GB". To utrwala złe nawyki na masową skalę. Do tego dochodzi ryzyko wizerunkowe: gdyby producent z dnia na dzień przeszedł na poprawną notację, pliki użytkowników „skurczyłyby się" o kilka procent w ujęciu liczbowym — i posypałyby się nieuzasadnione reklamacje.

Można się z tą niekonsekwencją godzić, dopóki mówimy o pendrivie. Ale wchodzimy w erę chmur liczonych w eksabajtach i zettabajtach, gdzie różnica między binarnym a dziesiętnym liczeniem przekracza 15–20%. Na tej skali „drobna nieścisłość" zamienia się w błąd nie do zaakceptowania w rachunkach za magazyn danych czy w alokacji pamięci. Dyscyplina jest więc prosta, choć wciąż rzadko przestrzegana: jednostki IEC (KiB, MiB, GiB) tam, gdzie adresuje się binarnie — pamięć RAM, bloki systemu plików — a przedrostki SI (kB, MB, GB) dla surowej pojemności nośników i prędkości sieci. Litera „i" nie jest literówką. Jest deklaracją, że tym razem policzono uczciwie.

Dalsza lektura

  • IEC 80000-13, Quantities and units – Part 13: Information science and technology — oficjalna norma definiująca przedrostki binarne.
  • NIST, Definitions of the SI units: The binary prefixes — zwięzłe stanowisko amerykańskiego instytutu metrologicznego.
  • Wikipedia, Timeline of binary prefixes — historia prób reformy (kappa, „bK", notacja Martina) i standaryzacji.
  • Ubuntu Wiki, UnitsPolicy — wzorcowa, twarda polityka rozdziału jednostek SI i IEC w systemie operacyjnym.
Wypróbuj

Konwerter — Dane (binarne)

Otwórz konwerter