C++ 2進数の使い方メモ


演算子

①シフト演算[<<](左シフト)

1<<0 //0001 または1
1<<1 //0010 または2
1<<2 //0100 または4
1<<3 //1000 または8

2進数の宣言は基本シフト演算でする。直感的にビット操作ができる。
2進数で右シフトの使い道はあるのか…?

②論理和[ | ]

0001 | 0010 //0011
0101 | 1010 //1111
0011 | 0110 //0111

互いのビットのどちらかが1ならば1を返す。
ビットを立てる時に使う。
変数に対して、代入演算子との併用が可能。

③論理積[&]

0001 & 0010 //0000
0011 & 0110 //0010
0101 & 0111 //0101

互いのビットがどちらも1ならば1を返す。
ビットを下ろすときに使う。
変数に対して、代入演算子との併用が可能。

④排他的論理和[^]

0001 ^ 0010 //0011
0011 ^ 0110 //0101
0101 ^ 0111 //0010

互いのビットが異なるなら1を返す。
一部ビットの反転処理に使う。
変数に対して、代入演算子との併用が可能。

⑤反転[~]

~0001 //1110
~0101 //1010
~0111 //1000

全ビットを反転させる。
ビットを下ろす時に使う。

良くある使い方

①フラグを立てる

fg |= bit

②フラグを下ろす

fg&=~bit

③フラグを反転させる

fg^=bit

※fgはint型変数
 bitは2進数

この記事が気に入ったらサポートをしてみませんか?