Byte

Aus besserwiki.de
Byte
Einheit Systemvon Bit abgeleitete Einheit
Einheit vondigitalen Information, Datengröße
ZeichenB oder o (bei 8 Bits)

Das Byte ist eine digitale Informationseinheit, die in der Regel aus acht Bits besteht. Historisch gesehen war das Byte die Anzahl der Bits, die zur Codierung eines einzelnen Textzeichens in einem Computer verwendet wurde, und aus diesem Grund ist es in vielen Computerarchitekturen die kleinste adressierbare Speichereinheit. Um beliebig große Bytes von der üblichen 8-Bit-Definition abzugrenzen, wird in Netzwerkprotokolldokumenten wie The Internet Protocol (RFC 791) ein 8-Bit-Byte als Oktett bezeichnet. Die Bits in einem Oktett werden in der Regel mit einer Nummerierung von 0 bis 7 oder 7 bis 0 gezählt, abhängig von der Bit-Endianness. Das erste Bit ist die Nummer 0, so dass das achte Bit die Nummer 7 ist.

Die Größe des Bytes war in der Vergangenheit von der Hardware abhängig, und es gab keine endgültigen Standards, die die Größe vorschrieben. Es wurden Größen von 1 bis 48 Bit verwendet. Der Sechs-Bit-Zeichencode war eine häufig verwendete Implementierung in frühen Kodierungssystemen, und in den 1960er Jahren waren Computer mit Sechs- und Neun-Bit-Bytes weit verbreitet. Diese Systeme hatten oft Speicherwörter von 12, 18, 24, 30, 36, 48 oder 60 Bit, was 2, 3, 4, 5, 6, 8 oder 10 Sechs-Bit-Bytes entspricht. In dieser Ära wurden Bitgruppierungen im Befehlsstrom oft als Silben oder Brammen bezeichnet, bevor sich der Begriff Byte durchsetzte.

Der moderne De-facto-Standard von acht Bit, wie er in ISO/IEC 2382-1:1993 dokumentiert ist, ist eine bequeme Zweierpotenz, die die binär kodierten Werte 0 bis 255 für ein Byte erlaubt - 2 hoch 8 ist 256. In der internationalen Norm IEC 80000-13 wurde diese allgemeine Bedeutung kodifiziert. Viele Anwendungsarten verwenden Informationen, die in acht oder weniger Bits dargestellt werden können, und die Entwickler von Prozessoren optimieren üblicherweise für diese Verwendung. Die Popularität der großen kommerziellen Computerarchitekturen hat zur allgegenwärtigen Akzeptanz des 8-Bit-Bytes beigetragen. Moderne Architekturen verwenden in der Regel 32- oder 64-Bit-Wörter, die aus vier bzw. acht Bytes bestehen.

Das Einheitssymbol für das Byte wurde von der Internationalen Elektrotechnischen Kommission (IEC) und dem Institute of Electrical and Electronics Engineers (IEEE) mit dem Großbuchstaben B bezeichnet. Auf internationaler Ebene definiert die Einheit Oktett, Symbol o, ausdrücklich eine Folge von acht Bits, wodurch die potenzielle Mehrdeutigkeit des Begriffs "Byte" beseitigt wird.

Das Byte ([baɪt]; wohl gebildet zu „Bit“) ist eine Maßeinheit der Digitaltechnik und der Informatik, welches meist für eine Folge aus 8 Bit steht.

Um ausdrücklich auf eine Anzahl von 8 Bit hinzuweisen, wird auch die Bezeichnung Oktett (in Frankreich octet) verwendet – die früher dafür ebenfalls gängige Bezeichnung Oktade ist hingegen nicht mehr geläufig.

Etymologie und Geschichte

Der Begriff Byte wurde von Werner Buchholz im Juni 1956 während der frühen Entwurfsphase des IBM-Stretch-Computers geprägt, der über Bit-Adressierung und variable Feldlängen (VFL) verfügte, wobei die Bytegröße im Befehl kodiert war. Es handelt sich um eine bewusste Umschreibung von bite, um eine versehentliche Mutation zu bit zu vermeiden.

Ein weiterer Ursprung von Byte für Bitgruppen, die kleiner sind als die Wortgröße eines Computers, insbesondere Gruppen von vier Bits, ist von Louis G. Dooley überliefert, der behauptete, er habe den Begriff geprägt, als er 1956 oder 1957 zusammen mit Jules Schwartz und Dick Beeler am MIT Lincoln Laboratory an einem Luftverteidigungssystem namens SAGE arbeitete, das gemeinsam von Rand, MIT und IBM entwickelt wurde. Später wurde der Begriff tatsächlich in Schwartz' Sprache JOVIAL verwendet, aber der Autor erinnert sich vage daran, dass er von AN/FSQ-31 abgeleitet wurde.

Frühe Computer verwendeten eine Vielzahl von vier Bit langen binär kodierten Dezimaldarstellungen (BCD) und die bei der US-Armee (FIELDATA) und der Marine üblichen sechs Bit langen Codes für druckbare grafische Muster. Diese Darstellungen umfassten alphanumerische Zeichen und spezielle grafische Symbole. Diese Codesätze wurden 1963 auf sieben Bits erweitert und als American Standard Code for Information Interchange (ASCII) als Federal Information Processing Standard bezeichnet, der die inkompatiblen Fernschreibcodes ablöste, die in den 1960er Jahren von verschiedenen Zweigen der US-Regierung und Universitäten verwendet wurden. ASCII umfasste die Unterscheidung von Groß- und Kleinbuchstaben und eine Reihe von Steuerzeichen, um die Übertragung von Schriftsprache sowie von Druckgerätefunktionen wie Seitenvorschub und Zeilenvorschub und die physische oder logische Steuerung des Datenflusses über die Übertragungsmedien zu erleichtern. In den frühen 1960er Jahren, als IBM auch in der ASCII-Standardisierung aktiv war, führte das Unternehmen gleichzeitig in seiner System/360-Produktlinie den 8-Bit Extended Binary Coded Decimal Interchange Code (EBCDIC) ein, eine Erweiterung der in früheren Lochkartenstanzern verwendeten 6-Bit-BCDIC-Darstellungen. Die Bekanntheit des System/360 führte zur allgegenwärtigen Übernahme der Acht-Bit-Speichergröße, während sich die EBCDIC- und ASCII-Kodierungsschemata im Detail unterscheiden.

In den frühen 1960er Jahren führte AT&T die digitale Telefonie auf Fernleitungen ein. Dabei wurde die Acht-Bit-μ-Law-Kodierung verwendet. Diese große Investition versprach eine Senkung der Übertragungskosten für Acht-Bit-Daten.

Mit der Entwicklung von Acht-Bit-Mikroprozessoren in den 1970er Jahren wurde diese Speichergröße populär. Mikroprozessoren wie der Intel 8008, der direkte Vorgänger des 8080 und des 8086, die in frühen Personalcomputern verwendet wurden, konnten auch eine kleine Anzahl von Operationen mit den Vier-Bit-Paaren in einem Byte durchführen, wie z. B. die Anweisung zum Dezimal-Addieren (DAA). Eine Vier-Bit-Menge wird oft als Nibble oder Nybble bezeichnet, das praktischerweise durch eine einzige Hexadezimalziffer dargestellt wird.

Der Begriff Oktett wird verwendet, um eine Größe von acht Bits eindeutig zu spezifizieren. Er wird häufig in Protokolldefinitionen verwendet.

In der Vergangenheit wurde zumindest in Westeuropa auch der Begriff Oktade verwendet, um acht Bits zu bezeichnen; dieser Gebrauch ist jedoch nicht mehr üblich. Der genaue Ursprung des Begriffs ist unklar, aber er findet sich in britischen, niederländischen und deutschen Quellen aus den 1960er und 1970er Jahren sowie in der gesamten Dokumentation von Philips-Großrechnern.

Einheitensymbol

Das Einheitensymbol für das Byte ist in IEC 80000-13, IEEE 1541 und dem Metric Interchange Format als Großbuchstabe B angegeben.

Im International System of Quantities (ISQ) ist B das Symbol für das Bel, eine nach Alexander Graham Bell benannte Einheit des logarithmischen Leistungsverhältnisses, was zu einem Konflikt mit der IEC-Spezifikation führt. Die Gefahr einer Verwechslung ist jedoch gering, da das Bel eine selten verwendete Einheit ist. Es wird hauptsächlich in seinem dekadischen Bruchteil, dem Dezibel (dB), für Signalstärke- und Schalldruckpegelmessungen verwendet, während eine Einheit für ein Zehntel eines Bytes, das Dezibyte, und andere Brüche nur in abgeleiteten Einheiten, wie z. B. Übertragungsraten, verwendet werden.

Der Kleinbuchstabe o für Oktett ist in der IEC 80000-13 als Symbol für Oktett definiert und wird häufig in Sprachen wie Französisch und Rumänisch verwendet und auch mit metrischen Präfixen für Vielfache kombiniert, zum Beispiel ko und Mo.

Multiple-Byte-Einheiten

Multiple-Byte-Einheiten
Dezimal
Wert Metrisch
1000 kB Kilobyte
10002 MB Megabyte
10003 GB Gigabyte
10004 TB Terabyte
10005 PB Petabyte
10006 EB Exabyte
10007 ZB Zettabyte
10008 YB Yottabyte
Binär
Wert IEC Ältere Version
1024 KiB Kibibyte KB Kilobyte
10242 MiB Mebibyte MB Megabyte
10243 GiB Gibibyte GB Gigabyte
10244 TiB Tebibyte TB Terabyte
10245 PiB Pebibyte
10246 EiB Exbibyte
10247 ZiB Zebibyte
10248 YiB Yobibyte
Größenordnungen von Daten

Es gibt mehr als ein System, um größere Einheiten auf der Grundlage des Bytes zu definieren. Einige Systeme basieren auf 10er-Potenzen, andere auf 2er-Potenzen. Die Nomenklatur für diese Systeme war Gegenstand von Verwirrung. Systeme, die auf 10er-Potenzen basieren, verwenden zuverlässig die SI-Standardpräfixe (Kilo, Mega, Giga, ...) und ihre entsprechenden Symbole (k, M, G, ...). Bei Systemen, die auf 2er-Potenzen basieren, können jedoch binäre Präfixe (kibi, mebi, gibi, ...) und die entsprechenden Symbole (Ki, Mi, Gi, ...) verwendet werden, oder es werden die Präfixe K, M und G verwendet, was zu Mehrdeutigkeit führt.

Während der numerische Unterschied zwischen der dezimalen und der binären Interpretation für das Kilobyte relativ gering ist (etwa 2 % kleiner als das Kibibyte), weichen die Systeme zunehmend ab, wenn die Einheiten größer werden (die relative Abweichung wächst um 2,4 % für jeweils drei Größenordnungen). Ein Yottabyte auf der Basis der 10er-Potenz ist zum Beispiel etwa 17 % kleiner als ein Yobibyte auf der Basis der 2er-Potenz.

Vor allem weil die Speicher-Kapazitäten der Hersteller meist nur mit SI-Präfix angegeben sind, kann es gerade in Verbindung mit Microsoft-Systemen zu Verwirrung kommen. Denn Microsoft rechnet für Datengrößen immer mit Zweierpotenzen, gibt diese dann aber mit Hilfe der SI-Präfixe an. So wird also ein 128-GB-Speichermedium als 119,2 GB angezeigt, obwohl es laut IEC 119,2 GiB lauten müsste. Hinzu kommt die Verwirrung der Benutzer, dass laut Microsoft 120 GB (eigentlich 120 GiB) nicht auf ein mit 128 GB beworbenes Speichermedium passen und ein Fehler ausgegeben wird. Vergleich:

  • (128 GB = 128.000.000.000 Byte) < (120 GiB = 128.849.018.880 Byte = 120 × 1024 × 1024 × 1024 Byte)

Für größere Dezimal- und Binärpräfixe wird die Unterscheidung größer, da die nominelle Differenz größer wird. Von einem Präfix zum Nächsten wird das Verhältnis von Binär zu Dezimal um einen Faktor größer. So beträgt sie zwischen KiB und kB 2,4 %, zwischen TiB und TB hingegen bereits 10,0 % (Prozentangaben auf 1 Nachkommastelle gerundet). Eine anschauliche Übersicht über die möglichen Einheitenvorsätze und deren Bedeutungen bietet die Vergleichstabelle.

Einheiten auf der Grundlage von 10er-Potenzen

Die Internationale Elektrotechnische Kommission (IEC) empfiehlt die Definition von Präfixen auf der Grundlage von 10er-Potenzen, wobei 1 Kilobyte (Symbol kB) als 1.000 Bytes definiert ist. Die IEC-Norm definiert acht solcher Vielfachen, bis hin zu 1 Yottabyte (YB), was 10008 Bytes entspricht.

Diese Definition wird am häufigsten für Datenrateneinheiten in Computernetzwerken, interne Busse, Festplatten- und Flash-Medien-Übertragungsgeschwindigkeiten und für die Kapazitäten der meisten Speichermedien, insbesondere Festplatten, Flash-Speicher und DVDs, verwendet. Zu den Betriebssystemen, die diese Definition verwenden, gehören macOS, iOS, Ubuntu und Debian. Sie steht auch im Einklang mit den anderen Verwendungen der SI-Präfixe in der Informatik, z. B. bei CPU-Taktfrequenzen oder Leistungsmessungen.

Einheiten auf Basis von 2er-Potenzen

Ein auf Zweierpotenzen basierendes Einheitensystem, bei dem 1 Kibibyte (KiB) 1.024 (d. h. 210) Bytes entspricht, ist in der internationalen Norm IEC 80000-13 definiert und wird von nationalen und internationalen Normungsgremien (BIPM, IEC, NIST) unterstützt. Die IEC-Norm definiert acht solcher Vielfachen, bis zu 1 Yobibyte (YiB), was 10248 Bytes entspricht.

Ein alternatives System der Nomenklatur für dieselben Einheiten (hier als übliche Konvention bezeichnet), bei dem 1 Kilobyte (KB) 1.024 Byte, 1 Megabyte (MB) 10242 Byte und 1 Gigabyte (GB) 10243 Byte entspricht, wird in einer JEDEC-Norm aus den 1990er Jahren erwähnt. In der JEDEC-Norm werden nur die ersten drei Vielfachen (bis GB) genannt, TB und größer werden nicht erwähnt. Die übliche Konvention wird vom Microsoft Windows-Betriebssystem und von Speicherkapazitäten mit wahlfreiem Zugriff, wie z. B. Hauptspeicher und CPU-Cache-Größe, sowie im Marketing und in der Rechnungsstellung von Telekommunikationsunternehmen wie Vodafone, AT&T, Orange und Telstra verwendet.

Diese Definition wurde von den Betriebssystemen von Apple Inc. vor Mac OS X Snow Leopard und iOS 10 verwendet, bevor sie zu Einheiten auf der Basis von Zehnerpotenzen wechselten.

Parochiale Einheiten

Verschiedene Computerhersteller haben Begriffe für Daten unterschiedlicher Größe geprägt, manchmal sogar innerhalb eines Herstellers mit unterschiedlichen Größen für denselben Begriff. Zu diesen Begriffen gehören Doppelwort, Halbwort, Langwort, Vierfachwort, Slab, Superwort und Silbe. Es gibt auch informelle Bezeichnungen, z. B. halbes Byte und Nybble für 4 Bit, oktales K für 10008.

Geschichte der widersprüchlichen Definitionen

Der prozentuale Unterschied zwischen der dezimalen und der binären Interpretation der Einheitenpräfixe wächst mit zunehmender Speichergröße

Heutige Computerspeicher haben eine binäre Architektur, so dass eine Definition von Speichereinheiten auf der Grundlage von 2er-Potenzen am praktischsten ist. Die Verwendung der metrischen Vorsilbe Kilo für binäre Vielfache entstand aus Bequemlichkeit, da 1.024 ungefähr 1.000 entspricht. Diese Definition war in den ersten Jahrzehnten der Computertechnik sehr beliebt: Produkte wie die Tandon 514-Zoll-DD-Diskette (mit 368 640 Byte Speicherplatz) wurden als "360 KB" beworben, was der Konvention von 1 024 Byte entsprach. Dies war jedoch nicht universell. Die Shugart SA-400 514-Zoll-Diskette fasste unformatiert 109.375 Byte und wurde als "110 KByte" beworben, wobei die 1000-Byte-Konvention verwendet wurde. Auch die 8-Zoll-Diskette DEC RX01 (1975) fasste formatiert 256.256 Byte und wurde als "256k" beworben. Andere Disketten wurden mit einer Mischung aus den beiden Definitionen beworben: 3+12-Zoll-HD-Disketten, die als "1,44 MB" beworben wurden, haben in Wirklichkeit eine Kapazität von 1.440 KiB, was 1,47 MB oder 1,41 MiB entspricht.

1995 versuchte das Interdivisional Committee on Nomenclature and Symbols der International Union of Pure and Applied Chemistry (IUPAC), diese Unklarheit zu beseitigen, indem es eine Reihe von binären Präfixen für die Potenzen von 1024 vorschlug, darunter kibi (kilobinär), mebi (megabinär) und gibi (gigabinär).

Im Dezember 1998 hat die IEC die von der IUPAC vorgeschlagenen Präfixe (kibi, mebi, gibi usw.) übernommen, um die Potenzen von 1024 eindeutig zu bezeichnen, und ist damit auf diese vielfältigen Verwendungen und Definitionen eingegangen. So ist ein Kibibyte (1 KiB) 10241 Bytes = 1024 Bytes, ein Mebibyte (1 MiB) 10242 Bytes = 1.048.576 Bytes usw.

Im Jahr 1999 schlug Donald Knuth vor, das Kibibyte als "großes Kilobyte" (KKB) zu bezeichnen.

Moderne Standarddefinitionen

Die IEC nahm den IUPAC-Vorschlag an und veröffentlichte die Norm im Januar 1999. Die IEC-Präfixe sind nun Teil des Internationalen Systems der Quantitäten. Die IEC legte außerdem fest, dass der Begriff Kilobyte nur für 1.000 Byte verwendet werden sollte.

Rechtsstreitigkeiten über die Definition

Rechtsstreitigkeiten wegen angeblicher Verwirrung der Verbraucher über die binäre und dezimale Definition des Vielfachen eines Bytes haben in der Regel zugunsten der Hersteller geendet, wobei die Gerichte entschieden haben, dass die rechtliche Definition von Gigabyte oder GB 1 GB = 1.000.000.000 (109) Bytes (die dezimale Definition) ist, und nicht die binäre Definition (230). Das Bezirksgericht für den nördlichen Bezirk von Kalifornien stellte fest, dass "der US-Kongress die dezimale Definition von Gigabyte als die 'bevorzugte' für die Zwecke von 'US-Handel und -Handel' angesehen hat [...] Die kalifornische Legislative hat ebenfalls das Dezimalsystem für alle 'Transaktionen in diesem Staat' übernommen."

Frühere Rechtsstreitigkeiten endeten mit einem Vergleich, ohne dass ein Gericht über die Frage entschied, wie zum Beispiel eine Klage gegen den Festplattenhersteller Western Digital. Western Digital legte die Anfechtung bei und fügte den Produkten ausdrückliche Haftungsausschlüsse hinzu, dass die nutzbare Kapazität von der beworbenen Kapazität abweichen kann. Seagate wurde aus ähnlichen Gründen verklagt und hat sich ebenfalls geeinigt.

Praktische Beispiele

Einheit Ungefähres Äquivalent
Byte ein lateinisches Grundzeichen.
Kilobyte Text von "Jabberwocky"
ein typisches Favicon
Megabyte Text von Harry Potter und der Feuerkelch
Gigabyte etwa eine halbe Stunde Video
Audio in CD-Qualität von Mellon Collie und die unendliche Traurigkeit
Terabyte die größte Verbraucherfestplatte im Jahr 2007
1080p 4:3-Video der Zeichentrickserie Avatar: The Last Airbender, alle 61 Episoden
Petabyte 2000 Jahre MP3-kodierte Musik
Exabyte weltweiter monatlicher Internetverkehr im Jahr 2004
Zettabyte weltweiter jährlicher Internetverkehr im Jahr 2016

Häufige Verwendungen

Viele Programmiersprachen definieren den Datentyp Byte.

Die Programmiersprachen C und C++ definieren Byte als eine "adressierbare Einheit des Datenspeichers, die groß genug ist, um jedes Mitglied des grundlegenden Zeichensatzes der Ausführungsumgebung aufzunehmen" (Abschnitt 3.6 des C-Standards). Der C-Standard schreibt vor, dass der integrale Datentyp unsigned char mindestens 256 verschiedene Werte enthalten muss und durch mindestens acht Bits dargestellt wird (Abschnitt 5.2.4.2.1). Verschiedene Implementierungen von C und C++ reservieren 8, 9, 16, 32 oder 36 Bits für die Speicherung eines Bytes. Darüber hinaus schreiben die C- und C++-Standards vor, dass zwischen zwei Bytes keine Lücken entstehen dürfen. Das bedeutet, dass jedes Bit im Speicher Teil eines Bytes ist.

Der primitive Datentyp von Java, das Byte, ist als acht Bit definiert. Es ist ein Datentyp mit Vorzeichen, der Werte von -128 bis 127 enthält.

.NET-Programmiersprachen wie C# definieren Byte als vorzeichenlosen Typ und Sbyte als vorzeichenbehafteten Datentyp, der Werte von 0 bis 255 bzw. -128 bis 127 enthält.

In Datenübertragungssystemen wird das Byte als eine zusammenhängende Folge von Bits in einem seriellen Datenstrom verwendet, die die kleinste unterscheidbare Dateneinheit darstellt. Eine Übertragungseinheit kann zusätzlich Startbits, Stoppbits und Paritätsbits enthalten, so dass ihre Größe von sieben bis zwölf Bits variieren kann, um einen einzelnen 7-Bit-ASCII-Code zu enthalten.

Bedeutungen von Dezimal- und Binärpräfixen für große Anzahlen von Bytes

Vergleichstabelle

Dezimalpräfixe   Unterschied
gerundet
  Binärpräfixe gemäß IEC
Name Symbol Anzahl Bytes Name Symbol Anzahl Bytes
Kilobyte kB 1 000 = 1030 2,4 % Kibibyte KiB 1 024 = 210
Megabyte MB 1 000 000 = 1060 4,9 % Mebibyte MiB 1 048 576 = 220
Gigabyte GB 1 000 000 000 = 1090 7,4 % Gibibyte GiB 1 073 741 824 = 230
Terabyte TB 1 000 000 000 000 = 1012 10,0 % Tebibyte TiB 1 099 511 627 776 = 240
Petabyte PB 1 000 000 000 000 000 = 1015 12,6 % Pebibyte PiB 1 125 899 906 842 624 = 250
Exabyte EB 1 000 000 000 000 000 000 = 1018 15,3 % Exbibyte EiB 1 152 921 504 606 846 976 = 260
Zettabyte ZB 1 000 000 000 000 000 000 000 = 1021 18,1 % Zebibyte ZiB 1 180 591 620 717 411 303 424 = 270
Yottabyte YB 1 000 000 000 000 000 000 000 000 = 1024 20,9 % Yobibyte YiB 1 208 925 819 614 629 174 706 176 = 280