将 XOR 转换为 NOR

Convert XOR to NOR

对于课程作业,我们被要求通过创建涉及两个输入 AB 以及一个输出 O 的系统来查找如何在各种逻辑门之间进行转换。最后一次转换是从 XORNOR,但我似乎找不到任何答案。其中每个的逻辑如下:

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)

还有谁能解决这个问题?

EDIT 总而言之,使用 AB、常量 [=25] 创建两个参数的 NOR 运算符/函数=] 和 1,唯一允许的运算符是 XOR 运算符 (^).

这是不可能的。例如,您可以检查

a XOR b XOR 1

实现等价,但不能排除AND,因为XOR不是万能门。

不会给出作业的完整答案。但我很好奇所以:

您写的是 A B0 作为输入,但是您在代码中使用 1 作为输入。

如果不允许您使用 1,您可能需要考虑一下 A XOR 0 是什么。

您的编辑看起来 1 是允许的,在这种情况下,据我所知,解决方案是在门的一侧使用直接输入,在另一侧使用组合输入。喜欢 ((a) ^ (a ^ b)).

EDIT 发布了没有完成解决方案的回复,因此您有一些工作要做。只是注意到可能没有解决方案。