ビットAND演算の基本
ビットAND(&)演算子の仕組みを学びます。ANDは対応する両方のビットが1の場合のみ1を返します。マスキング、フィルタリング、フラグチェックに必須。
AND Operations
詳細な説明
ビットAND(&)を理解する
AND演算子は2つのオペランドの対応するビットの各ペアを比較します。結果ビットは両方の入力ビットが1の場合のみ1になり、それ以外は0です。
真理値表
A | B | A & B
--|---|------
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
計算例
42 & 15を計算してみましょう:
42 = 00101010
& 15 = 00001111
──────────────────
10 = 00001010
両方のオペランドが1を持つビットだけが結果に残ります。42の上位4ビット(0010)は15の対応ビットが0のためクリアされます。
ANDが基本である理由
ANDはマスキングを可能にするため、最も一般的に使用されるビット演算です。マスキングとは値から特定のビットを抽出またはゼロにする機能です。1とANDしたビットは元の値を保持し、0とANDしたビットは0になります。この性質によりANDは以下に不可欠です:
- パックされたデータ構造からフィールドを抽出
- 他のビットを保持しながら特定のフラグビットをクリア
- 特定のビットが設定されているかテスト
- 2の累乗によるモジュロの実装(例:
n & 0x0Fはn % 16と同等)
パフォーマンスノート
ANDはほぼすべてのプロセッサで1CPUサイクルで動作するため、モジュロなどの同等の算術演算よりはるかに高速です。
ユースケース
ネットワークエンジニアはIPアドレスにサブネットマスクを適用するためにANDを使用します。例えば、IPアドレス192.168.1.100(0xC0A80164)と/24サブネットマスク255.255.255.0(0xFFFFFF00)をANDすると、ネットワークアドレス192.168.1.0(0xC0A80100)が得られます。これがルーターがパケットの所属ネットワークを判断する仕組みです。