用 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
门组成。
我需要制作 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
门组成。