少しでも分かりやすく伝えたいNAND回路の変換
![少しでも分かりやすく伝えたいNAND回路の変換](https://motisan.info/i/06-it-change-nand.png)
皆さんこんにちは!!
今回はNAND回路をOR回路やAND回路に変換する方法について解説したいと思います!
※前提として論理ゲートの知識が必要になります。論理ゲートがよく分からない方は以下のページに詳しい説明をしていますので宜しければご覧ください!
https://it.sumahotektek.com/it-logic-gate/
NAND回路とは
![NAND回路図と真理値表](https://motisan.info/i/change-nand-01.png)
NANDゲートについて軽くおさらいです。図と真理値表は上の写真の通りで、NANDはNot ANDの略称です。
![NAND回路図分解](https://motisan.info/i/change-nand-02.png)
ANDゲートの先にNotゲートがついているのと同じものなので、ANDゲートと逆の出力をすればNANDゲートの出力になります。
例として、AとBの両方が「1」のときに「0」が出力され、どれかしらの入力値が「0」になったときは「1」が出力されます。
NANDゲートの組み合わせによる変換
本題ですが、このNANDゲートを複数組み合わせたり応用させることでOR回路やAND回路等に変換することができます。
これは実際のICにも用いられていて、同じ回路を複数用いることによってコスト削減ができるそうです。
今回は、NANDから「AND」「OR」「NOT」「XOR」への変換について説明していきます。
NANDからANDへの変換
まず、NAND回路からAND回路への変換についてです。
変換の図は下のようになります。
![NAND回路を用いたAND回路への変換](https://motisan.info/i/change-nand-03.png)
これに実際に値を入れて図で説明していきます。まず、AND回路の図と真理値表は次のようになります。
![AND回路の図と真理値表](https://motisan.info/i/change-nand-07.png)
今回はAが「0」、Bが「1」の場合とAが「1」、Bが「1」の場合の説明をしていきます。
Aが「0」、Bが「1」の場合
![ANDの値挿入例_1](https://motisan.info/i/change-nand-11.png)
NAND回路は全ての入力値が「1」のときは「0」を出力するので、1つ目のNANDの出力が「1」なので次のNAND入力が両方とも「1」となり出力は「0」になります。
Aが「1」、Bが「1」の場合
![ANDの値挿入例_2](https://motisan.info/i/change-nand-12.png)
Aが「0」、Bが「1」の場合とは逆に1つ目のNANDの出力が「0」なので次のNAND入力が両方とも「0」となり出力は「1」になります。
NANDからORへの変換
まず、NAND回路からOR回路への変換についてです。
変換の図は下のようになります。
![NAND回路を用いたOR回路への変換](https://motisan.info/i/change-nand-04.png)
これに実際に値を入れて図で説明していきます。まず、OR回路の図と真理値表は次のようになります。
![OR回路の図と真理値表](https://motisan.info/i/change-nand-08.png)
今回はAが「0」、Bが「0」の場合とAが「0」、Bが「1」の場合の説明をしていきます。
Aが「0」、Bが「0」の場合
![OR回路の値挿入例_1](https://motisan.info/i/change-nand-13.png)
2つ目のNAND入力が両方とも「1」となっていることからも出力は「0」になります。
Aが「0」、Bが「1」の場合
![OR回路の値挿入例_2](https://motisan.info/i/change-nand-14.png)
2つ目のNAND入力が片方のみ「1」となっていて、入力値全てが「1」でないことからも出力は「1」になります。
NANDからNOTへの変換
まず、NAND回路からNOT回路への変換についてです。
変換の図は下のようになります。
![NAND回路を用いたNOT回路への変換](https://motisan.info/i/change-nand-05.png)
これに実際に値を入れて図で説明していきます。まず、NOT回路の図と真理値表は次のようになります。
![NOT回路の図と真理値表](https://motisan.info/i/change-nand-09.png)
今回はAが「0」の場合とAが「1」の場合の説明をしていきます。
Aが「0」の場合
![NOT回路の値挿入例_1](https://motisan.info/i/change-nand-15.png)
入力値全てが「1」ではないので、出力は「1」になります。
Aが「1」の場合
![NOT回路の値挿入例_2](https://motisan.info/i/change-nand-16.png)
Aが「0」の場合とは逆で入力値全てが「1」なので、出力は「0」になります。
NANDからXORへの変換
まず、NAND回路からXOR回路への変換についてです。
変換の図は下のようになります。
![NAND回路を用いたXOR回路への変換](https://motisan.info/i/change-nand-06.png)
これに実際に値を入れて図で説明していきます。まず、XOR回路の図と真理値表は次のようになります。
![XOR回路の図と真理値表](https://motisan.info/i/change-nand-10.png)
今回はAが「0」、Bが「1」の場合とAが「1」、Bが「1」の場合の説明をしていきます。
Aが「0」、Bが「1」の場合
![XOR回路の値挿入例_1](https://motisan.info/i/change-nand-17.png)
入力値全てが「1」のNAND回路以外は出力が「1」になるので、順を追っていくと最終的な出力は「1」となります。
Aが「1」、Bが「1」の場合
![XOR回路の値挿入例_2](https://motisan.info/i/change-nand-18.png)
これも今までと同様に、全ての入力値が「1」のところだけ「0」を出力し、そうでないところは「1」を出力すると、上の画像のように最終的な出力が「0」になるはずです。
まとめ
他の入力値で試しても、AND回路やOR回路などと同じ機能を持つ回路をNAND回路のみで再現できます。
今回変換した回路を更に組み合わせれば、NOR回路やXNOR回路等も作成することができます!