反向位操作

时间:2012-05-02 09:49:47

标签: c# bit-manipulation reverse

这里只是一个快速的,是否可以从i找到aValue和bValue的原始值?如果是这样的话?

感谢。

uint i = Convert.ToUInt32((aValue << 2) & 0x300) | bValue;

2 个答案:

答案 0 :(得分:1)

无法从i找到 对的值,因为多对可能会产生相同的结果。

很容易看出你是否考虑了设置bValue的所有位的示例。然后,无论i的值如何,都将设置aValue的所有位。现在考虑设置aValue的每个奇数位,bValue的每个偶数位都设置的情况,并且还设置bValue的最低有效位。同样,结果将设置其所有位,用于非常不同的aValuebValue对。

aValue=00110011, bValue=11111111 ---> i=11111111
aValue=10110000, bValue=11111111 ---> i=11111111
aValue=00000000, bValue=11111111 ---> i=11111111
aValue=01010101, bValue=10101011 ---> i=11111111

答案 1 :(得分:0)

许多值可以产生相同的结果。

即使您有其中一个值,您也无法确定另一个值,并非总是如此,因为在操作过程中信息会丢失,这是不可逆转的。