16

Cでビット単位のAND(&)を逆にする方法は?

たとえば、Cで次のような操作を行います。

((unsigned int)ptr & 0xff000000))

結果は0xbf000000です。現時点で必要なのは、上記を逆にする方法、つまりptr、操作の結果を使用して決定する方法0xff000000です。

これをCで実装する簡単な方法はありますか?

4

4 に答える 4

31

ビット単位&を元に戻すことはできません。

0 & 1 = 0
0 & 0 = 0
于 2010-04-02T10:52:06.327 に答える
19

情報(つまりビット)を捨ててしまったため、それを行うことはできません。どこからでも情報を取り戻すことはできません。

AND&)とOR|)の両方が破壊的であることに注意してください。可逆的なブール演算はXOR^)とNOT(~)のみです。

于 2010-04-02T10:52:37.400 に答える
4

不可能。ビット単位の&0xff000000は、不可逆演算です。下位24ビットは永久に失われます。

于 2010-04-02T10:51:57.310 に答える
3

XORは非破壊的であるため、元に戻すことしかできません。

ORとANDはどちらも破壊的です。

于 2010-04-02T10:55:31.633 に答える