Layer 8Ehrlicher Tech-Support

MB gegen MiB: Die Platte hat weniger, als draufsteht

Eine 1-TB-Platte fasst 931,32 GiB, ein 32-GB-Stick 29,8. Kein Betrug: Hersteller zählen dezimal, das Betriebssystem rechnet binär – zwei Einheiten.

Aufwand:
ca. 10 Min.
Voraussetzung:
Ein Taschenrechner, Eine Kommandozeile mit df und numfmt, Die Byte-Angabe des Herstellers
Gilt für:
Festplatten, SSDs, USB-Sticks und Speicherkarten, Linux mit GNU coreutils, Angaben zu Datenraten in Mbit/s

Das Symptom

Auf der Verpackung stand 1 TB. Im Rechner steht 931 GB. Beim USB-Stick mit 32 GB sind es 29,8, bei der 4-TB-Platte 3,64 – und das Sicherungsabbild, das laut Anzeige 3,7 TB groß ist, passt nicht darauf, obwohl die Zahlen doch stimmen müssten.

Dasselbe Muster an anderer Stelle: Der Anschluss liefert 100 Mbit/s, der Download läuft mit 12 MB/s, und irgendjemand ruft beim Anbieter an. Oder ein Kollege behauptet, es fehle ein Zehntel der Kapazität, und niemand kann ihm auf die Schnelle das Gegenteil beweisen.

Die „Layer 8“-Wahrheit

Es fehlt kein Byte. Es gibt zwei Einheiten, die beide „Gigabyte“ heißen. Die eine ist 1 000 000 000 Bytes, die andere 1 073 741 824. NIST führt beide in einer Tabelle nebeneinander auf und beschreibt auch, wie es dazu kam: Weil 2¹⁰ zufällig fast 1000 ist, benutzten Fachleute jahrzehntelang das metrische Präfix für den binären Wert. Das ging gut, solange nur Fachleute mitredeten. Heute, schreibt NIST, weiß „everybody“ eben nicht mehr, was ein Megabyte ist – Speicherhersteller meinen die Million, Arbeitsspeicherhersteller die Zweierpotenz, und die alte 1,44-MB-Diskette rechnete mit einer dritten Bedeutung von 1 024 000 Bytes.

Die Lösung existiert seit Dezember 1998: kibi, mebi, gibi, tebi, geschrieben Ki, Mi, Gi, Ti. Seither ist MB die Million und MiB die Zweierpotenz, sauber getrennt. Nur benutzt es fast niemand konsequent – und das ist der eigentliche Layer-8-Teil. Wie tief das sitzt, zeigt ausgerechnet eine Herstellerdokumentation: Die Microsoft-Referenz zur Funktion, die unter Windows Bytezahlen lesbar macht, behauptet im Fließtext, seit Windows 10 werde dezimal gerechnet – und liefert direkt darunter eine Beispieltabelle, deren vier Werte sich nur binär nachrechnen lassen. Wenn sich eine Seite in sich selbst widerspricht, ist die Lehre nicht, besser hinzusehen, sondern gar nicht erst zu glauben: Man besorgt sich die Bytezahl und teilt selbst.

Die echte, verifizierte Lösung

1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:

  1. 1.

    Die Bytezahl besorgen, nicht die Beschriftung

    Jede Diskussion über Speicherplatz wird kurz, sobald die nackte Zahl auf dem Tisch liegt. Unter Linux zeigt `df` mit einer Blockgröße von einem Byte den Rohwert; jedes andere System hat ein Feld dafür. Erst diese Zahl ist eine Tatsache, alles danach ist eine Umrechnung.

    df --block-size=1 /tmp | tail -1
    # tmpfs          4034015232 909123584 3124891648   23% /tmp
    
  2. 2.

    Dieselbe Zahl in beiden Maßen anzeigen lassen

    GNU coreutils macht die Doppeldeutigkeit sichtbar: `-h` rechnet laut Handbuchseite „in powers of 1024“, `-H` beziehungsweise `--si` rechnet „in powers of 1000“. Zwei Ausgaben, ein Datenträger, kein Byte Unterschied – der Sprung von 3,8 auf 4,1 ist reine Einheitenwahl.

    df -h /tmp | tail -1
    # tmpfs           3,8G    868M  3,0G   23% /tmp
    df -H /tmp | tail -1
    # tmpfs           4,1G    910M  3,2G   23% /tmp
    
  3. 3.

    Selbst umrechnen, statt der Anzeige zu glauben

    `numfmt` beherrscht beide Maße und benennt sie sogar richtig. Damit lässt sich in einem Zweizeiler klären, ob eine Angabe dezimal oder binär gemeint war – die Antwort auf die Frage aus dem Laden ist eine Sekunde Arbeit statt einer Viertelstunde Streit. Beachte, dass numfmt auf ganze Einheiten aufrundet: Aus den exakt 931,32 GiB einer 1-TB-Platte wird in der Ausgabe 932Gi.

    numfmt --to=si     1000000000000   # 1,0T
    numfmt --to=iec-i  1000000000000   # 932Gi
    numfmt --to=iec-i  4000000000000   # 3,7Ti
    numfmt --to=iec-i    32000000000   # 30Gi
    
  4. 4.

    Vor dem Kauf mit dem Faktor rechnen, den man wirklich bekommt

    Faustregel aus den NIST-Werten, selbst nachgerechnet: Ein Terabyte sind 931,32 GiB, vier Terabyte sind 3,64 TiB, ein 32-GB-Stick fasst 29,8 GiB. Wer ein Abbild von 3,7 TiB sichern will, braucht deshalb keine 4-TB-Platte, sondern eine größere. Das ist der Punkt, an dem die Verwechslung Geld kostet.

    python3 -c "print(round(4_000_000_000_000 / 2**40, 2), 'TiB')"
    # 3.64 TiB
    
  5. 5.

    Bei Leitungen durch acht teilen

    Datenraten stehen in bit pro Sekunde, Dateigrößen in Byte. Ein Byte ist nach NIST acht bit, also ist die maximal mögliche Übertragungsgeschwindigkeit ein Achtel der beworbenen Zahl – und das noch vor allen Protokollkosten. Wer sich über einen Download mit 12 MB/s an einer 100er-Leitung ärgert, ärgert sich über das Erwartete.

    python3 -c "print(100_000_000 / 8 / 1_000_000, 'MB/s')"
    # 12.5 MB/s
    
  6. 6.

    In eigenen Texten und Tabellen das eindeutige Kürzel benutzen

    Wenn in einem Angebot, einem Ticket oder einer Konfiguration eine Größe steht, gehört das passende Kürzel dazu: MB für eine Million Bytes, MiB für 1 048 576 Bytes. Das kostet einen Buchstaben und erspart die Rückfrage. Wo das Gegenüber die Schreibweise nicht kennt, schreibt man die Bytezahl in Klammern dahinter – die ist immer eindeutig.

  7. 7.

    Vor der Reklamation die Bytes zählen

    Bevor jemand eine Platte zurückschickt, wird die Rohgröße in Bytes gegen die Herstellerangabe gehalten. Stimmt sie, ist alles in Ordnung und nur die Anzeige rechnet anders. Weicht sie deutlich ab, ist es ein echter Fall – dann fehlt entweder eine Partition, oder es ist eine gefälschte Kapazität. Diese Unterscheidung schafft man nur mit der Bytezahl, nie mit der beschrifteten Anzeige.

Häufige Fragen (FAQ)

?Ich habe 1 TB gekauft und bekomme 931 GB. Werde ich betrogen?

Nein, es sind zwei verschiedene Einheiten mit demselben Namen. Die NIST-Seite zu den binären Präfixen listet beide: 1 GB = 10⁹ B = 1 000 000 000 B und 1 GiB = 2³⁰ B = 1 073 741 824 B. Der Hersteller liefert eine Billion Bytes, das Betriebssystem teilt sie durch 1 073 741 824 und zeigt 931,32 – selbst nachgerechnet. Die Bytes sind alle da, nur die Anzeige benutzt ein anderes Maß. Und weil sich der Unterschied mit jeder Stufe multipliziert, wächst er: Bei Kilo sind es 2,4 Prozent, bei Tera schon 9,95 Prozent.

?Wer hat sich diesen Doppelnamen ausgedacht?

Niemand hat ihn ausgedacht, er ist gewachsen – und genau das steht bei NIST im Klartext. Die Seite schildert, wie Fachleute anfingen, das Präfix kilo für 1024 zu benutzen, weil 2¹⁰ fast 1000 ist, und wie das schiefging, als plötzlich alle Computer kauften: „The result is that today ‚everybody‘ does not ‚know‘ what a megabyte is.“ Und weiter: „When discussing computer memory, most manufacturers use megabyte to mean 2²⁰ = 1 048 576 bytes, but the manufacturers of computer storage devices usually use the term to mean 1 000 000 bytes.“ Eine dritte Bedeutung gab es auch: Die vertraute Diskette mit der Aufschrift 1,44 MB rechnete mit 1 024 000 Bytes. NIST schließt daraus nüchtern: „The confusion is real.“

?Und was sind dann MiB und GiB?

Die Lösung, die seit 1998 existiert und die kaum jemand benutzt. Nach der NIST-Darstellung hat die Internationale Elektrotechnische Kommission im Dezember 1998 Namen und Symbole für binäre Vielfache als Norm verabschiedet: kibi (Ki) für 2¹⁰, mebi (Mi) für 2²⁰, gibi (Gi) für 2³⁰, tebi (Ti) für 2⁴⁰. Seither ist MB eindeutig eine Million Bytes und MiB eindeutig 1 048 576 Bytes. Wichtig für die Einordnung: Diese Präfixe gehören laut derselben Seite ausdrücklich nicht zum Internationalen Einheitensystem, sie sind nur daraus abgeleitet.

?Warum sind 100 Mbit/s keine 100 MB/s?

Weil bit und Byte zwei Einheiten sind und ein Faktor 8 dazwischen liegt. NIST führt beides in derselben Tabelle: ein Byte ist 1 B = 2³ bit = 8 bit, und ein Kilobit ist 1 kbit = 10³ bit = 1000 bit. Eine Leitung mit 100 Mbit/s liefert also im besten Fall 12,5 MB pro Sekunde – nachgerechnet, nicht geschätzt. Dieselbe Seite hält übrigens fest, dass bei Datenraten kein Zweifel besteht: „all telecommunications engineers“ verwenden Megabit pro Sekunde als 10⁶ bit/s. Bei Leitungen ist dezimal die Regel; die Verwirrung wohnt beim Speicher.

?Kann ich mich wenigstens auf die Angaben der Hersteller-Werkzeuge verlassen?

Nicht ungeprüft, und dafür gibt es einen dokumentierten Beleg. Die Microsoft-Referenz zur Funktion StrFormatByteSizeW, die unter Windows Bytezahlen in lesbare Größen umwandelt, schreibt im Fließtext: „In Windows 10, size is reported in base 10 rather than base 2. For example, 1 KB is 1000 bytes rather than 1024.“ Direkt darunter steht die Beispieltabelle derselben Seite – und die rechnet binär: 1340 Bytes werden als 1.30 KB ausgegeben, was 1340 ÷ 1024 entspricht, während 1340 ÷ 1000 = 1,34 wäre; 2 400 000 000 Bytes werden als 2.23 GB ausgegeben, was 2³⁰ als Teiler voraussetzt, dezimal wären es 2,4. Alle vier Zeilen der Tabelle sind selbst nachgerechnet und alle vier sind binär. Text und Tabelle derselben Seite widersprechen sich also. Wer wissen will, was gemeint ist, teilt selbst.

Belege

Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.

Zuletzt geprüft am . Dokumentation altert – ein Datum daneben ist der einzige ehrliche Umgang damit.

Verwandte Fehler

HWLästigDer Datenträger ist schreibgeschützt

USB-Stick ist schreibgeschützt

Der Stick lässt sich nicht beschreiben oder formatieren? Mal ein Schalter, mal eine Software-Sperre — oft ein Zeichen für sterbenden Speicher.