2014-11-04 105 views
3

這裏是我做了什麼:如何反轉按位或操作?

93 | 199 

返回

223 

我明白,這是因爲0b1011101 | 0b110001110b11011111

然而,假設我想要做反向操作。如何從0b110001110b11011111之間的位運算得到0b1011101

+2

你不能...... – 2014-11-04 03:07:59

+0

你可以產生所有可能的答案,雖然它們可能會成倍增加(3的數量爲1的數) – harold 2014-11-04 07:58:00

回答

13

在一般情況下,您無法得到明確的答案。如果C=A|B,那麼無論你有在C 1和所述的A 1,B 的相應位可能是任一 0或1

在您的例子,93 | 199 = 223,但92 | 199也是223.所以,給定223和199,沒有單個答案(實際上,在這個例子中有32個可能的答案)。

0

正如here所指出的,OR和AND都是破壞性的操作。反向OR操作是一種有損操作,正如'jez'所提到的,可以有多個答案。 因此,它是不可能

只有反向操作可能是XOR,因爲它是無損