InfoCenter

Endianness (Byte Reihenfolge)

Mit der Byte-Reihenfolge (in Englisch Byte Order oder Endianness) wird in der Computertechnologie die Speicherorganisation bezeichnet. Immer dann wenn zur Kodierung einer zu speichernden Zahl mehr Bits erforderlich sind als in der kleinsten adressierbarem Einheit vorhanden sind, ist es nötig anzugeben, in welcher Reihenfolge die Daten gespeichert sind.

In der Regel besteht die kleinste adressierbare Einheit aus acht Bits, also einem Byte. Müssen mehr als ein Byte gespeichert werden, so ergeben sich automatisch zwei Möglichkeiten der Speicherung: Entweder speichern wir die Bytes von links nach rechts (das wird Big Endian genannt) oder von rechts nach links (Little Endian).

Big Endian

Big Endian bedeutet, beim großen Ende zu beginnen (daher der Name). Ähnlich wie bei der Darstellung der Uhrzeit mit der Abfolge Stunde - Minute - Sekunde wird hier das Byte des höchstwertigen Bits zuerst, also an der kleinsten Speicheradresse gespeichert.

Little Endian

Die andere Möglichkeit ist, beim kleinen Ende zu beginnen. So ähnlich wie beim Schreiben des Datums mit Tag - Monat - Jahr wird hier mit dem Byte des niederwertigsten Bits begonnen. Dieses Byte wird also an die kleinste Speicheradresse geschrieben.

Relevanz für Unicode-Formate

In Unicode-Textkodierungen wie UTF-16 oder UTF-32 bei denen ein Zeichen nicht nur durch ein Byte sondern durch mehrere Bytes repräsentiert wird, stellt sich automatisch die Frage der Byte-Reihenfolge beziehungsweise Endianness.

In der UTF-32 Kodierung hat ein Zeichen beispielsweise immer genau 4 Bytes. Diese Bytes eines Zeichens lassen sich entsprechend entweder gemäß Big Endian von rechts nach links oder gemäß Little Endian von links nach rechts anordnen. Entsprechend werden die Kodierungen UTF-32 Big Endian (UTF-32 BE) oder UTF-32 Little Endian (UTF-32 LE) genannt.

Um beide Kodierungen auseinanderhalten zu können gibt es die sogenannte Byte Order Mark (BOM). Diese entspricht dem Codepoint U+FEFF und kann optional als erstes Zeichen in eine Datei eingefügt werden. Sie soll von Texteditoren nicht als sichtbares Zeichen dargestellt werden. Für die UTF-32 Kodierung besteht die Byte Order Mark aus der Byte-Sequenz 00 00 FE FF (Big Endian) oder der Byte-Sequenz FF FE 00 00 (Little Endian). Damit können Programme, die eine entsprechend kodierte Dateien lesen, sofort nach den ersten Bytes entscheiden, wie die folgenden Bytes beziehungsweise Zeichen interpretiert werden sollen.

Bei der UTF-16 Kodierung werden die Byte-Sequenzen FE FF (UTF-16 LE) sowie FF FE (UTF-16 BE) verwendet. Bei anderen Kodierungen wie zum Beispiel bei ASCII oder ANSI stellt sich die Frage der Byte-Reihenfolge nicht, da jedes Zeichen immer nur ein Byte hat und daher nicht in verschiedenen Weisen angeordnet werden kann.