Ich habe keine spezifische Frage hier auf SO gefunden, wenn das ein Duplikat ist, weisen Sie es bitte auf mich hin und ich werde das löschen.
Also wirklich, hat Endianness etwas mit bit Auftrag zu tun?
Dies scheint zu implizieren, dass die Antwort NEIN ist, während andere Quellen (ich finde keinen gerade jetzt, aber sicherlich habe ich vor einiger Zeit einige Artikel gelesen) implizieren, dass Endian ist die Reihenfolge der Bytes und Bits .
Um genauer zu sein: In einer Big-Endian-Architektur, in der MSB das erste Byte innerhalb eines Bytes ist, ist MS auch das erste? Convertly, auf Little-Endian-Systemen, wo LSB zuerst ist, ist LSB auch zuerst?
LETZTE BEARBEITUNG: Ich fand dies , das sagt " Bit-Reihenfolge folgt normalerweise der gleichen Endianness wie die Byte-Reihenfolge für ein bestimmtes Computersystem "
Die anderen Antworten sind nicht vollständig korrekt. Ja, Speicher ist byteadressierbar, daher endet dort normalerweise die Endianität. Aber Adressierbarkeit ist nicht die einzige Möglichkeit, eine definierte Endlichkeit zu erzeugen.
In C können Sie Bitfelder definieren. Bitfelder haben bestimmte Layouts; beispielsweise könnte das erste Bitfeld, wenn ein Bit in entweder der msb oder der lsb gespeichert werden könnte, und das Umhüllen von Bitfeldern über Bytegrenzen hinweg auf eine Big-Endian-Weise auffallend anders sein, als dies auf eine Little-Endian-Weise zu tun. Wenn Sie also Bitfelder definieren, haben Sie möglicherweise Bit-Endian.
Aber wie diese angeordnet sind, hätte mehr mit dem Compiler zu tun als die Architektur, zumindest in der Regel.
Endiannität wird nur auf die Byte-Reihenfolge angewendet. Nicht für die Bit-Reihenfolge. Die Bit-Reihenfolge bleibt gleich.
Warum?
Speicher ist byteadressierbar. Dies ist nur eine phantastische Art zu sagen, dass jede Adresse ein Byte speichert. So können Sie die Reihenfolge der Bytes ändern, nicht die Bits im Speicher.
Endianness macht nur dann Sinn, wenn Sie einen großen Wert (z. B. ein Wort) in mehrere kleine Werte aufteilen möchten. Sie müssen sich für einen Auftrag entscheiden, um es in den Speicher zu legen.
Endianness ist nur sinnvoll, wenn Sie eine Multibyte-Menge aufteilen und versuchen, die Bytes an aufeinanderfolgenden Speicherorten zu speichern. Aber wenn Sie ein Register aufnehmen, ergibt das keinen Sinn. Ein Register ist einfach eine 32-Bit-Menge (hängt von Ihrem Prozessor / Controller ab) und die Endianität trifft nicht darauf zu.
Die Bit-Reihenfolge folgt normalerweise der gleichen Endianz wie die Byte-Reihenfolge für ein gegebenes Computersystem - Es ist True
Für weitere Informationen Endianness
Little-Endian-CPUs verwenden normalerweise die Bitsummerierung "LSB 0", jedoch können beide Bit-Nummerierungskonventionen in Big-Endian-Maschinen gesehen werden. Einige Architekturen wie SPARC und Motorola 68000 verwenden Bit-Nummerierung "LSB 0", während S / 390, PowerPC und PA-RISC "MSB 0" verwenden. [2]
siehe
Wenn ich auf diese Frage zurückblicke, die ich vor einigen Jahren gestellt habe, kann ich heute eine Teilantwort mit einem Beispiel hinzufügen, in dem Bit-Endianität existiert und wichtig ist: in Kommunikationsprotokollen. Jede Protokollspezifikation muss definieren, welches Bit zuerst gesendet wird, wenn ein Oktett in einen Bitstrom geschoben wird.
Tags und Links c endianness