XORゲート

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
入力
A   B
出力
A XOR B
L L L
L H H
H L H
H H L

XORゲート排他的論理和論理ゲートである。右に真理値表を挙げる。2入力の場合、入力の片方がHighで、かつ、もう片方はLowのとき、Highを出力する。入力が両方Highまたは両方Lowのときは、Lowを出力する。メーカー等によってはEORゲートまたはExORゲートとも呼んでいる。出力が、これの反転になるものをXNOR等と呼ぶ。

排他的論理和は2を法とする(繰り上がりを無視した)加算と同じものである。すなわち、半加算器には加算結果とキャリーの2つの出力があるが、そのうちの加算結果はXOR(と同じ)である。XOR(排他的論理和)の積和標準形A \cdot \overline{B} + \overline{A} \cdot Bである。

XORの通常の出力の他、入力のうちのどちらか片方をそのまま(またはその反転を)出力する2入力2出力の演算は、制御NOT(CN)と呼ばれる可逆計算になる。

記号[編集]

ANSIMIL論理記号)、IECDIN(2種)での記法を以下に示す。

XOR ANSI.svg XOR IEC.svg XOR DIN.svg XOR DIN 2.svg
MIL/ANSI 記号 IEC 記号 DIN 記号(1) DIN 記号(2)

ハードウェアの解説とピン配置[編集]

7486

論理の方式にもよるが、XORは単純には実装できないことが多い(たとえばCMOS論理では、2入力のNANDゲートNORゲートは4個のトランジスタで直接単純に実装できるが、XORを4個のトランジスタで実装するのは困難である)。しかし基本論理の組み合わせで作るのは少々煩雑であり、回路的な工夫(後述)もあることから、TTLやCMOS論理の汎用ロジックICにはXORゲートがラインナップされている。74シリーズでは7486、4000シリーズでは4070(4030の代替)に、2入力XORゲートが4個入っている。ピン配置はいずれも同じである。DIPパッケージ品やフラットパッケージ品がある。

実装[編集]

排他的論理和はそれぞれの入力に対して対称で、XORを変形して双対でもある出力が反転したXNORを作ることも簡単だが、以下ではそういったバリエーションについては省略する。

CMOS論理の基本的な方式に従った場合、2個の入力AとBそれぞれの反転のために2個ずつ4個のトランジスタと、次の図のような8個のトランジスタの、計12個のトランジスタによって実装できる。

CMOS XOR Gate

CMOSでは、NORゲートとAND-OR-Invert(en:AND-OR-Invert)複合ゲートによる10トランジスタの実装もある。

XOR with NOR gate and AND-OR-Invert comp. gate

通常の構成のゲートではなく、論理値が「通り抜ける」ゲート(伝達ゲート論理、en:Transmission gate logic)を使うと、より効率よく実装できるかもしれない。以下はそのような、6個のトランジスタによるCMOS ICへの実装の1例である[1]

Transmission Gate Logic wiring of an XOR gate

(ただしこの実装では、Lowの信号がPMOSトランジスタを・Highの信号がNMOSトランジスタを通り抜けることがあり、ハードウェア的に工夫が必要である。そのような問題を修正すると、NOT2個のための4個と伝達ゲートのための4個で計8個のトランジスタが必要になる)

後述するようにXORは加算器でもあるため、コンピュータの高性能化のために他にも種々の手法が研究されている[2]

XORの積和標準形A \cdot \overline{B} + \overline{A} \cdot BANDゲートORゲートNOTゲートで構成した場合、3種類の論理ゲートが計5個必要である。

NANDゲートのみの場合NANDゲート4個、NORゲートのみの場合は5個で構成できる。

NANDゲートのみで構成したXORゲート
NORゲートのみで構成したXORゲート
3路スイッチによる配線

電灯のオンオフを、3路スイッチと呼ばれるスイッチを利用して、2ヶ所から切り替えられるようにする配線方法があるが、これも一種のXORの実装である。

3以上の入力への拡張[編集]

XOR(A, B)A \oplus Bと表現した時、XOR(A, B, C) = (A \oplus B) \oplus C = A \oplus (B \oplus C)のように拡張するのが自然である。これはXORゲートのカスケード、つまり、最初に2入力のXORゲートがあり、その出力と3番目の入力を次のXORゲートの入力とする。さらに入力を増やす場合はこれを次々と連結した形で構成する。こうすると、HIGHとなっている入力が奇数個のときHIGHを出力し、HIGHとなっている入力が偶数個のときLOWを出力する回路となる。このような回路はパリティ生成器、あるいは2を法とする加算器として利用できる。74LVC1G386 はそのような3入力XORゲートである[3]。ただし大きなワードのパリティ生成など規模が大きい場合は、遅延を考慮するとトーナメント式に並列進行するほうにしたほうが良い。

XORを多入力に拡張したものとしては、0になっている入力が1個の時のみ1、あるいは1になっている入力が1個の時のみ1、といったものも考えられるが、そのような拡張は、自然な2項演算の組み合わせとしての解釈が不可能である。bit populationの一種になる。

加算器での使用[編集]

半加算器の回路例

XORゲートは1ビット加算器として機能する。すなわち、2つのビットを加算した結果の1ビット目が得られる。2ビット目の桁上がり(キャリー)は加算する2つのビットが1の時であるからANDゲートによって得られる。したがってXORゲートとANDゲートを使って半加算器を構成できる。

脚注・出典[編集]

関連項目[編集]