- ベストアンサー
C言語のビットフィールドで分からないところがありま
union UNION { struct { unsigned int a :(32-8-5); // この部分 unsigned int b :8; unsigned int c :5; }BIT; }; 上記の「この部分」と書いてある行の意味を教えてください よろしくお願いします
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
32bit領域に、後ろのb、(8Bit)、c(5bit)を引いた残りのフィールド(19bit)をaに割り当てている、のだと思います。 0 ~ 18 | 19 ~ 26 | 27 ~ 31 a b c という風に割り当てた形です。 実際には、共用体(UNION)の宣言になっているので、構造体 BIT以外の定義と共用して、使われる例が多いかとと思います。 例えば、 union UNION { int abc; struct { unsigned int a :(32-8-5); // この部分 unsigned int b :8; unsigned int c :5; }BIT; }; と定義されれば、abcは32bitの整数として、参照、代入され、 それを構造体BITのメンバー、a,b,cで参照すれば、abcの0~18は、aで、19~26は、b、27~31は、cで参照が出来る、といういう様な使い方です。 ご参考に。
お礼
なるほど! この様な使い方もあるのですね。 参考になりました。 ありがとうございました。