如何在C中反轉按位AND(&)?如何在C中反轉按位與(&)?
例如,我有C中的操作是這樣的:
((unsigned int)ptr & 0xff000000))
結果是0xbf000000
。我現在需要的是如何反轉上述內容,即通過使用操作的結果以及當然是0xff000000
確定ptr
。
有沒有簡單的方法來實現這個在C?
如何在C中反轉按位AND(&)?如何在C中反轉按位與(&)?
例如,我有C中的操作是這樣的:
((unsigned int)ptr & 0xff000000))
結果是0xbf000000
。我現在需要的是如何反轉上述內容,即通過使用操作的結果以及當然是0xff000000
確定ptr
。
有沒有簡單的方法來實現這個在C?
按位&
不能顛倒:
0 & 1 = 0
0 & 0 = 0
不可能。 0xff000000的bitwise &是有損操作。永久丟失較低的24位。
你不能這樣做,因爲你已經扔掉的信息(即比特) - 你不能獲取信息從無處回來。
請注意,AND
(&
)和OR
(|
)都具有破壞性。唯一可逆的布爾操作是XOR
(^
)和NOT(~
)。
您只能反轉異或,因爲它是非破壞性的。
OR和AND都具有破壞性。
您也可以反轉「不」。 – 2010-04-02 10:56:45
是的,我不好意思讓我滑倒:-) – Steffen 2010-04-02 13:57:12