論理演算 【logical operation】 ブーリアン演算 / boolean operation / ブール演算

概要

論理演算(logical operation)とは、真(true)と偽(false)の二通りの状態を取る真偽値(真理値/ブール値)の間でわれる演算。コンピュータでは真を1に、偽を0に対応付けたビット演算としてわれることが多い。

入力が一つの単項演算として、入力値の反対の出力する「否定」(NOT A:Aではない)がある。入力が二つの二項演算には、どちらかが真なら真を出力する「論理和」(A OR B:AまたはB)、両者とも真の時のみ真を出力する「論理積」(A AND B:AかつB)、両者が異なる時に真を出力する「排他的論理和」(XOReXclusive OR)がある。

電子回路などでは、論理和否定を組み合わせた「否定論理和」(NORNot OR)、論理積否定を組み合わせた「否定論理積」(NANDNot AND)が用いられることもある。排他的論理和否定を組み合わせた「否定排他的論理和」(XNOR)はが同じとき真、異なるとき偽となるため「同値」(EQequal)とも呼ばれる。

NOT 否定
入力01
出力10

AND 論理積
入力10011
入力20101
出力0001

OR 論理和
入力10011
入力20101
出力0111

XOR 排他的論理和
入力10011
入力20101
出力0110

NAND 否定論理積
入力10011
入力20101
出力1110

NOR 否定論理和
入力10011
入力20101
出力1000

XNOR 否定排他的論理和
入力10011
入力20101
出力1001

三項以上を計算する際は二項ずつの計算を繰り返すことで結果が得られる。その際、四則演算のように交換法則や分配法則、結合法則、ド・モルガンの法則などが成り立つ。すべての論理演算はNOTANDORの三つの組み合わせで構成できるが、この三つはすべてNANDの組み合わせで構成でき、NANDだけですべての論理演算を記述できることが知られている。

コンピュータでは真偽値自体の演算(プログラミング言語におけるブール型の演算など)の他に、真を1、偽を0に置き換えてビット間で論理演算をうことがある。ビットについて論理演算をう場合は二つのビットのぞれぞれ対応する位置にあるビット同士で論理演算をう。

このような演算方式を真偽値の論理演算と区別して「ビット演算」(bitwise operation)と呼ぶこともある。なお、ビット演算には論理演算に相当する演算以外にも、シフト演算やローテート演算などビットを左右に移動する操作もある。

プログラミング言語では算術演算などと並んで最も基本的な演算の一つとして論理演算が用意されていることが多く、論理演算子によってを記述する。演算子は「&&」のような記号を用いる場合と、「and」のような英単語をそのまま用いる場合がある。C言語の「&」と「&&」のように、論理演算と対応するビット演算にはそれぞれ別の演算子が与えられていることが多い。

(2019.1.19更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる