The Pleasure of Finding Things Out の第 2 章で、Richard P. Feynman は、非常に小さなサイズのコンピューターを構築する際の物理的な制限について説明しています。彼は、可逆論理ゲートの概念を紹介しています。
Bennett と Fredkin の偉大な発見は、異なる種類の基本的なゲート ユニット、つまり可逆ゲート ユニットを使用して計算を実行できることです。私は、リバーシブル NAND ゲートと呼ぶことができるユニットを使用して、彼らのアイデアを説明しました。
彼はさらに、彼がリバーシブル NAND ゲートと呼んでいるものの動作について説明します。
3 つの入力と 3 つの出力があります。出力のうち、A' と B' の 2 つは、入力の 2 つ A と B と同じですが、3 番目の入力はこのように機能します。C' は、A と B が両方とも 1 でない限り C と同じです。この場合、C は C が何であれ変更されます。たとえば、C が 1 の場合は 0 に変更され、C が 0 の場合は 1 に変更されますが、これらの変更は A と B の両方が 1 の場合にのみ発生します。
この本には、そのリバーシブル ゲートの図が含まれており、以下に添付しました (リンク)。
従来の不可逆 NAND ゲート (入力: A、B; 出力: C) の真理値表は次のとおりです。
ファインマンの説明を正しく理解していれば、ファインマンがリバーシブル NAND ゲートと呼んでいるものの真理値表は次のようになります。
しかし、ファインマンが自分のゲートを NAND と呼んでいる理由がわかりません。ゲートを使って NAND(A,B) の結果を導き出すにはどうすればよいでしょうか? NAND(A,B) は、3 つの出力 (A'、B'、C') のいずれからも直接導出することはできないようです。NAND(A,B) は XOR(C,C') によって与えられますが、それには追加の XOR ゲートが必要になります。では、なぜファインマンは彼のゲートを NAND ゲートと呼んでいるのでしょうか?