使用 NAND 端口构建 xy+xz+yz
Build xy+xz+yz using NAND port
作为家庭作业,我必须只使用 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))))]
我的推理对吗?有更简单的方法吗?
非常感谢大家
您的回答是正确的(尽管您缺少一些标点符号 -- 几个逗号和一个括号)。您可以通过生成所有可能输出的真值 table 来确认。我写了几行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
作为家庭作业,我必须只使用 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))))]
我的推理对吗?有更简单的方法吗?
非常感谢大家
您的回答是正确的(尽管您缺少一些标点符号 -- 几个逗号和一个括号)。您可以通过生成所有可能输出的真值 table 来确认。我写了几行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