ビット演算: AND、OR、XOR、NOT
ビット単位の AND、OR、XOR、NOT 演算を真理値表と実例で習得。フラグ、マスク、パーミッション、ビット操作での応用を学びます。
Binary Operands → Binary ResultArithmetic
詳細な説明
ビット演算は2進数の個々のビットに対して行われます。低レベルプログラミング、暗号化、グラフィックス、パフォーマンス最適化の基盤です。
4つの基本ビット演算:
AND (&) --- 両方のビットが 1 でなければならない:
1010 & 1100 = 1000
用途: 特定のビットのマスキング。バイトの下位4ビットを抽出するには 0x0F と AND を取ります。
OR (|) --- 少なくとも一方のビットが 1:
1010 | 1100 = 1110
用途: フラグの設定。ビット3を有効にするには 0x08 と OR を取ります。
XOR (^) --- 正確に一方のビットのみが 1:
1010 ^ 1100 = 0110
用途: ビットのトグル、簡易暗号化、一時変数なしの値の交換。
NOT (~) --- すべてのビットを反転:
~1010 = 0101
用途: 逆マスクの作成、2の補数の否定。
実用的な応用:
- 機能フラグ: OR でパーミッションを組み合わせる:
READ | WRITE = 0b110。AND でチェック:flags & READ !== 0。 - IP サブネット化: IP アドレスとサブネットマスクを AND してネットワークアドレスを取得。
- 色の操作:
#4169E1からグリーンチャンネルを抽出:(0x4169E1 >> 8) & 0xFF = 0x69 = 105。 - ハッシュ関数: XOR はビットを均等に分散するため、ハッシュアルゴリズムで広く使われます。
- 暗号: XOR はストリーム暗号とワンタイムパッドの基盤:
plaintext ^ key = ciphertext、ciphertext ^ key = plaintext。
よく使うビットテクニック:
- 偶数かチェック:
n & 1 === 0 - 2のべき乗かチェック:
n & (n - 1) === 0 - 最下位のセットビットをクリア:
n & (n - 1) - 最下位のセットビットを分離:
n & (-n)
ビット演算を習得すれば、システムプログラミング、競技プログラミング、ハードウェアがデータをどのように処理するかの理解がより効果的になります。
ユースケース
システムプログラマーは、ハードウェアレジスタの設定、ファイルパーミッションの確認、ネットワークパケットヘッダーのフィルタリングを行う際に、ビットマスクフラグを適用するためにビット単位の AND 演算を使用します。