論理演算
「1と0」または、「真と偽」のように、2値のうちいずれか一方の値を持つデータ間で行われる演算。
演算結果も「1と0」または、「真と偽」になる。
論理演算を行う電子回路が論理回路で、CPUに組み込まれている。
論理回路はMIL記号で図式化したり、入出力の状態を表にまとめた真理値表で表現する。ベン図でよりわかりやすくなる。
主な論理演算に、論理和(OR)・論理積(AND)・否定(NOT)がある。
論理和(OR)
入力(A,B)の少なくとも一方が1であれば、出力(A+B)は1となる演算。
※+は論理和という意味
論理積(AND)
入力(A,B)の両方が1なら、出力(A・B)は1となる演算。
※・は論理積という意味
否定(NOT)
入力(A)が0なら、出力(Ā)は1、入力が1なら出力(Ā)は0になる演算。
※ĀはAの否定を意味する
論理演算の組み合わせ
論理和(OR)・論理積(AND)・否定(NOT)を組み合わせた演算。
排他的論理和(EOR,またはXOR)
入力(A,B)が異なれば、出力(A⨁B)は1となる演算
※⨁は排他的論理和という意味
否定論理和(NOR)
論理和と否定を組み合わせたもの
「A+B」の否定
否定論理積(NAND)
論理積と否定を組み合わせた演算。
「A・B」の否定
命題
真か偽のどちらかに決まる文のこと
ビット演算
「元のビット」と「特定のビット列」との間でビット演算を行い、ある特定のビットを取り出したり、反転させたりすることができる。「特定のビット列」のことをマスクパターン(マスク)という。
ビット列の取り出し
特定のビットを取り出すには、元のビット列とマスクパターンとの間で、論理積(AND)を行う。
例:下位4ビットの取り出し
元のビット列:00110001
マスクパターン00001111
↓
00000001の下位4ビットを取り出す。
IPアドレスやサブネットマスクの処理に使用
ビットの反転
ビットの反転をするには、元のビット列とマスクパターンとの間で、排他的論理和(EOR)を行う。
例:下位4ビットの反転
元のビット列:00110001
マスクパターン00001111
↓
00111110となる
パリティ符号(データチェック用に追加するビット)や暗号化の処理に使用
ド・モルガンの法則
こちらの記事を見た方が分かりやすいです