Bit-Reihenfolge
# Bit-Reihenfolge

Die Bit-Reihenfolge beschreibt die Reihenfolge, in der die Bits eines Datenwortes indiziert werden. Also ob

* von links (niedrige Adresse, Bit Nr. 0) nach rechts (hohe Adresse, Bit Nr. x) oder
* von rechts (niedrige Adresse, Bit Nr. 0) nach links (hohe Adresse, Bit Nr. x).

Wichtig ist dies z. B. bei der hardwarenahen Programmierung von Mikroprozessoren und bei der seriellen Datenübertragung (bitweisen Datenübertragung). Bei letzterer kommt es außerdem auf die Reihenfolge an, in der die empfangenen Bits auf der Empfangsseite in das Datenwort gespeichert werden. Wenn nämlich die Reihenfolge beim Empfänger falsch eingestellt ist, wird aus einem übertragenen Datenwort '0110 1001' (dezimal 105, hexadezimal $69_h)$ ein Datenwort '1001 0110' (dezimal 150, hexadezimal $96_h).$

Zusätzlich zur Bit-Reihenfolge kommt es für die korrekte Auswertung noch auf die Bitwertigkeit an. Sie legt fest, ob

* das Bit mit der Nr. 0 das niedrigstwertige und das mit der Nr. x das höchstwertige ist (LSB-0-Bitnummerierung, least significant bit), oder
* das Bit mit der Nr. 0 das höchstwertige und das mit der Nr. x das niedrigstwertige ist (MSB-0-Bitnummerierung, most significant bit).

Die beiden Eigenschaften Bit-Reihenfolge und Bitwertigkeit können in allen 2 x 2 = 4 Kombinationen auftreten.

## Beispiel

In der Beschreibung einer Funktion eines 32-Bit-Prozessors steht, dass das Bit Nummer 5 gesetzt werden soll. Aus dem Kontext oder aus anderen Abschnitten der Beschreibung lässt sich erkennen, dass die Nummer 0 dem niedrigstwertigen Bit zugeordnet ist. Bit Nr. 5 hat also die dezimale Wertigkeit 32.

Bei einem Prozessor, bei dem das höchstwertige Bit Nr. 31 ganz links liegt (entspricht bei den Bytes Big-Endian), würde der resultierende Wert als Binärzahl lauten:

    00000000 00000000 00000000 00100000

und in hexadezimaler Schreibweise:

    $00_h$ $00_h$ $00_h$ $20_h$

Dagegen würde bei einem Prozessor, bei dem das höchstwertige Bit Nr. 31 ganz rechts liegt (entspricht bei den Bytes Little-Endian), der resultierende Wert als Binärzahl lauten:

    00000100 00000000 00000000 00000000

und in hexadezimaler Schreibweise:

    $04_h$ $00_h$ $00_h$ $00_h.$
