对于作业,我必须仅使用NANDS端口编写xy+xz+yz
。
我将使用符号NAND(x,y) - 或其他类型的支架来使事情更清晰 - 在我的尝试之下,然后对每一步做出解释。我想知道我是否做得对,如果有更好的方法可以做到这一点。
我的解决方案
NAND[NAND(NAND(NAND(x,y),NAND(x,z)),NAND(NAND(x,y),NAND(x,z))),NAND(NAND(NAND(y,z),NAND(y,z)),NAND(NAND(y,z),NAND(y,z))))]`
我知道这看起来真的无法阅读和跟踪。对不起,不知道怎么让这个更漂亮。希望我的解释能澄清事情。
我将xy+xz+yz
分为两组:xy+xz
和yz
第一组:
xy+xz = NAND(NAND(x,y),NAND(xz)) = NOT[NOT(xy)*NOT(xz)] = xy+xz
第二组:
yz = NAND(NAND(y,z),NAND(y,z)) = NOT(NOT(yz)*NOT(yz)) = yz (since yz+yz = yz)
现在我必须将第一组与第二组合并,为了便于阅读,我将第一组(在NAND中称为 g1 )和第二组 g2 ;
g1+g2= NAND[NAND(g1,g1),NAND(g2,g2)] = NOT[NOT(g1)*NOT(g2)] = g1+g2
最后:
xy+xz+yz= NAND[NAND(NAND(NAND(x,y),NAND(x,z)),NAND(NAND(x,y),NAND(x,z))),NAND(NAND(NAND(y,z),NAND(y,z)),NAND(NAND(y,z),NAND(y,z))))]
我的推理是对的吗?还有一种更简单的方法吗?
非常感谢你们
答案 0 :(得分:1)
你的答案是正确的(虽然你有一些标点符号 - 一些逗号和一个括号)。您可以通过生成所有可能输出的真值表来确认。我写了几行C代码来确认。关于你是否有更简单的方法的第二个问题,我不知道。也许其他人可以提供帮助。
x y z xy+xz+yz nands ------------------------------ 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1