Bit-Reihenfolge spielt eine Rolle, wenn ein Feld einen Teil eines Bytes verwendet oder Bytes beginnend oder endend (oder beides) in einem Byte aufteilt.
Beispiel: 2 Bytes Daten zuerst 235 (Dezimal) Sekunde 173 (Dezimal), aka Hex EB und AD.
Ich möchte ein Bit-Feld beginnend mit dem vierten Bit durch das 12. Bit. Also, überspringe 3 Bits, mache aus den nächsten 9 Bits eine 9-Bit-Ganzzahl ohne Vorzeichen.
Ich beanspruche gibt es 4 mögliche Ergebnisse:
byteOrder, bitOrder
* bigEndian, bigEndian results in hex 0BA or decimal 186
* littleEndian, littleEndian results in hex 1BD or decimal 445
* littleEndian, bigEndian results in hex 05D or decimal 93
* bigEndian, littleEndian results in hex 1DE or decimal 478
I die ersten 3 diese Daten in 4 gesehen. groß, groß und klein, kleine sind leicht auszuarbeiten.
Hinweis zum Umgang damit.
Wenn die Byte-Reihenfolge Big Endian ist, notieren Sie die Bytes von links nach rechts aufsteigend. Wenn die Byte-Reihenfolge Little Endian ist, notieren Sie die Bytes von rechts nach links.
Bits werden normalerweise von rechts gezählt, also wäre 010 die letzten drei Bits in Ihrem Beispiel. Ich erwähne das, weil ich glaube, dass die meisten Dokumente zur Bitmanipulation die niedrigsten Bits - die Bits, die 1, 2, 4, ... darstellen - als die ersten Bits betrachten. –
Es gibt keine universelle Konvention für die Bit-Reihenfolge in einem Wort. In der Praxis hängt es davon ab, wofür Sie es verwenden. Wenn Sie mit Mehrwortarithmetik arbeiten, ist die natürliche Reihenfolge LSB-first. Für die Berechnung eines CRC für ein TCP/IP-Paket macht MSB-first jedoch mehr Sinn. – comingstorm