与Bitwise OR操作相反

时间:2009-07-08 06:56:31

标签: language-agnostic bit-manipulation bitwise-operators

我计算

c = a 'OR' b // bitwise OR operation here

现在只给出cb的值,如何计算a的原始值?

6 个答案:

答案 0 :(得分:22)

这是不可能的。

一个简单的案例来证明我的观点(假设a,b和c都是1位):

如果'b'为1,'c'将始终为1,则无法确定'a'的值。

答案 1 :(得分:4)

你无法可靠地回去。例如,a = 0010且b = 0011.一个OR b = 0011.如果a不同(例如0001或0011),则结果相同。

答案 2 :(得分:3)

由于OR 1始终为1且OR 0始终为a,因此只能找到a的值,如果b为0。

编辑:AND和OR是有损操作(不能总是反转)。而XOR和NOT是无损/可逆的。

答案 3 :(得分:2)

这是不可能的,或者操作是不可逆的。有许多不同的a值给c提供相同的值。

你可以通过使用b的补码进行操作来获得a的一个可能值。

a = c & ~b

答案 4 :(得分:1)

那是不可能的。没有办法确定'a'将是什么

答案 5 :(得分:1)

从数学的角度来看,从C和B中推断出A是不可能的。 如果,对于第n位,您在C和B中的值为1,则无法知道A中的第n位是否等于0或1