www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Little- und Big-Endian


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie der Betreff schon sagt, frage ich mich, wie die Unterschiede bei 
Little- und Big-Endian sind. Besonders die Darstellung auf einem 16-Bit 
Controller würde mich interessieren.

Bsp.: Variable vom Typ unsigned long x = 0xA1B2C3D4

Little Endian:
Wert    :  A1 B2 C3 D4
Adresse :   3  2  1  0 
Big Endian:
Wert    : D4 C3 B2 A4
Adresse :  3  2  1  0

Bei einem 16-Bit System werden nun immer 2 Byte zusammen gespeichert, so 
dass für obiges Bespiel 2 Speicherplätze im Speicher belegt werden.

Frage: Werden bei Big-Endian nur die Bytes "vertauscht" oder werden auch 
die Bits komplett gedreht im Verleich zu Little-Endian:
Little Endian: 01110111 10001000
Big Endian   : 10001000 01110111 ??
oder
Big Endian   : 00010001 11101110 ???
Hat das ganze einen Einfluss auf Schiebeoperationen?

der Gast.

Autor: Null (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein hat es nicht. Ein Schieberechts ist immer div 2. Ob 8 oder 16 bit

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
> Hallo,
>
> Frage: Werden bei Big-Endian nur die Bytes "vertauscht" oder werden auch
> die Bits komplett gedreht im Verleich zu Little-Endian:

Es werden nur die Bytes im Speicher vertauscht.

> Hat das ganze einen Einfluss auf Schiebeoperationen?

Nein.
Schiebeoperationen werden in der CPU ausgeführt.
Dort merkst du nichts ob das jetzt ein Big Endian
oder ein Little Endian System ist. Big Endian
oder Little Endian ist nur dann interesasnt wenn
* man direkt im Speicher nachsieht
* eine Übertragung zu einem anderen System macht.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Werden bei Big-Endian nur die Bytes "vertauscht" oder werden
> auch die Bits komplett gedreht im Verleich zu Little-Endian:

Es ist tatsächlich etwas inkonsequent und auch schon mal problematisch, 
die Bytes von links nach rechts und die Bits von rechts nach links zu 
numerieren. Diverse Architekturen, die zumindest ursprünglich big endian 
waren, numerieren daher auch die Bits von links nach rechts (z.B. IBM, 
also auch PowerPC). Dann passt es wieder. Nur die Mathematik nimmt etwas 
Schaden, weil bei der Zahl (1 = 2 hoch 0) im Register eben nicht Bit 0, 
sondern entweder Bit 31 oder Bit 63 gesetzt ist, je nachdem ob 32bit- 
oder 64bit Implementierung.

Ein anderes abschreckendes Beispiel ist die 68000-Familie, 
bekanntermassen big endian. Als mit der 020 die Bitfeldbefehle kamen, 
stellte Motorola fest, dass mit der ursprünglichen Bitnumerierung nicht 
funktioniert. Und daher numerierten forthin die Einzelbitbefehle 
weiterhin von rechts nach links, die Bitfeldbefehle von links nach 
rechts.

Und Spassvögel von DEC hatten früher Maschinen verbrochen, in denen die 
Bytes einer Integer in die eine Richtung liefen, die Worte einer 
Fliesskommazahl in die andere.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK,
danke für die Antworten. Da bin ich wieder ein klein wenig schlauer.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.