I definiert die folgende Struktur:Wie kann ich alle möglichen Werte von n Bits in der Basis 2 mit n Bits in C darstellen?
typedef struct
{
int unused :8;
int group :2;
int opcode :4;
int source_mode :2;
int dest_mode :2;
int are :2;
}first_word;
Ich möchte jedes Feld der Lage sein, alle möglichen Werte zu halten, die die Bits dargestellt werden kann es in der Struktur erhalten, in der Basis 2.
zum Beispiel:
Die möglichen Werte eines Feldes 2 Bits enthält, wäre:
00 /*0 in base 2*/
01 /*1 in base 2*/
10 /*2 in base 2*/
11 /* 3 in base 2 */
Da in 10 dezimal rep unter Verwendung von 4 Bits in der Basis übel genommen 2, ich kann das nicht tun:
int main()
{
first_word fw;
fw.group = 10;
return 0;
}
denn sonst würde ich die folgende Fehlermeldung erhalten:
main.c: In function ‘main’:
main.c:21:17: warning: overflow in implicit constant conversion [-Woverflow]
fw.group = 10;
^~
Ebenso mag ich die Opcode Lage sein, alle zu halten die möglichen Werte mit 4 Bits und so weiter.
Wie kann ich das erreichen?
'int gruppe: 4;' ...... Nicht klar für mich ... – LPs
Ich möchte Gruppe nur 2 Bits enthalten, also habe ich Bitfelder verwendet @LPs – Float
Sie können beginnen, indem Sie die Felder unsigned, Denn das ist es, wonach du ohnehin zu sein meinst. – StoryTeller