ビット演算とは — AND/OR/XOR/NOT/SHIFTの基礎と活用
ビット演算はコンピューターが2進数レベルで行う演算で、フラグ管理・マスク処理・ハッシュ計算など低レイヤーな処理で多用されます。AND/OR/XOR/NOT/SHIFTの意味と使い所を理解することで、より効率的なコードが書けます。
AND(&)とOR(|)の違い
AND演算は両方のビットが1のときだけ1になります。特定のビットを取り出す「マスク処理」に使います(例: n & 0xFF で下位8ビットを取得)。OR演算はどちらかが1なら1になり、フラグを立てる操作に使います(例: flags | OPTION_FLAG)。
XOR(^)の特徴と活用
XORは2つのビットが異なるとき1になります。同じ値でXORすると0に戻る性質(a ^ b ^ b = a)があり、スワップ・暗号化・チェックサム・差分検出に活用されます。また2つの値が等しいかを判定するのにも使えます。
NOT(~)とビットシフト
NOT演算は全ビットを反転します。32ビット整数で ~0 = -1(すべてのビットが1)になります。LEFT SHIFT(<<)は指定ビット数だけ左にずらし、2のべき乗の掛け算と等価です。RIGHT SHIFT(>>)は右にずらし、2のべき乗の割り算になります。
ビット演算の実用例
パーミッションフラグ管理(UNIX chmod)、ネットワークのサブネットマスク計算、ゲームの衝突検出最適化、ハッシュ関数の実装、カラー値のRGB分離(color >> 16 & 0xFF でRed成分取得)など、実用的な場面が多くあります。