反转按位运算

Reversing a bitwise operation

如果我有例如:a = (b << 8) | (c << 4) | d 我如何从 a 得到 b cd?或者如果我有 ad 并且需要得到 bc?

不幸的是,对于这样的问题没有单一的解决方案(除非在非常特殊的情况下)。 OR 运算符 (|) 没有逆运算,因此即使是以下简化问题:

a = b | c

其中 ac 是已知的,无法求解(至少要得到一个单一的解决方案)。


更实际的例子,你可以考虑一些超级简单的东西:

11 = 10 | c

那么c可能是1101,并且解决方案的数量随着位数的增加而增加。