ビット演算>ビット反転

ビット反転とは、ビットが0ならば1に、ビットが1ならば0にすることである。
C/C++ では前置演算子で 「~」 記号を使用する。

A ~A
0 1
1 0

A が入力で、~A のカラムが演算結果だ。

int や short などの整数型に「~」演算子を適用すると、各ビットが反転する。

short x = 0b0000000100100011;
short z = ~x; // z には x のビット反転 0b111111101101100 が代入される

論理積のところで、変数 x の特定のビットを強制的に0にしたい場合は、0にしたいビットを0、それ以外を1にした値と論理積をとるとよい、と説明した。覚えているだろうか?

例えば、int x; に値が入っていて、下位4ビットを強制的に0にしたい場合は、 x &= 0xfffffff0; と書く。
が、0xfffffff0 はわかりづらいので、x &= ~0xf; と書くのが普通だ。この方が、f の数を数えなくても下位4ビットを強制的に0にするということが明確で分かりやすい。