Byte-Reihenfolge

Die Byte-Reihenfolge (englisch byte order oder endianness) bezeichnet in der Informatik die Speicherorganisation für einfache Zahlenwerte, in erster Linie die Ablage ganzzahliger Werte (Integer) im Arbeitsspeicher.

Die ersten Rechnerarchitekturen haben die Darstellung mehrstelliger Zahlen aus dem Alltag entsprechend der Konvention des Stellenwertsystems übernommen, zunächst für dezimal, dann auch für binär dargestellte Zahlen. In dieser Konvention beginnt die Notation einer Zahl mit der Ziffer an der höchstwertigen Stelle. Addition, Subtraktion und Multiplikation beginnen aber mit der niedrigstwertigen Ziffer, der Einerstelle.

Solange man innerhalb ähnlicher Rechnerarchitekturen blieb, musste man sich nicht um die Endianness kümmern, sie entsprach ja der gewohnten. Da die genannten drei mathematischen Grundfunktionen jedoch einen Maschinenzyklus früher starten können, wenn man die Bitreihenfolge umkehrt, haben in der Folge einige Hersteller ein entsprechendes Architekturprinzip erstellt. Das heißt: die Einerstelle wird an die Anfangsadresse gelegt, und die 3 genannten Algorithmen schreiten nach rechts in die höheren Stellen und Adressen fort. Diese Abweichung vom Gewohnten machte die Begriffsbildung Endianness erforderlich:

  • Beim big-endian (wörtlich etwa: „großendigen“, siehe auch Abschnitt „Etymologie“) Format wird das höchstwertige Byte zuerst gespeichert, d. h. an der kleinsten Speicheradresse. Allgemein bedeutet der Begriff, dass bei zusammengesetzten Daten die höchstwertige (höchstrangige) Komponente zuerst genannt wird, wie etwa bei der deutschen Schreibweise der Uhrzeit: Stunde:Minute:Sekunde.
  • Beim little-endian (wörtlich etwa: „kleinendigen“) Format wird dagegen das niedrigstwertige Byte an der Anfangsadresse gespeichert, also die niedrigstwertige Komponente zuerst genannt, wie bei der herkömmlichen deutschen Datumsschreibweise: Tag.Monat.Jahr.

Im Sprachgebrauch werden die beiden Varianten in der Computertechnik oft auch nach den Herstellern von Mikroprozessoren benannt, die die jeweilige Variante in mehreren Prozessorfamilien verwenden bzw. verwendet haben: „Motorola-Format“ steht für big-endian, „Intel-Format“ für little-endian.

Werden Daten bitweise seriell übertragen, so ist zusätzlich die Bit-Reihenfolge festzulegen. Auch hier sind unterschiedliche Varianten anzutreffen:

  • Most-Signifikant-Bit-First (MSb), wenn das höchstwertige Bit eines Bytes zuerst übertragen wird, verwendet etwa I²C.
  • Least-Signifikant-Bit-First (LSb), in der das niedrigstwertige Bit eines Bytes zuerst übertragen wird, ist zum Beispiel für RS-232[1] und Ethernet-Frames festgelegt.
  1. MIL-STD-188-100, S. B-8, Abb. 3, 1972. oder Datei:MIL-STD-188-100 char struct for async comms 1972-11-15.svg

From Wikipedia, the free encyclopedia · View on Wikipedia

Developed by razib.in