code-1839406_640


C言語やC++でbit演算を使うときに最低限これだけは覚えておいた方が良いという基本的な使い方をまとめました。





AND演算子でマスクする


マスクは特定のbitを強制的に0にしたい場合に使用します。

以下に01010101に対して下位4bitをマスクするサンプルコードを示します。
#include 

#define EVENT 0b11110000

int main(void){
    unsigned char sample = 0b01010101;

    sample &=  EVENT;

	return 0;
}



OR演算子でセットする


セットはマスクとは逆の操作で特定のbitを強制的に1にしたい場合にしようします。

以下に01010101に対して上位4bitをセットするサンプルコードを示します。
#include 

#define EVENT 0b11110000

int main(void){
    unsigned char sample = 0b01010101;

    sample |=  EVENT;

	return 0;
}



XOR演算子でbitを反転する


bit操作を行っているとbitを反転したい場面によく遭遇します。

そういうときは、XOR演算子を使いましょう。

以下に01010101の全てのbitを反転するサンプルコードを示します。
#include 

#define EVENT 0b11111111

int main(void){
    unsigned char sample = 0b01010101;

    sample ^=  EVENT;

	return 0;
}



特定のbitの値を取り出す


"N"bit目を取り出したいというときは、シフト演算子を使えば楽に実装することができます。

以下に01010101の4bit目を取り出すサンプルコードを示します。
#include 

int main(void){
    unsigned char sample = 0b01010101;
    int N =4;
    int nBitNum;

    nBitNum = (sample >> N) & 1;
    printf("%d\n", nBitNum);

	return 0;
}



最後に


bit演算子の使い方について簡単にまとめましたが、随時便利な使い方を見つけ次第記事を更新していきます。