読み方 : ろんりえんざん

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

概要

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

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

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

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

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

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

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

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

(2019.1.19更新)

他の用語辞典による「論理演算」の解説 (外部サイト)

資格試験などの「論理演算」の出題履歴

▼ ITパスポート試験
平25秋 問64】 次の真理値表で示される入力x、yに対する出力zが得られる論理演算式はどれか。
xyz
001
010
100
110
平25春 問82】 排他的論理和を表す論理式はどれか。ここで、論理変数AとBに対する排他的論理和の真理値表は次のように表される。また、ANDは論理積、ORは論理和、NOTは否定を表す。
平24秋 問82】 真理値表に対応する論理演算はどれか。
入力A入力B出力
000
010
100
111

▼ 基本情報技術者試験
令2修12 問3】 8ビットのビット列の下位4ビットが変化しない操作はどれか。
平30修1 問2】 次の論理演算が成立するときに,aに入るビット列はどれか。ここで,⊕は排他的論理和を表す。 1101⊕0001⊕[ a ]⊕1101=1111。
平28秋 問1】 8ビットのビット列の下位4ビットが変化しない操作はどれか。
平23修1 問2】 8ビットのデータの下位2ビットを変化させずに,上位6ビットのすべてを反転させる論理演算はどれか。