Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Allgemeines (OffTopic) » Byte Order und Shiften

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.10.2006, 19:36 Uhr
Pablo
Supertux
(Operator)


Hi

ich beschäftige mich mit dem CAN Protokoll, welches mit Little Endian arbeitet.

Ich hab mich dann ein wenig mit Little und Big Endian beschäftigen, um die Unterschiede besser zu verstehen, doch beim Shifften bin ich mir nicht mehr so sicher.

Angenommen habe ich sowas wie


C++:
int x = 0xdeadbeef;



Auf Big Endian würde x so abgelegt

Code:
n n+1 n+2 n+3 ... n+7 | ... | ... n+30 n+31
de | ad | be | ef



dann werden die Bits nach links um eine Position verschoeben und mit einer führende 0 gefüllt, also im Prinzip int y = x * 2; (wenn x positiv)

Was passiert mit Little Endian? Wie wird das Shiften ausgeführt?


Code:
n n+1 n+2 n+3 ... n+7 | ... | ... n+30 n+31
ef | be | ad | de



Was macht der Prozessor in diesem Fall? 'ef' nach links und das höchste Bit in das geshifte 'be', usw?

Oder hat das Byte Order an sich wirklich nichts mit Shiften zu tun?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.10.2006, 21:03 Uhr
ao

(Operator)



Zitat von Pablo:
Oder hat das Byte Order an sich wirklich nichts mit Shiften zu tun?

Nein, hat sie nicht. Ein << ist in jeder Byte Order eine Multiplikation mit 2.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.10.2006, 01:09 Uhr
Blubber2063



Das gilt im Prinzip für alle Operationen, Little und BigEndian sind Isomporph und ist eigentlich nur die Ablage der Daten und dann das passende rechnen damit, du musst die Formate nur wandeln, wenn du auf einem Protokoll mit anderer Order arbeitest.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.10.2006, 09:27 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Wenn man so sagen kann: Bei Big-Endian ist der Links-Shift << gegenüber Little-Endian ein Rechts-Shift, nur kriegst du das nicht mit, sondern das passiert intern.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.10.2006, 18:24 Uhr
ao

(Operator)



Zitat von FloSoft:
Wenn man so sagen kann: Bei Big-Endian ist der Links-Shift << gegenüber Little-Endian ein Rechts-Shift, nur kriegst du das nicht mit, sondern das passiert intern.

... und damit kann es dir egal sein. 0x00000001 << 1 ergibt 0x00000002, egal ob Intel- oder Motorola-Byteorder.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.10.2006, 21:40 Uhr
Pablo
Supertux
(Operator)


ok, danke für die Antworten
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Allgemeines (OffTopic) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: