PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wo ist das MSB?



Lin728
06-06-2003, 12:01
Grüssi!

Sagen wir ich habe ein "unsigned char" wo ist dann das MSB?
Bit 0 oder Bit 7?

Danke vielmal

Boron
06-06-2003, 12:09
Das MSB ist "links" bei Little Endian Architekturen, wie z.B. IA32.

Wo ist bei dir Bit 0 bzw. wo ist bei dir Bit 7?

Lin728
06-06-2003, 12:27
Naja, es geht darum, dass ich HW nahe Programmierung machen muss, wo nur dortsteht, für was BIT1 zuständig ist, für was BIT5 etc....

Jetzt muss ich aber herausfinden, wo in meinem Bitfeld bit 1 und wo bit5 (oder ähnlich) ist.

Das hab ich mal nur zum Testen gemacht:



struct bitbyte
{
unsigned a:1;
unsigned b:1;
unsigned c:1;
unsigned d:1;
unsigned e:1;
unsigned f:1;
unsigned g:1;
unsigned h:1;
};

int main()
{
struct bitbyte d;

unsigned char* c;

d.a=1;
d.b=1;
d.c=1;
d.d=1;
d.e=1;
d.f=1;
d.g=1;
d.h=1;

c= &d;
printf("%d\n", *c);


Ich weiß jetzt zwar, dass "h" das MSB ist, aber ich weiß nicht wo "bit1" ist, wie es in dem Tutorial steht....
Mfg

arthur
06-06-2003, 12:56
vorsicht!, ihr mischt hier zwei verschiedene sachen, bits und bytes.
little und big endian gibts nur bei bytes, bei bits ist die reinfolge immer
gleich.
Beispiele.
wenn du bei einer zahl x das y bit überprüfen willst:


(x AND y^2)/y^2 => 0/1

oder ein bit setzten möchtest


x OR y^2

gruss
Arthur

peschmae
06-06-2003, 13:14
heisst das das LE/BE gestürm gibts nur bei Datentypen >1byte?

MfG Peschmä

arthur
06-06-2003, 13:32
ja, wenn du zb ein word nimmst, es besteht aus 2 bytes,
aber die reinfolge hi->low bzw. low->hi ist system(maschinen) abhängig.
als beispiel:


12 34 = 12 hi 34 low = (1*16 +2*1) * 256 + 3*16 + 4*1 = 4660
12 34 = 12 low 34 hi = 1*16 +2*1 + (3*16 + 4*1) * 256 = 13330

gleich gespeichert, aber ganz anderer wert

gruss
Arthur

Lin728
06-06-2003, 17:09
Grüssi!

Hmm, BE und LE gibts auch bei Byte, BE ist ja das Most Significant BIT.
Es ist darum gegangen, welches der Bits das printf als MSB ansieht.

Hat sich aber wie gesagt erledgt, hab einen gedankenfehler gehabt ;-)

Danke vielmals

arthur
06-06-2003, 18:14
Original geschrieben von ceisserer

Hmm, BE und LE gibts auch bei Byte, BE ist ja das Most Significant BIT.
Es ist darum gegangen, welches der Bits das printf als MSB ansieht.

sorry, aber das stimmt nicht,
most significant bit ist IMMER das gleiche (höhste bit) deines bytes.
also bei einer n-bit zahl das n-1 bit.

hier ein byte :)


7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1

^_________^
msb_____lsb


gruss
Arthur

Lin728
06-06-2003, 19:07
Danke nochmal, Mfg

arthur
06-06-2003, 19:37
ich meinte auch nur das hier:

BE und LE gibts auch bei Byte

gruss
Arthur