ビット演算を使うと単に数値を比較するよりも処理が早くなります。2つの数値を2進数ビットで表した後に同じ桁を論理演算し、判定したい数値と出力が合っているか判別させたい時に使用します。
例えば、
int flag1 = 1; //2進数:0001 int flag2 = 2; //2進数:0010 int flag4 = 4; //2進数:0100
と、判別するためのフラグを設定します。
& は2つの数値の同じ桁の値を比較し、どちらも1の場合のみ1、どちらかが0の場合は0を出力します。例えば
int num = 5; //2進数:0101 int answer = num & flag1;
numの5、flag1の1の2進数を並べると、
1:0001
5:0101
となります。
一桁目のみどちらも1なので、num & flag1は0001->10進数で1となります。
| は同じように2つの数値の同じ桁の値を比較し、どちらかが1の場合に1を、どちらもが0の場合は0を出力します。
int num = 7; //2進数:0111 int answer = num | flag4;
先程と同じように2進数でならべると、 7:0111 4:0100 となります。 1、2、3桁目はどちらかに1があるので1を出力し、4桁目には1が無いので0を出力します。よって0111->10進数で7を出力します。