我必须解决一个任务,但找不到答案:
仅使用x | y
和~
来计算&
允许的最大操作数为8
编辑: 在二进制补码和32位整数表示中。 右移是算术性的。
答案 0 :(得分:5)
通过查看x | y
的真值表,您会看到:
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
如果x | y
和x
都不是y
,则 0
将为1。您可以将其翻译为~(~x & ~y)
:
~(~0 & ~0) = ~(1 & 1) = ~1 = 0
~(~0 & ~1) = ~(1 & 0) = ~0 = 1
~(~1 & ~0) = ~(0 & 1) = ~0 = 1
~(~1 & ~1) = ~(0 & 0) = ~0 = 1
答案 1 :(得分:2)
这已经得到了解答,但他们没有提到De Morgan。
De Morgan's Law说〜(~A& ~B)相当于(A | B)。我的逻辑设计教授告诉我们要移动泡沫,改变符号"其中一个NOT(〜)是一个" bubble"和AND / OR是"符号"。(A'& B')' - >移动/分发"气泡" - > (A& B) - >改变"符号" - > (A | B)。
这也可以倒退,缺少一个NOT可以被视为没有泡沫。
(A | B) - >添加"气泡" - > (A' | B')' - >更改符号 - > (A'& B')'