有一个难题是只用 | 创建一个等效的按位 & 和 ~ 运算符。
我一直在做 | 的蛮力组合 和〜使用6(0110)和5(0101)试图得到4(0100),但我仍然无法得到答案。
可以使用的最大操作数为 8。
有人可以给我提示吗?
有一个难题是只用 | 创建一个等效的按位 & 和 ~ 运算符。
我一直在做 | 的蛮力组合 和〜使用6(0110)和5(0101)试图得到4(0100),但我仍然无法得到答案。
可以使用的最大操作数为 8。
有人可以给我提示吗?
在这里对您有帮助的是德摩根定律,它基本上说:
~(a & b) == ~a | ~b
因此我们可以否定它并得到:
a & b == ~(~a | ~b) //4 operations
查看真值表(事实上,上帝保佑二进制逻辑的简单性,只有四种可能的输入组合可以生成适当的输出),我们可以看到两者是等价的(最后两列):
a | b | ~a | ~b | ~a OR ~b | ~(~a OR ~b) | a AND b
--|---|----|----|----------|-------------|--------
0 | 0 | 1 | 1 | 1 | 0 | 0
1 | 0 | 0 | 1 | 1 | 0 | 0
0 | 1 | 1 | 0 | 1 | 0 | 0
1 | 1 | 0 | 0 | 0 | 1 | 1
真值表时间...
A B A&B !A !B !A|!B !(!A|!B)
0 0 0 1 1 1 0
0 1 0 1 0 1 0
1 0 0 0 1 1 0
1 1 1 0 0 0 1