用 NAND 端口构建 x XOR(y XOR z)

Build x XOR (y XOR z) with NAND port

我需要制作 x xor(y xor z) 只有 NAND 端口。 符号:NOT(y) = ~y.

我的第一步是确定这些东西的输出,所以:

x xor(y xor z) = x xor (y~z + ~yz) = ~x(y~z + ~yz) + x~(y~z + ~yz) = ~xy~z + ~x~yz + x~y~z + xyz

所以我的NAND构造的最终输出应该是:~xy~z + ~x~yz + x~y~z + xyz

我试图通过首先对 y XOR z 进行攻击:

y XOR z = y~z + ~yz = NAND[NAND(y,NAND(z,z)),NAND(z,NAND(y,y))]

NAND(y,NAND(z,z)) = NOT(y * NOT(z*z)) = NOT(y) + z 我称之为 g1

NAND(z,NAND(y,y)) = NOT(z * NOT(y*y)) = NOT(z) + y 作为 g2

则外NAND[g1,g2] = z~y + y~z.

所以现在我有一个只有 NAND 的 XOR,做 x xor (y xor z) 应该只是将 (y xor z) 视为一个单一变量,这给了我:

x xor (y xor z) = NAND[NAND(x,NAND(NAND[NAND(y,NAND(z,z)),NAND(z,NAND(y,y))],NAND[NAND(y,NAND(z,z)),NAND(z,NAND(y,y))])),NAND(NAND[NAND(y,NAND(z,z)),NAND(z,NAND(y,y))],NAND(x,x))]

我说的对吗?我觉得 xor 可以用比使用 5 个 NAND 端口更有效的方式制作。

谢谢大家。

你最后的表达是正确的。

20个NAND门可以减少到八个:

这个电路利用了XOR(x,y,z) = XOR(XOR(x,y),z)。它是两个two-input XOR门的组合,每个门由四个NAND门组成。