2009-07-08 101 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