C ビットフィールド 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(ページの作成:「※このページではC言語にも存在していたという意味で記事タイトルがC ビットフィールドになっていますが、<br /> [[C PlusPlus|C++...」)
 
(ビットフィールド)
3行: 3行:
 
<br />
 
<br />
 
== '''ビットフィールド''' ==
 
== '''ビットフィールド''' ==
ビットフィールドは、変数の型の大きさをバイト単位ではなくビット単位で確保しようとするものですが、構造体の中で定義される変数をビット単位で領域を分け合うことにより利用するべきメモリサイズを節約できる技術になります。真と偽の2値を扱うためのbool型でも1バイトを消費してしまうように型の大きさがバイト単位で確保されるものになっているのですが、ビットフィールドを使うことによって、2値の表現で必要となる1ビットのbool型のような変数のための領域の確保を実現できます。
+
ビットフィールドは、int変数の型の大きさ(4Byte)をバイト単位ではなくビット単位で確保しようとするものですが、構造体の中で定義される変数をビット単位で領域を分け合うことにより利用するべきメモリサイズを節約できる技術になります。真と偽の2値を扱うためのbool型でも1バイトを消費してしまうように型の大きさがバイト単位で確保されるものになっているのですが、ビットフィールドを使うことによって、2値の表現で必要となる1ビットのbool型のような変数のための領域の確保を実現できます。他にもMIDIの要素値やマイコンのように保持可能な値の範囲が0~127や1~128であるような7bitの大きさのint型を作ったりすることも出来ます。特殊な型で、通常の変数と混用することで、桁あふれが発生しやすくなりますので、十分に留意して扱う必要が発生します。
 +
 
 +
 
 +
ビットって何?っていう段階の人の場合は2進数のお勉強からになりますね。ネットで2進数を検索して勉強してみて下さい。数を2進数での表現をしたときの桁数がビットに相当します。8bit=1Byteでして、8bitあれば、十進数におきかえたところの0~255までを表現できます。最初の一桁を符号としてみなす符号付き十進数なら-128~127となります。通常の変数はByte単位で、メモリの利用する大きさが区切られていますが、これをbit単位での利用をしてメモリ利用効率を上げるのが目的のビットフィードですが、変数で扱える値も変化するので、ビット単位で数値計算が出来ないと扱うことはできません。
 +
 
 +
 
 +
具体的には以下のようにして、ビットフィールドを利用した変数を定義できます。

2015年4月15日 (水) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス