Warum ist 1 Byte 8 Bit groß?
Das ist der 1. Teil einer Sammlung von Anekdoten, Mythen und Legenden aus dem IT-Universum. Kuriose Geschichten, Irrtümer und Hintergründe rund um die Computer, von den frühen Anfängen, bis hin zu aktuellen Themen. Willkommen in der Nerd-Enzyklopädie — NE. Alle Teile werden zu gegebener Zeit in Buchform veröffentlicht.
Das Binärsystem
Die Einführung in das Binärsystem dürfte Gegenstand jeder Informatik-Vorlesung sein und schon für viele verzweifelte Gesichter gesorgt haben. Sei es drum: Um einen kleinen Ausflug in das binäre Zahlensystem kommen wir nicht herum, wenn wir die Frage nach dem Byte klären wollen. Und da uns das Binärsystem noch öfter begegnen wird, steht dieses Thema ganz am Anfang.
Von Bissen, Bisschen und Silben
Der Begriff Byte kam bereits 1956 auf und wurde von Werner Buchholz geprägt. Buchholz arbeitete für IBM an dem Supercomputer IBM 7030, Projektname „Stretch“. In einem Konzeptpapier beschrieb er den Einsatz von „characters, or ‚bytes‘ as we have called them“. Buchholz leitete Byte vom englischen „bite“ für „der Bissen“ ab und wählte die Schreibweise mit dem Y, um eine Verwechselung mit dem Bit zu vermeiden. Er definierte Bytes damals als Folge von 2 bis 6 Bits [HNF1 (S'ouvre dans une nouvelle fenêtre)]. Das Bit ist ein Kofferwort aus binary und digit. — zweiwertige Ziffer. 0 und 1. Bit ist aber auch ein englisches Wort und heißt übersetzt „das Bisschen“. Es geht hier also um Bisschen und Bissen. Guten Appetit.
Der begriffliche Vorgänger des Bytes nennt sich übrigens Syllable, kurz Slab. Aber auch die Slabs unterwarfen sich keiner einheitlichen Ordnung. Der Computer der Saturn V Rakete arbeitet z.B. mit 13 Bit großen Syllables.
Aber zurück zu den Bits und Bytes und der Frage, warum 1 Byte genau 8 Bit groß ist.
Lampen an!
Ein Computer versteht genau zwei Zustände: Entweder fließt ein Strom oder es fließt kein Strom. Aus oder An (damit ignorieren wir übrigens komplett die Architektur der sogenannten Quanten-Computer).
Mithilfe dieses Prinzips kann ein Computer Informationen speichern, verarbeiten und wiedergeben. Es handelt sich um die kleinste Informationseinheit: 1 Bit. Stellen wir uns einfach vor, dass es sich hierbei um kleine Lämpchen handelt, die entweder an oder aus sind und diesen Zustand beschreiben wir mit 0 für aus und 1 für an. Hier sind 8 Lämpchen nebeneinander:
0000 0000
So sieht es aus, wenn das kleine Lämpchen ganz rechts an ist:
0000 0001
Und daraus kann man nun einen Zahlenwert ablesen, indem man Potenzen bildet — und das ist ein Stück faszinierende Mathematik. Da es genau zwei Zustände gibt (aus oder an), ist die Basis der Potenz 2. Die Position des aktivierten Lämpchens dient als Exponent. Gezählt wird von rechts nach links und wir fangen bei 0 an — 0 ist ja auch ein Wert, wenngleich kein großer.
Damit lautet die Rechnung 20 und das ist 1! Die 1 ganz rechts steht für den Wert 1. Ok, das war noch einfach. Was ist mit der 2?
0000 0010
Nun ist das Lämpchen an der 1. Position an. 21. Oder: 2. Das mit den Einsen und Nulle ist eigentlich gar nicht so schwer, oder? Manchmal frage ich mich, warum wir uns überhaupt mit dem Dezimalsystem abmühen.
Jetzt bist du dran. Welchen Wert sehen wir hier?
0000 0011
Korrekt: 3. Warum? Man summiert die Werte der einzelnen Positionen:
2¹ + 2⁰ = 2 + 1 = 3
Bravo. Du hast das binäre System verstanden. Je mehr Lämpchen leuchten, desto größere Zahlen können wir abbilden. Die kleinen Lämpchen im Computer geben natürlich kein sichtbares Licht ab, dafür aber Wärme. Jetzt weißt du, warum dein Handy manchmal so heiß wird.
Mit 8 Bit lassen sich z.B. Werte bis zu 2⁸ — 1 verarbeiten. Warum -1? Da man die Positionen von 0 anfängt zu zählen, ist die größte Position 7. Das ist also der größte Exponent. Sind also alle Bits aktiviert (auf 1 gesetzt), berechnet man den Wert folgendermaßen:
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
Und für die 255 gibt es eine kleine Abkürzung: Das ist nämlich nichts anderes als 2⁸ — 1.
Den höchsten Wert darf man allerdings nicht mit der Anzahl möglicher Werte verwechseln. Die 0 ist auch Teil der kleinen Familie. Damit gibt es 256 unterschiedliche Werte.
Nach dieser rührenden Familienzusammenführung gebe ich mit der folgenden Frage zurück ins Hauptstadtstudio: Warum hat 1 Byte denn nun ausgerechnet 8 Bit?
Zeichentabellen
Wir können mit den Bits zwar beliebige Zahlen abbilden, aber wie sieht es mit Buchstaben aus? Die Lösung ist so fantastisch simpel: Wir legen eine Tabelle an, eine Zeichentabelle, auch Codetabelle genannt. Jeder Buchstabe wird durch eine Zahl repräsentiert:
1 A
2 B
3 C
…
Die minimale Größe der Tabelle ist zunächst naheliegend: Wir brauchen mindestens 26 Einträge. Um ein einfaches Alphabet abbilden zu können, muss der Speicher also mindestens 5 Bit groß sein:
2⁵ = 32 Einträge
(Warum nicht 2⁵ — 1 = 31 Einträge? Weil die 0 in einer Code-Tabelle theoretisch auch als Verweis dienen kann, denk an die Familie!)
5 Bit entspricht der Größe der ersten Codetabelle mit dem Namen Baudot-Code bzw. Baudot-Murray-Code. Auf der 0. Position befand sich tatsächlich nichts. Die Position 1 (00001) verweist auf Buchstaben E — weil das der häufigste Buchstabe ist. A wird mit der 3 codiert (00011) und so weiter.
Das erklärt aber immer noch nicht warum 1 Byte genau 8 Bit groß ist. Also weiter in der Geschichte:
Der Baudot-Murray-Code hatte für die elektronische Datenverarbeitung noch keine große Bedeutung. Man konnte nicht zwischen Groß- und Kleinschreibung unterscheiden, die Zahlen 0 bis 9 waren nicht darstellbar und was ist mit den ganzen Satzzeichen? Man brauchte eigentlich eine Tabelle mit mindestens 26 + 26 + 10, also 62 Einträgen.
Das Militär entwickelte 1956 im Rahmen des FIELDATA-Projekts eine Zeichentabelle mit 6 Bit, also 64 Einträgen, die auch als Basis für den UNIVAC 1100 diente [WIKI9 (S'ouvre dans une nouvelle fenêtre)]. Diese Tabelle ermöglichte zwar keine Kleinschreibung, dafür aber Satzzeichen, Ziffern und Steuerzeichen. Wozu Steuerzeichen? Da eine Zeichentabelle als Grundlage zur Darstellung auf den Monitor dient, muss sie auch Anweisungen wie z.B. Leerzeichen, Entfernen und so weiter enthalten.
Für den wirklich praktischen Gebrauch kamen also nur 7 Bit infrage. Und genau das ist auch die Länge der berühmt-berüchtigten ASCII-Codetabelle von 1963, die uns noch eine ganze Weile begleiteten wird. Um nicht zu sagen: ASCI wird dir auch in 2023 noch begegnen.
Aus den 7 Bits für ein sinnvollen Zeichensatz wurden recht schnell 8 Bit und zwar aus vielen Gründen: Die 8 ist ein vielfaches von 2. Und das ist in einem binären System viel schöner als die 7. Außerdem konnte man das zusätzliche Bit für andere Funktionen nutzen, wie zB. zur Fehlerkontrolle (“Parity-Bit”) oder um den Umfang der Tabelle zu erhöhen. Und dann kam auch noch IBM um die Ecke und brachte 1981 den allerersten und extrem erfolgreichen Personal Computer (PC) auf den Markt. IBM stattete diesen mit einer 8 Bit-Zeichentabelle aus. Der Name: Code Page 437. In den folgenden Jahren hat sich so die Größe von 8 Bit für 1 Byte als Quasi-Standard etabliert.
Tatsächlich konnte ein Byte aber alles sein: Angefangen bei einem 1 Bit bis zu dem, was Mitte des 20. Jahrhunderts als Speicher so verfügbar war: 6 Bit, 9 Bit, 10 Bit. Beim Nixdorf 820 betrug die Größe eines Bytes 12 Bit. Es gibt Systeme, bei denen die Byte-Größe sogar frei wählbar war und immer noch ist. Der PDP-10 erlaubte eine wählbare Größe zwischen 1 und 36 Bit [WIKI10 (S'ouvre dans une nouvelle fenêtre)].
Die große Enttäuschung
Die traurige Wahrheit lautet also: Es gab sehr lange gar keine einheitliche Definition für die Größe von 1 Byte. Anfang der 1990er Jahre, als Computer begannen die privaten Haushalte zu erobern, rang man sich dann doch noch zu einem offiziellen Standard durch: In der ISO/IEC 2382–1:1993 wurde die Byte-Größe mit 8 Bit definiert.
Allerdings halten sich auch heute nicht alle ans diesen Standard. Viele Programmiersprachen erlauben die Anzahl von Bits individuell festzulegen. Um das Byte mit seiner unsteten Beziehung zu den Bits zu unterscheiden, wurde mit dem Standard IEC 60027–2 in 1999 die Bezeichnung Oktet eingeführt. Ein Oktet entspricht immer 8 Bits.
Wenn du also auf Nummer Sicher gehen willst, solltest du dich nicht darauf verlassen, dass 1 Byte genau 8 Bit enthält.