おとついの晩ご飯

忘れやすいので忘れたくないことを書いています。

【C++】マスクビットについて

問題

マスクビットとか知らん。


解決

たくさんのフラグ情報をひとつにまとめて使えるビットフラグで、特定のフラグが立っているかの確認ができる。
以下、使い方。

const int FLAG_A = 0x00000001; // 0bit (0000 0001)
const int FLAG_B = 0x00000002; // 1bit (0000 0010)
const int FLAG_C = 0x00000004; // 2bit (0000 0100)
const int FLAG_D = 0x00000128; // 7bit (1000 0000)

int flagAll = 0;

if(true)
{
    // 0bitが1となりフラグが立つ
    // 0000 0001
    flagAll |= FLAG_A;
}

if(true)
{
    // 1bitが1となりフラグが立つ
    // 0000 0011
    flagAll |= FLAG_B;
}

if(true)
{
    // 2bitが1となりフラグが立つ
    // 0000 0111
    flagAll |= FLAG_C;
}

if(true)
{
    // 7bitが1となりフラグが立つ
    // 1000 0111
    flagAll |= FLAG_D;
}


// ※※※※※※※※※※※※※※※※※※※
// 7bit目が立っているか確認
if((flagAll & FLAG_C) == FLAG_C)
{
    // フラグが立っているときの処理
}

という風にマスクビットを使うことで、特定のフラグ(マスクビットで表した全て)が立っているかを簡単に確認できる。


ビットというだけで苦手意識があったけど、これなら自分でも使える。

参考サイト

qiita.com