Gast
#1482062
Hallo Leute,
ich suche eine Möglichkeit einer 32 Bit großen Zahl ein Bitmuster
zuzuweisen. Das ganze für Microchip C18.
Ich habe es über eine union folgendermaßen versucht.
union _Bits {
unsigned long int alle;
struct _Bits_alle {
unsigned B1 :1 ;
unsigned B2 :1 ;
unsigned B3 :7 ;
unsigned B4 :1 ;
unsigned B5 :6 ;
unsigned B6 :1 ;
};
}Bits;
Wenn ich jetzt Bits.alle auf 0 setze, anschließend z.b. Bits.B1 = 1
setze, steht in Bits.alle wie erwartet folgendes (binär):
00000000000000000000000000000010
Wenn ich jedoch statt dem einen Bit von B1 die 7 Bits von B3 auf 1111111
setze, steht in Bits.alle
00000000000000000111111100000000
und nicht wie ich es erwartet hätte
00000000000000000000000111111100
Es scheint so als würde der Compiler alles in 8 Bit zerlegen. Weil 8-2=6
zu klein ist für 7 Bits macht er erst beim 9ten Bit weiter.
Versuchsweise habe ich die Anzahl der Bits von 7 auf 6 geändert, dann
hat es geklappt. Ich brauche aber 7 Bit.
Ich hoffe ihr versteht was ich meine und könnt mir helfen.
Wie mache ich es also, dass ich genau das bekomme was ich erwarte?
Viele Grüße
Meike