2009-07-08 102 views
5

的我计算对面位或操作

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

现在只给出的c价值观和b我怎么能计算的a原值?

+0

在justto添加一些示例 - 我有X34和我做OR操作WITN X40和我得到的X74。 现在用x40和x74,如何得到x34。 对于某些值,我发现xOR操作给出'a'但我真的不确定它会始终工作 x34 | x40 = x74 x74^x40 = x34 – Kapil 2009-07-08 07:01:56

+0

为什么是负面投票?它是一个非常明确的问题,它的编程是相对的。如果它不可能,那么它是一个可回答的问题。 – 2009-07-08 07:02:25

+2

如果你在a和b之间进行XOR,很容易找到一个如果你知道b和c的地方。只要做X异或B,你就会得到一个。用OR或者它是不可能的(见下面的答案) – Burkhard 2009-07-08 07:04:00

回答

22

这是不可能的。

一个简单的例子来证明我的观点(假设A,B和C都是1位):

如果 'b' 为1, 'C' 将永远是1,则无法确定该值'a'。

+1

Yeap,和AND一样。 – sharptooth 2009-07-08 07:07:29

1

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

4

你不能可靠地回去。例如,a = 0010和b = 0011.a或b = 0011.如果a不同(例如0001或0011),则结果相同。

1

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

3

由于OR 1始终为1和A或0永远是如果b是0

编辑你只能找到的值:AND和OR是有损操作(不能总是被颠倒过来)。 XOR和NOT是无损/可逆的。

2

这是不可能的,或操作是不可逆的。有许多不同的值给c赋予相同的值。

通过用b的补数进行运算和操作,可以得到一个可能的值。

a = c & ~b 
+1

强调“*可能的值*” – 2009-07-08 07:12:59