スポンサードリンク
HOME > C言語 > ビットフィールドについて

C言語 - ビットフィールドについて

今回は、ビットフィールドについて説明していきます。

/* ビットフィールドを宣言 */
struct bit{

   unsigned int b1 : 1;
   unsigned int b2 : 2;
   unsigned int b3 : 3;
   unsigned int b4 : 4;
   unsigned int b5 : 5;
};

普通バイト単位でしか変数を使えませんが、

これをビット単位で処理可能にする機能がビットフィールドです。

キーワードは、構造体と同じく struct を使います。

記述法は、変数名の後に、コロンで区切って確保するビット数を指定します。

確保される領域は、データ型の大きさによって変わります。

また、プログラム内での使い方は、構造体と同じです。



今度は、変数名が無名になっている場合です。

/* ビットフィールドを宣言 */
struct bit{
   unsigned int b1  : 1;
   unsigned int b2  : 2;
   
unsigned int   : 0;
   unsigned int b4  : 4;
   unsigned int b5  : 5;
   
unsigned int   : 1;
   unsigned int b7  : 7;
};

 変数名が無名で、ビット幅が0となっている場合、

ここで、一旦、メモリ確保を区切ります。と言う意味になります。

内部処理的な問題なので、あまり気にしなくても問題ありません。

 次に変数名が無名で、ビット幅が0以外 となっている場合ですが、

これはそのままの意味で、指定されたビット数は確保しますが、

アクセス不能です。主に、プログラムの元となる仕様によって、

ビットの並びを揃えたい場合などに用いられます。



また、ビットフィールドは構造体機能の一部なので、

構造体の中には、普通の変数とビットフィールドを混ぜて宣言してもOKです。



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved