Gilt die Endianness auch für die Bitreihenfolge?

Lesezeit: 4 Minuten

Ich habe hier auf SO keine bestimmte Frage gefunden. Wenn dies ein Duplikat ist, weisen Sie mich bitte darauf hin, und ich werde sie löschen.

Hat Endianness wirklich etwas damit zu tun? bisschen bestellen?

Dies scheint zu implizieren, dass die Antwort NEIN ist, während andere Quellen (ich kann im Moment keine finden, aber sicherlich habe ich vor einiger Zeit einige Artikel gelesen) implizieren, dass Endianness die Reihenfolge von ist Bytes und Bits.

Genauer gesagt: Ist in einer Big-Endian-Architektur, wo MSB in jedem Byte an erster Stelle steht, auch MSb an erster Stelle? Umgekehrt ist auf Little-Endian-Systemen, wo LSB an erster Stelle steht, LSb auch an erster Stelle?

LETZTE EDIT: Ich habe gefunden Dies was sagt “Die Bit-Reihenfolge folgt normalerweise der gleichen Endianness wie die Byte-Reihenfolge für ein bestimmtes Computersystem

  • Ich denke, es wäre angebracht, jetzt eine Lösung zu wählen, da anscheinend mehrere Leute hier gut durchdachte Antworten gegeben haben.

    – Thomas

    25. Juli 2017 um 19:53 Uhr

  • @ user2752635 aber all diese Antworten sind schlecht!

    – Foobarbecue

    19. November 2017 um 14:42 Uhr

Benutzeravatar von H Walters
H Walters

Die anderen Antworten sind nicht ganz korrekt. Ja, der Speicher ist byteadressierbar, daher hört die Endianness dort normalerweise auf. Aber die Adressierbarkeit ist nicht die einzige Möglichkeit, eine gut definierte Endianness zu erzeugen.

In C können Sie Bitfelder definieren. Bitfelder haben bestimmte Layouts; Beispielsweise könnte das erste Bitfeld, wenn es sich um ein Bit handelt, entweder im msb oder im lsb gespeichert werden, und das Umbrechen von Bitfeldern über Bytegrenzen hinweg auf Big-Endian-Weise ist auffallend anders als dies auf Little-Endian-Weise zu tun. Wenn Sie also Bitfelder definieren, haben Sie möglicherweise Bit-Endianness.

Aber wie diese angeordnet sind, hat zumindest in der Regel mehr mit dem Compiler als mit der Architektur zu tun.

Benutzeravatar von Sathish
Sathish

Endianness wird nur auf die Byte-Reihenfolge angewendet. Nicht für Bit-Reihenfolge. Die Bitreihenfolge bleibt gleich.

Wieso den?

Der Speicher ist byteadressierbar. Dies ist nur eine schicke Art zu sagen, dass jede Adresse ein Byte speichert. Sie können also die Reihenfolge der Bytes ändern, nicht die Bits im Speicher.

Endianness ist nur dann sinnvoll, wenn Sie einen großen Wert (z. B. ein Wort) in mehrere kleine aufteilen möchten. Sie müssen sich für einen Befehl entscheiden, um ihn im Gedächtnis zu platzieren.

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, macht es keinen Sinn. Ein Register ist einfach eine 32-Bit-Menge (abhängig von Ihrem Prozessor/Controller) und Endianness gilt nicht dafür.

Die Bit-Reihenfolge folgt normalerweise der gleichen Endianness wie die Byte-Reihenfolge für ein bestimmtes Computersystem – es ist wahr

Für mehr Information Endianness

Nein, einfach weil man Bits nicht einzeln adressieren kann.

  • Wenn auf Hardwareebene (serielle Ports) gearbeitet wird, dann ist Bit Endianness relevant.. und es heißt Bit Endianness..

    – odedsch

    20. August 2014 um 10:12 Uhr

  • Was ist mit Bitfeldern in Strukturen?

    – Mafso

    20. August 2014 um 10:22 Uhr

  • @mafso, Bytes sind immer noch die kleinste adressierbare Einheit, was bedeutet, dass der Compiler Bitverschiebungsoperatoren verwenden muss, um auf Bitfelder in Strukturen zuzugreifen.

    – doron

    20. August 2014 um 10:38 Uhr

  • Fand es. C11 (n1570) 6.7.2.1 S.11 Die Reihenfolge der Zuweisung von Bitfeldern innerhalb einer Einheit (von hoher Ordnung zu niedriger Ordnung oder von niedriger Ordnung zu hoher Ordnung) ist implementierungsdefiniert. Natürlich sind die Fälle, in denen Sie sich kümmern müssen, selten, aber es gibt sie.

    – Mafso

    20. August 2014 um 10:41 Uhr


  • Auch wenn Sie Bits nicht adressieren können, ist es nützlich zu wissen, dass die Bits immer noch in einem bestimmten Muster angeordnet sind (dh ein Bit wird als wichtiger angesehen als die anderen). en.wikipedia.org/wiki/Bit_numbering

    – Thomas

    25. Juli 2017 um 19:56 Uhr

In modernen Computern gilt Endianness nur für die Reihenfolge von Bytes, nicht von Bits.

Little-Endian-CPUs verwenden normalerweise die Bitnummerierung “LSB 0”, aber beide Konventionen der Bitnummerierung können in Big-Endian-Maschinen gesehen werden. Einige Architekturen wie SPARC und Motorola 68000 verwenden die Bitnummerierung “LSB 0”, während S/390, PowerPC und PA-RISC “MSB 0” verwenden.[2]

bitte sehen

http://en.wikipedia.org/wiki/Bit_numbering

http://en.wikipedia.org/wiki/Most_significant_bit

Benutzeravatar von Bogdan Alexandru
Bogdan Alexandru

Wenn ich auf diese Frage zurückblicke, die ich vor einigen Jahren gestellt habe, kann ich heute eine Teilantwort mit einem Beispiel hinzufügen, wo Bit-Endianness existiert und wichtig ist: in Kommunikationsprotokollen. Jede Protokollspezifikation muss definieren, welches Bit zuerst gesendet wird, wenn ein Oktett in einen Bitstrom geschoben wird.

Ravis Benutzeravatar
Ravi

Endianness arbeitet auf Basis von Bytes, nicht Bits. Bits sind nicht adressierbar.

1432470cookie-checkGilt die Endianness auch für die Bitreihenfolge?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy