在一个课程作业中,我们被要求通过创建涉及两个输入A和B以及一个输出O的系统来查找如何在各种逻辑门之间进行转换。最后一次转换是从XOR到NOR,但我似乎找不到任何答案。每一种方法的逻辑如下:
XOR
A | B | O
----------
0 | 0 | 0
1 | 0 | 1
0 | 1 | 1
1 | 1 | 0
NOR
A | B | O
----------
0 | 0 | 1
1 | 0 | 0
0 | 1 | 0
1 | 1 | 0为了简单起见,我将请求函数NOR而不是图表的伪代码。XOR二进制运算符是^。我最近看到的是JavaScript中的以下函数:
function nor(a, b) {
return ((a^1)^(a^b))^((b^0)^(a^b));
}但这实际上是XNOR的逻辑
A | B | O
----------
0 | 0 | 1
1 | 0 | 0
0 | 1 | 0
1 | 1 | 1 (this should be 0 though)还有谁能搞清楚这件事?
编辑进行总结,根据需要使用A、B、常量0和1创建一个由两个参数组成的NOR操作符/函数,唯一允许的操作符是XOR运算符(^)。
发布于 2015-01-22 04:47:51
这是不可能的。例如,您可以检查
a XOR b XOR 1要实现等价,但不能将AND排除在外,因为XOR不是一个通用的门。
发布于 2015-01-22 04:52:34
不会给家庭作业提供完整的解决方案。但我很好奇所以:
编写时使用A B和0作为输入,但在代码中使用1作为输入。
如果不允许使用1,则可能需要考虑什么是A XOR 0。
您的编辑看起来类似于1,在这种情况下,就我所能看到的情况而言,解决方案是在门的一侧使用直接输入,而将组合输入作为另一侧的输入。比如(a )^(a^b)
编辑发布的回复没有一个完整的解决方案,所以你有一些工作要做。只要注意到这是可能的,就没有解决办法。
https://stackoverflow.com/questions/28081044
复制相似问题