ビット演算: AND、OR、XOR、NOT

ビット単位の AND、OR、XOR、NOT 演算を真理値表と実例で習得。フラグ、マスク、パーミッション、ビット操作での応用を学びます。

Binary OperandsBinary 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 = ciphertextciphertext ^ key = plaintext

よく使うビットテクニック:

  • 偶数かチェック: n & 1 === 0
  • 2のべき乗かチェック: n & (n - 1) === 0
  • 最下位のセットビットをクリア: n & (n - 1)
  • 最下位のセットビットを分離: n & (-n)

ビット演算を習得すれば、システムプログラミング、競技プログラミング、ハードウェアがデータをどのように処理するかの理解がより効果的になります。

ユースケース

システムプログラマーは、ハードウェアレジスタの設定、ファイルパーミッションの確認、ネットワークパケットヘッダーのフィルタリングを行う際に、ビットマスクフラグを適用するためにビット単位の AND 演算を使用します。

Try It — Number Base Converter

フルツールを開く