如何反转这个位操作数?

时间:2013-01-30 05:06:55

标签: java binary bits

基本上我有一个用按位操作数操作的数字,你可以在这里看到:

is[i_6_] = i_9_ - 256 | ~0x7fffffff;

我需要反转/撤消这个位操作数..

| ~0x7fffffff

这样我就可以获得以下值:

i_9_ - 256r help!

如何反转这个位操作数?

3 个答案:

答案 0 :(得分:3)

首先我假设您所写的表达实际上是(i_9_ - 256) | ~0x7fffffff

| ~0x7fffffff

实际上与

相同
| 0x80000000

意味着无论原始值如何,它都会将原始数字的最高位(根据您所说的i_9_ - 256)变为“1”。 所以我不认为你可以扭转这个

答案 1 :(得分:2)

要删除那个位,你可能知道:

& 0x7fffffff

但是由于你需要将它恢复到以前的状态,你需要 - 一般来说 - 在OR之前保存最重要位的状态,以确定是否应该清除该位。那么,获得结果的最直接方法是重新使用i_9_的原始值,但这次没有OR操作:

= i_9_ - 256

答案 2 :(得分:1)

使用此:并使用值的(〜)反转

i_9_ - 256 & 0x7fffffff;

逆的倒数〜(〜)