# Byte

Das Byte ([baɪt]) ist eine Maßeinheit der Digitaltechnik und der Informatik, das meist für eine Folge aus 8 Bit steht.
Historisch gesehen war ein Byte die Anzahl der Bits zur Kodierung eines einzelnen Schriftzeichens im jeweiligen Computersystem und daher das kleinste adressierbare Element in vielen Rechnerarchitekturen.
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.

## Abgrenzung

Was genau ein Byte bezeichnet, wird je nach Anwendungsgebiet etwas unterschiedlich definiert. Der Begriff kann stehen für:
* eine Maßeinheit für eine Datenmenge von 8 Bit mit dem Einheitenzeichen „B“, wobei es nicht auf die Ordnung der einzelnen Bits ankommt. Das Einheitenzeichen sollte nicht mit dem zur Einheit Bel gehörenden Einheitenzeichen „B“ verwechselt werden.
* eine geordnete Zusammenstellung (n-Tupel) von 8 Bit, deren formale ISO-konforme Bezeichnung Oktett ist (1 Byte = 8 Bit). Ein Oktett wird manchmal in zwei Hälften (Nibbles) zu je 4 Bit zerlegt, wobei jedes Nibble durch eine hexadezimale Ziffer darstellbar ist. Ein Oktett kann also durch zwei Hexadezimalziffern dargestellt werden.
* die kleinste, meist per Adressbus adressierbare, Datenmenge eines bestimmten technischen Systems. In heutigen Computersystemen sind 8 Bits der Quasi-Standard. In alten Systemen, vor allem aus den 1960er und 1970er Jahren und davor, waren auch andere Größen in Gebrauch, zum Beispiel:
** bei Telex: 1 Zeichen = 5 Bit
** bei Rechnern der Familien PDP (ab 1959): 1 Zeichen = log$_2$(50) Bit = zirka 5,644 Bit (Radix-50-Code). Ergibt gegenüber 6 Bit eine Ersparnis von wenigen Bits pro Zeichenkette, die beispielsweise für Steuerungszwecke genutzt werden können. Allerdings gehen die Byte-Grenzen mitten durch die Bits, was die Analyse von Inhalten erschweren kann.
** bei IBM 1401 (produziert bis 1971): 1 Zeichen = 6 Bit. Der IBM PC (ab 1981) hatte 1 Zeichen = 8 Bit
** bei Nixdorf 820 (bis 1979): 1 Zeichen = 12 Bit
** bei Rechnersystemen der Typen UNIVAC 1100/2200 und OS2200 Series: 1 Zeichen = 9 Bit (ASCII-Code) beziehungsweise 6 Bit (FIELDATA-Code)
** bei Rechnern der Familie PDP-10 (bis 1983): 1 Zeichen = 1…36 Bit, Bytelänge frei wählbar
* einen Datentyp in Programmiersprachen. Die Anzahl an Bits pro Byte kann je nach Programmiersprache und Plattform variieren (meistens 8 Bit).
* ISO-C99 definiert 1 Byte als eine zusammenhängende Folge von mindestens 8 Bit.
Bei den meisten heutigen Rechnern fallen diese Definitionen (kleinste adressierbare Einheit, Datentyp in Programmiersprachen, C-Datentyp) zu einer einzigen zusammen und sind dann von identischer Größe.
Der Begriff „Byte“ wird aufgrund der großen Verbreitung von Systemen, die auf acht Bit (beziehungsweise Zweierpotenzvielfache davon) basieren, für die Bezeichnung einer 8 Bit breiten Größe verwendet, die in formaler Sprache (entsprechend ISO-Normen) aber korrekt Oktett (aus englisch octet) heißt. Als Maßeinheit bei Größenangaben wird in der deutschen Sprache der Begriff „Byte“ (im Sinne von 8 bit) verwendet. Bei der Übertragung kann ein Byte parallel (alle Bits gleichzeitig) oder seriell (alle Bits nacheinander) übertragen werden. Zur Sicherung der Richtigkeit werden oft Prüfbits angefügt. Bei der Übertragung größerer Mengen sind weitere Kommunikationsprotokolle möglich. So werden bei 32-Bit-Rechnern oft 32 Bits (vier Byte) gemeinsam in einem Schritt übertragen, auch wenn nur ein 8-Bit-Tupel übertragen werden muss. Das ermöglicht eine Vereinfachung der zur Berechnung erforderlichen Algorithmen und einen kleineren Befehlssatz des Computers.
Wie bei anderen Maßeinheiten gibt es neben dem ausgeschriebenen Namen der Maßeinheiten jeweils auch ein Einheitenkürzel. Bei Bit und Byte sind dies:
| Kürzel | ausgeschriebener Name |
| bit (selten „b“) | Bit |
| B (selten „byte“) | Byte |
Der ausgeschriebene Name unterliegt grundsätzlich der normalen Deklination. Aufgrund der großen Ähnlichkeit der Kürzel mit den ausgeschriebenen Einheitennamen sowie entsprechender Pluralformen in der englischen Sprache werden jedoch gelegentlich auch die Einheitenkürzel „bit“ und „byte“ mit Plural-s versehen.

## Geschichte des Begriffs

Das Bit ist ein Kofferwort aus den englischen Wörtern binary und digit, heißt also „zweiwertige Ziffer“ – Null oder Eins. Dessen Bestandteile lassen sich auf die lateinischen Wörter digitus (Finger), den bzw. die man seit der Antike zum Zählen verwendet (vgl. Plautus: computare digitis), und lateinisch (genauer neulateinisch) binarius (zweifach), vergleiche lateinisch bis (zweimal), zurückführen.
Das Byte ist zudem ein Kunstwort und wurde vermutlich aus dem englischen bit (deutsch „[das] Bisschen“ oder „Häppchen“) und bite (zu deutsch: „[der] Bissen“ oder „Happen“) gebildet. Verwendet wurde es, um eine Speichermenge oder Datenmenge zu kennzeichnen, die ausreicht, um ein Zeichen darzustellen. Der Begriff wurde im Juni 1956 von Werner Buchholz in einer frühen Designphase des IBM-7030-Stretch-Computers geprägt, wobei die Schreibweise von bite zu byte geändert wurde, um zu vermeiden, dass es sich versehentlich zu bit ändere. Im Original beschrieb es eine wählbare Breite von ein bis sechs Bits (damit konnten $2^{6}=64$ Zustände, z. B. Zeichen, dargestellt werden) und stellte die kleinste direkt adressierbare Speichereinheit eines entsprechenden Computers dar. Im August 1956 wurde die Definition auf ein bis acht Bits aufgeweitet (damit konnten dann $2^{8}=256$ Zeichen dargestellt werden). So konnte man die Buchstaben und gängige Sonderzeichen in Quelltexten von Programmen oder anderen Texten speichern.
In den 1960er Jahren wurde der sich in seiner Verwendung schnell ausbreitende ASCII definiert, welcher sieben Bits zur Kodierung eines Zeichens verwendet (das sind $2^{7}=128$ Zeichen). Später wurden durch Nutzung des meist sowieso vorhandenen achten (höchstwertigen) Bits erweiterte, auf dem ASCII basierende Zeichensätze entwickelt, die auch die häufigsten internationalen Diakritika abbilden können, wie zum Beispiel die Codepage 437. In diesen erweiterten Zeichensätzen entspricht jedes Zeichen exakt einem Byte mit acht Bit, wobei die ersten 128 Zeichen exakt dem ASCII entsprechen.
In den 1960er und 1970er Jahren war in Westeuropa auch die Bezeichnung Oktade geläufig, wenn speziell 8 Bit gemeint waren. Diese Bezeichnung geht möglicherweise auf den niederländischen Hersteller Philips zurück, in dessen Unterlagen zu Mainframe-Computern sich die Bezeichnung Oktade (bzw. englisch oktad[s]) regelmäßig findet.
Seit Anfang der 1970er Jahre gibt es 4-Bit-Mikroprozessoren, deren 4-Bit-Datenwörter (auch Nibbles genannt) mit hexadezimalen Ziffern dargestellt werden können. 8-Bit-Prozessoren wurden schon kurz nach der Erfindung der Programmiersprachen C und Pascal eingeführt, also Anfang der 1970er Jahre, und waren in Heimcomputern bis in die 1980er Jahre im Einsatz (bei eingebetteten Systemen auch heute noch), deren 8-Bit-Datenwörter (respektive Bytes) mit genau zwei hexadezimalen Ziffern dargestellt werden können. Seitdem hat sich die Breite der Datenwörter von Hardware von 4 über 8, 16, 32 bis heute zu 64 und 128 Bit hin immer wieder verdoppelt.
Zur Unterscheidung der ursprünglichen Bedeutung als kleinste adressierbare Informationseinheit und der Bedeutung als 8-Bit-Tupel wird in der Fachliteratur (abhängig vom Fachgebiet) korrekterweise auch der Begriff Oktett für letzteres benutzt, um eine klare Trennung zu erzielen.

## Praktische Verwendung

In der elektronischen Datenverarbeitung bezeichnet man die kleinstmögliche Speichereinheit als Bit. Ein Bit kann zwei mögliche Zustände annehmen, die meist als „Null“ und „Eins“ bezeichnet werden. In vielen Programmiersprachen wird für ein einzelnes Bit der Datentyp „boolean“ (respektive „Boolean“ oder „BOOLEAN“) verwendet. Aus technischen Gründen erfolgt die tatsächliche Abbildung eines Boolean aber meist in Form eines Datenwortes („WORD“).
Acht solcher Bits werden zu einer Einheit – einem Datenpäckchen – zusammengefasst und allgemein Byte genannt. Die offizielle ISO-konforme Bezeichnung lautet dagegen Oktett: 1 Oktett = 1 Byte = 8 Bit. Viele Programmiersprachen unterstützen einen Datentyp mit dem Namen „byte“ (respektive „Byte“ oder „BYTE“), wobei zu beachten ist, dass dieser je nach Definition als ganze Zahl, als Bitmenge, als Element eines Zeichensatzes oder bei typunsicheren Programmiersprachen sogar gleichzeitig für mehrere dieser Datentypen verwendet werden kann, sodass keine Zuweisungskompatibilität mehr gegeben ist.
Das Byte ist die Standardeinheit, um Speicherkapazitäten oder Datenmengen zu bezeichnen. Dazu gehören Dateigrößen, die Kapazität von permanenten Speichermedien (Festplattenlaufwerke, CDs, DVDs, Blu-ray Discs, Disketten, USB-Massenspeichergeräte usw.) und die Kapazität von vielen flüchtigen Speichern (zum Beispiel Arbeitsspeicher). Übertragungsraten (zum Beispiel die maximale Geschwindigkeit eines Internet-Anschlusses) gibt man dagegen üblicherweise auf der Basis von Bits an.

## Präfixe für große Anzahlen von Byte

Zur Darstellung großer Anzahlen von Bytes kann man die Präfixe aus dem SI verwenden, wie „Kilo-“ (k) für 1000 und „Mega-“ (M) für 1000×1000. Für Zweierpotenzen gibt es spezielle Binärpräfixe, wie „Kibi-“ (Ki) für 1024 und „Mebi-“ (Mi) für 1024×1024.
Manchmal werden die Namen oder Kürzel der SI-Präfixe im binären Sinn verwendet (z. B. „Kilo-“ für 1024), was aber normwidrig ist und zu Missverständnissen führen kann.

### SI-Präfixe

Für Zehnerpotenzen verwendet man die Präfixe aus dem Internationalen Einheitensystem (SI):
Dezimalpräfixe gemäß SI :
| Kilobyte | kB | 1 000 B = 10$^3$ B0 |
| Megabyte | MB | 1 000 000 B = 10$^6$ B0 |
| Gigabyte | GB | 1 000 000 000 B = 10$^9$ B0 |
| Terabyte | TB | 1 000 000 000 000 B = 10$^{12}$ B |
| Petabyte | PB | 1 000 000 000 000 000 B = 10$^{15}$ B |
| Exabyte | EB | 1 000 000 000 000 000 000 B = 10$^{18}$ B |
| Zettabyte | ZB | 1 000 000 000 000 000 000 000 B = 10$^{21}$ B |
| Yottabyte | YB | 1 000 000 000 000 000 000 000 000 B = 10$^{24}$ B |
| Ronnabyte | RB | 1 000 000 000 000 000 000 000 000 000 B = 10$^{27}$ B |
| Quettabyte | QB | 1 000 000 000 000 000 000 000 000 000 000 B = 10$^{30}$ B |

### Binärpräfixe

Für Datenspeicher mit binärer Adressierung ergeben sich technisch Speicherkapazitäten basierend auf Zweierpotenzen (2$^n$ Byte). Die Zweierpotenz 2$^{10}$ = 1024 liegt nahe bei 1000, so dass es üblich wurde, das eigentlich dezimale SI-Präfix „Kilo-“ im Zusammenhang mit Speicherkapazitäten zur Bezeichnung von 1024 zu verwenden. Später kamen dann auch „Mega-“ (für 2$^{20}$ = 1024$^2$) und „Giga-“ (für 2$^{30}$ = 1024$^3$) hinzu. Dies führte jedoch zu Mehrdeutigkeiten und wurde zu einer Fehlerquelle. Um dem abzuhelfen, schlug die IEC 1996 neue Einheitenvorsätze vor, die (nur) in der binären Bedeutung verwendet werden sollten. Dabei wird eine den SI-Präfixen ähnlich lautende Vorsilbe ergänzt um die Silbe „bi“, die klarstellt, dass es sich um binäre Vielfache handelt. Beispiele:
* 1 Kibibyte (KiB) = 1024 Byte
* 1 Mebibyte (MiB) = 1024 × 1024 Byte = 1.048.576 Byte.
Das für die SI-Präfixe zuständige Internationale Büro für Maß und Gewicht (BIPM) empfiehlt diese Schreibweise, auch wenn es nicht für Byte zuständig ist, da dies keine SI-Einheit ist. Viele weitere Standardisierungsorganisationen haben sich dieser Empfehlung angeschlossen (siehe Binärpräfix, Abschnitt „Normung“).
Binärpräfixe gemäß IEC :
| Kibibyte | KiB | 2$^{10}$ B00 | = 1 024 B00 | | = 1,024 kB |
| Mebibyte | MiB | 2$^{20}$ B00 | = 1024$^2$ B | = 1 048 576 B0 | ≈ 1,049 MB |
| Gibibyte | GiB | 2$^{30}$ B00 | = 1024$^3$ B | = 1 073 741 824 B0 | ≈ 1,074 GB |
| Tebibyte | TiB | 2$^{40}$ B00 | = 1024$^4$ B | = 1 099 511 627 776 B0 | ≈ 1,100 TB |
| Pebibyte | PiB | 2$^{50}$ B00 | = 1024$^5$ B | = 1 125 899 906 842 624 B0 | ≈ 1,126 PB |
| Exbibyte | EiB | 2$^{60}$ B00 | = 1024$^6$ B | = 1 152 921 504 606 846 976 B0 | ≈ 1,153 EB |
| Zebibyte | ZiB | 2$^{70}$ B00 | = 1024$^7$ B | = 1 180 591 620 717 411 303 424 B0 | ≈ 1,181 ZB |
| Yobibyte | YiB | 2$^{80}$ B00 | = 1024$^8$ B | = 1 208 925 819 614 629 174 706 176 B0 | ≈ 1,209 YB |
| Robibyte $^{1)}$ | RiB | 2$^{90}$ B00 | = 1024$^9$ B | = 1 237 940 039 285 380 274 899 124 224 B0 | ≈ 1,238 RB |
| Quebibyte $^{1)}$ | QiB | 2$^{100}$ B0 | = 1024$^{10}$ B0 | = 1 267 650 600 228 229 401 496 703 205 376 B0 | ≈ 1,268 QB |

### Vergleich

Die Werte der dezimalen Präfixe steigen – ausgehend von Kilo – jeweils um den Faktor 10$^3$ = 1000 und die Werte der binären Präfixe um den Faktor 2$^{10}$ = 1024. Die Diskrepanz wächst also: Während der Größenunterschied zwischen Kibibyte und Kilobyte nur 2,4 % beträgt, ist ein Pebibyte schon 12,6 % mehr als ein Petabyte.
| Präfixe | Präfixe | Binär ÷ Dezimal | Dezimal ÷ Binär |
| Kilo | Kibi | 1,024 (+2,4 %) | 0,9766 (−2,3 %) |
| Mega | Mebi | 1,049 (+4,9 %) | 0,9537 (−4,6 %) |
| Giga | Gibi | 1,074 (+7,4 %) | 0,9313 (−6,9 %) |
| Tera | Tebi | 1,100 (+10,0 %) | 0,9095 (−9,1 %) |
| Peta | Pebi | 1,126 (+12,6 %) | 0,8882 (−11,2 %) |
| Exa | Exbi | 1,153 (+15,3 %) | 0,8674 (−13,3 %) |
| Zetta | Zebi | 1,181 (+18,1 %) | 0,8470 (−15,3 %) |
| Yotta | Yobi | 1,209 (+20,9 %) | 0,8272 (−17,3 %) |
| Ronna | (Robi) | 1,238 (+23,8 %) | 0,8078 (−19,2 %) |
| Quetta | (Quebi) | 1,268 (+26,8 %) | 0,7889 (−21,1 %) |

### Kapazitätsangaben bei Speichermedien

Die Verwendung der Binärpräfixe für Zweierpotenzen und die ausschließliche Verwendung von SI-Präfixen für Zehnerpotenzen hat sich bislang nur teilweise durchgesetzt.
Massenspeichermedien, wie Festplatten, DVD-Rohlinge und USB-Speichersticks, mit vorgeschalteter komplexer Firmware lassen sich in praktisch beliebig fein abgestufter Größe herstellen. Dort hat sich die Herstellung in glatten, gut vermarktbaren Größen durchgesetzt. Die Hersteller verwenden Dezimalpräfixe.
RAM-Hauptspeicher und Cache-Speicher von CPUs, auf die in ihrer ziemlich ursprünglichen Form zugegriffen wird, werden als glatte Werte mit Binärpräfixen angegeben, SI-Präfixe wären hier unpraktisch. Die Binärpräfixe werden aber nicht immer in ihrer normgerechten Form geschrieben, man findet immer noch „MB“ und „GB“ wo „MiB“ und „GiB“ stehen müsste.
Wenn die Binärpräfixe nicht normgerecht geschrieben werden, kann es zu Verwirrung kommen. Dies gilt zum Beispiel in Verbindung mit Microsoft-Systemen, 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. Beim Versuch, eine Datenmenge von laut Microsoft „120 GB“ (eigentlich 120 GiB) auf ein mit 128 GB beworbenes Speichermedium zu übertragen, tritt somit ein Fehler auf:
* 128 GB = 128.000.000.000 Byte sind weniger(!) als
* 120 GiB = 128.849.018.880 Byte = 120 × 1024$^3$ Byte
Ein mit „4,7 GB“ gekennzeichneter DVD-Rohling speichert rund 4,7 Gigabyte (4.700.000.000 Byte), wird aber von mancher Software, zum Beispiel dem Windows-Explorer, mit dem Wert von „4,38 GB“ angezeigt – normgerecht wäre hier „4,38 GiB“. Andererseits speichert ein mit „700 MB“ gekennzeichneter CD-Rohling nicht 700 MB, sondern 700 MiB, also etwa 734 MB (und sollte korrekterweise mit „700 MiB“ ausgezeichnet werden), wobei der Windows-Explorer „700 MB“ anzeigt.
Apples macOS benutzt seit 2009 (Version Mac OS X Snow Leopard 10.6) einheitlich Dezimalpräfixe nur in dezimaler Bedeutung. KDE folgt dem IEC-Standard und lässt dem Anwender die Wahl zwischen binärer und dezimaler Angabe. Für Linux-Distributionen mit anderen Desktopumgebungen, wie zum Beispiel Ubuntu ab Version 11.04, (August 2011) gibt es klare Richtlinien, wie Anwendungen Datenmengen angeben sollen; hier findet man beide Angaben, wobei die Binärpräfixe überwiegen.
Unix-Shells nutzen normalerweise Datenblöcke als Einheit. Optional wird auch eine lesbarere Darstellungsform, human readable bezeichnet, angeboten, normalerweise die binäre Einheit, wobei jedoch abweichend von der IEC-Vorgabe nur die Vorsätze der Maßeinheiten in Großbuchstaben als Einheit angegeben werden, also K für KiB, M für MiB usw. Es gibt jedoch auch oft die Möglichkeit, SI-Einheiten zu wählen, dann in der korrekten, jedoch großgeschriebenen Einheit, also KB, MB usw.
Die in den 1980er und 1990er Jahren verbreitete 3,5-Zoll-Diskette verwendete eine binär-dezimale Mischform: die nominellen „1,44 MB“ bedeuteten 1440 × 1024 Byte = 1440 KiB.