Little- und Big-Endian

Gast #563891
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:
1
Wert    :  A1 B2 C3 D4
2
Adresse :   3  2  1  0
Big Endian:
1
Wert    : D4 C3 B2 A4
2
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:
1
Little Endian: 01110111 10001000
2
Big Endian   : 10001000 01110111 ??
3
oder
4
Big Endian   : 00010001 11101110 ???
Hat das ganze einen Einfluss auf Schiebeoperationen?

der Gast.
#563900
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.
Gast #563904
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.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.