Auf Computern gibt es mehrere Möglichkeiten, wie Zahlenwerte, die aus mehreren Bytes bestehen, im Speicher abgelegt sind. Die beiden wichtigsten sind Big Endian und Little Endian.
Nehmen wir im Folgenden als Beispiel den 32-Bit Integer-Wert mit der hexadezimalen Darstellung 0xA1B2C3D4.
Wenn wir die 4 Bytes in der Reihenfolge D4 C3 B2 A1, also das niederwertigste Byte an der niedrigsten Speicheradresse ablegen, spricht man von little endian. Eingeführt wurde diese Byte-Reihenfolge beispielsweise mit dem 6502, der NEC V800 Reihe oder den Intel x86 Prozessoren.
Die Speicherung in der Reihenfolge A1 B2 C3 D4, also das höchstwertige Byte an der niedrigsten Speicheradresse wird als big endian bezeichnet. Verwendet wird diese Byte-Reihenfolge beispielsweise bei der Motorola 68000er Familie, dem PowerPC oder den Prozessoren der z/Series. Auch die gewöhnliche Darstellung von Zahlen ist damit - im Sinne der Leserichtung von links nach rechts - big endian, wenn man so will.
Mit Big-Endian und Little-Endian wird also allgemein die Anordnung von MSB (Most Significant Byte) und LSB (Least Significant Byte) beschrieben:
- MSB -> LSB : Big-Endian
- LSB -> MSB : Little-Endian
Einige ältere Systeme speicherten die Daten in der Reihenfolge C3 D4 A1 B2 oder auch B2 A1 D4 C3, beides wird als middle endian bezeichnet.
Um einen fehlerfreien Datenaustausch im Internet zu ermöglichen, ist bei Netzwerkprotokollen normalerweise immer die Byte-Reihenfolge festgeschrieben als network byte order, die im Falle von TCP/IP im big endian Format definiert ist. Arbeitet das System nicht mit dieser Byte-Reihenfolge, muss dies im Netzwerktreiber entsprechend umgesetzt werden.
Das Problem wird manchmal auch als NUXI Problem bezeichnet: Wenn das Word Unix on einem 2-Byte Wort gespeichert wird, liegt es in einem Little-Endian System als "NUXI" im Speicher, in einem Big-Endian System als "UNIX".
Vorteile:
In der Little-Endian Form können die Bytes für einen Befehl nacheinander abgerufen werden; ob 2, 3 oder mehr Bytes gelesen werden müssen, sie werden in der gleichen Reihenfolge abgerufen: 1, 2, 3, 4. Aufgrund der 1:1 Beziehung zwischen Adresse und Offset sind mathematische Routinen für Berechnungen einfach zu schreiben.
In der Big-Endian Form kann z.B. recht einfach geprüft werden, ob eine Zahl positiv oder negativ ist: nur das erste (oberste) Byte ist zu lesen. Hier steht im höchsten Bit das Vorzeichen. Die restlichen Bytes können übersprungen werden, egal, ob die Zahl mit 1, 2 oder 4 Byte Länge definiert ist. Die Zahlen liegen in der Reihenfolge im Speicher, in der sie auch ausgedruckt werden, so das Umrechenroutinen für Binär zu Dezimal einfach zu schreiben sind.
Verwendung:
Mainframe Systeme (z.B. IBM Mainframe) und Motorola Prozessoren (z.B. im Macintosh) verwenden Big-Endian. Heutige PC-Systeme verwenden in der Regel Little-Endian.
Herkunft:
Die kuriose Bezeichnung lehnt an den satirischen Roman "Gullivers Reisen" von Jonathan Swift an, in dem der Streit darüber, ob ein Ei am spitzen oder am dicken Ende aufzuschlagen sei, die Bewohner von Liliput in zwei verfeindete Lager spaltet - die "Little-Endians" und die "Big-Endians", in der deutschen Übersetzung des Buches "Dickender" und "Spitzender".