如何反转C中的按位AND(&)?

Vai*_*orn 11 c reverse bitwise-operators

如何反转C中的按位AND(&)?

例如,我在C中有一个这样的操作:

((unsigned int)ptr & 0xff000000))
Run Code Online (Sandbox Code Playgroud)

结果是0xbf000000.我现在需要的是如何扭转上述情况,即ptr通过使用操作的结果来确定,当然0xff000000.

有没有简单的方法在C中实现这个?

And*_*rey 24

按位&无法逆转:

0 & 1 = 0
0 & 0 = 0
Run Code Online (Sandbox Code Playgroud)


Pau*_*l R 16

你不能这样做,因为你扔掉了信息(即比特) - 你无法从任何地方获取信息.

请注意,AND(&)和OR(|)都是破坏性的.唯一可逆的布尔运算是XOR(^)和NOT(~).


ric*_*chb 5

不可能的。0xff000000 的按位 & 是有损操作。您将永久丢失较低的 24 位。