Big-Endian und Little-Endian
Was sind Big-Endian und Little-Endian?
Big-Endian und Little-Endian beschreiben die Ordnung, nach der Bytes in einem Computerspeicher abgelegt werden. Bei Big-Endian wird das „große Ende“ (also der signifikanteste Wert in der Sequenz) zuerst abgelegt (also in der niedrigsten Speicheradresse). Bei Little-Endian wird das „kleinste Ende“ (also der am wenigsten signifikante Wert) zuerst gespeichert.
Das Argument für Big-Endian
Ein praktisches Beispiel: Bei einem Big-Endian-Computer würden die zwei für die hexadezimale Zahl 4F52 notwendigen Bytes als 4F52 in den Speicher geschrieben (befindet sich 4F beispielsweise in der Speicheradresse 1000, wird 52 in 1001 gespeichert). In einem Little-Endian-System würde die Zahl als 524F gespeichert (52 in Speicheradresse 1000, 4F in Speicheradresse 1001).
Für Menschen, die Sprachen verwenden, die von links nach rechts gelesen werden, scheint Big-Endian die natürliche Art und Weise zu sein, sich die Speicherung einer Zeichen- oder Zahlenfolge vorzustellen - in der gleichen Reihenfolge, in der man sie zu sehen erwartet. Auf diese Weise betrachten viele Menschen Big-Endian als eine Art Vorwärtsspeicherung, so wie sie lesen.
Das Argument für Little-Endian
Ein Argument für die Little-Endian-Ordnung ist, dass mit steigendem Zahlenwert möglicherweise zusätzliche Ziffern nach links hinzugefügt werden müssen. Eine höhere Nicht-Exponentialzahl hat beispielsweise mehr Ziffern, so dass bei einer Addition von zwei Zahlen oft alle Ziffern einer Big-Endian-Zahl im Speicher verschoben werden müssen. Bei dieser Addition wird alles nach rechts verschoben.
Bei einer im Little-Endian-Verfahren gespeicherten Zahl können die niederwertigsten Bytes bleiben, wo sie sind, und neue Ziffern werden auf der rechten Seite an einer höheren Adresse hinzugefügt. Dies bedeutet, dass einige Computeroperationen einfacher und schneller durchgeführt werden können.
Bit-Reihenfolge
Sowohl in der Big-Endian- als auch in der Little-Endian-Byte-Reihenfolge sind die Bits innerhalb jedes Bytes Big-Endian. Das bedeutet, dass der Bitstrom, der durch eine bestimmte Anzahl gespeicherter Bytes dargestellt wird, nicht versucht, Big- oder Little-Endian zu sein. Unabhängig davon, ob die hexadezimale Zahl 4F zusammen mit anderen Bytes in einem bestimmten Speicheradressbereich zuerst oder zuletzt gespeichert wird, ist die Bit-Reihenfolge innerhalb des Bytes 01001111.
Es ist zwar theoretisch möglich, bei der Bitreihenfolge Big-Endian oder Little-Endian zu wählen. Die meisten Prozessoren (CPUs) und Programme sind jedoch fast immer für eine Big-Endian-Bitreihenfolge ausgelegt. Bei der Datenübertragung ist es jedoch möglich, beide Bitfolgen zu verwenden.
URLs und E-Mail-Adressen werden im Little-Endian-Format gespeichert. Die Big-Endian-Version von www.computerweekly.de würde so aussehen:
de.computerweekly.www
Anwendung von Big-Endian und Little-Endian
Sowohl Big-Endian als auch Little-Endian sind in der digitalen Elektronik weit verbreitet. In der Regel bestimmt die CPU die verwendete Endian-Variante.
Die IBM-370-Mainframes, die meisten RISC-basierten Computer und die Mikroprozessoren von Motorola nutzen den Big-Endian-Ansatz. TCP/IP verwendet ebenfalls Big-Endian (weswegen Big-Endian manchmal auch als Network Order bezeichnet wird).
Intel-Prozessoren und DEC Alphas, ebenso wie einige Programme, die auf diese Systeme aufsetzen, nutzen Little-Endian.
Es gibt auch Endian-Mischformen. Bei VAX-Gleitkommasystemen kommt beispielsweise Mixed-Endian zum Einsatz, das auch als Middle-Endian bezeichnet wird. Die Reihenfolge der Bytes in einem 16-Bit-Wort unterscheidet sich von der Reihenfolge der 16-Bit-Wörter innerhalb eines 32-Bit-Worts. Bi-Endian-Prozessoren können entweder im Little-Endian- oder im Big-Endian-Modus arbeiten und zwischen diesen beiden Modi umschalten.
Compiler für Programmiersprache wie Java oder FORTRAN müssen wissen, auf welche Art der entwickelte Objektcode gespeichert werden soll. Mit Hilfe von Convertern lässt sich die gewählte Speicherart zwischen den beiden Endian-Varianten umschalten.
Die Geschichte von Endian
Im Jahr 1980 wandte der Informatiker Danny Cohen in seinem Artikel On Holy Wars and a Plea for Peace (deutsch: Über Heilige Kriege und ein Plädoyer für den Frieden) die Begriffe Big-Endian und Little-Endian auf die digitale Elektronik an.
Die Bezeichnuge Big-Endian und Little-Endian stammen aus dem Buch Gullivers Reisen von Jonathan Swift. Big-Endian beschreibt eine der politischen Fraktionen, die ihre Eier vom größeren Ende aus schält (der primitive Weg). Sie rebellieren gegen den Lilliputanerkönig, da dieser von seinen Untergebenen (den Little Endians) erwartet, dass sie ihre Eier vom kleineren Ende aus öffnen.
Während viele Großrechner Big-Endian verwenden, nutzen die meisten modernen Computer Little-Endian.
Die Endian-Variante ist zunächst eine willkürliche Entscheidung des Halbleiterherstellers, die sich langfristig auf eine Produktlinie auswirken kann. Wenn die Hersteller ihre Technologie aktualisieren, behalten sie den bestehenden Endian-Typ bei, um die Abwärtskompatibilität zu gewährleisten. So haben beispielsweise die Entwickler des Motorola 68000 und des Intel 8086 (Vorgänger der x86-Familie) ihre Endian-Variante in den 1970er Jahren gewählt und verwenden diese auch heute noch.