操纵按位操作

时间:2013-05-12 22:05:26

标签: bit-manipulation operations

有一个难题是创建一个等效的比特&只有|和〜运算符。

我一直在做|的强力组合和〜使用6(0110)和5(0101)试图获得4(0100),但我仍然无法得到答案。

可以使用的最大操作数为8.

有人可以给我提示吗?

2 个答案:

答案 0 :(得分:4)

这里有什么帮助De Morgan's Law,基本上说:

~(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

答案 1 :(得分:0)

真相表时间......

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