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

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

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

((unsigned int)ptr & 0xff000000)) 

结果是0xbf000000 。 我现在需要的是如何反转上述内容,即通过使用操作的结果来确定ptr ,当然还有0xff000000

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

按位&不可逆转:

 0 & 1 = 0 0 & 0 = 0 

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

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

不可能。 按位和0xff000000是一个有损操作。 你永久地丢失了较低的24位。

你只能反转XOR,因为它是非破坏性的。

OR和AND都是破坏性的。