両方のビットが 1 のときだけ結果が 1 になる論理演算。それ以外はすべて 0。「両方とも成り立つ」という条件を表現します。
AND 演算(論理積)は、2 つの入力ビットがどちらも 1 のときだけ結果を 1 にし、そうでなければ 0 にする論理演算です。 日常の言葉で言えば「A も B も成り立つ」という条件を表します。
上のツールで A と B をタップして切り替えると、出力 OUT がリアルタイムで連動します。1 と 1 の組み合わせだけが緑(1)になり、それ以外は灰色(0)です。
真理値表とは、入力の全パターンに対する出力をまとめた表のことです。AND は入力が 2 つなので 2×2 = 4 パターンあり、覚え方は「1 が 2 つ揃ったときだけ 1」とシンプル。
・0 AND 0 = 0:どちらも 0
・0 AND 1 = 0:片方だけ 1(足りない)
・1 AND 0 = 0:片方だけ 1(足りない)
・1 AND 1 = 1:両方揃って初めて 1
日常の感覚で言えば「条件 A と条件 B の両方を満たす」というのと同じです。例えば「20 歳以上 AND 学生」のような複合条件。回路図の AND ゲートは MIL 記号で「D 字型」の形で表されます。
AND の最大の活用シーンはビットマスクです。AND の「片方でも 0 なら必ず 0」という性質を使って、ビット列の特定の桁を狙い撃ちで操作できます。
・特定ビットを 0 にする(クリア):消したい桁が 0 のマスクと AND を取ると、その桁が強制的に 0 になる。フラグの剥奪や、アドレスのアライメントに使う
・欲しいビットだけを抽出:取り出したい桁だけ 1 のマスクと AND を取ると、その桁の値だけ残って他は 0 に。色情報からチャネルを分離するときなど
・奇数/偶数の判定:x AND 1 で最下位ビットだけ残せば、奇数なら 1・偶数なら 0
プログラミング言語のレベルでは、&(ビット単位 AND)と &&(論理 AND)の 2 種類が用意されています。前者はビット同士、後者は条件式同士に作用しますが、どちらも「両方が成立」という意味では共通しています。