0

基本上我有一个用按位操作数操作的数字,如您在此处看到的:

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

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

| ~0x7fffffff

这样我就可以拥有以下价值:

i_9_ - 256r help!

如何反转这个位操作数?

4

3 回答 3

3

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

| ~0x7fffffff

实际上与

| 0x80000000

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

于 2013-01-30T05:17:38.260 回答
2

正如您可能知道的那样,仅删除该位将是:

& 0x7fffffff

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

= i_9_ - 256
于 2013-01-30T05:23:10.147 回答
1

使用这个:并且与值的(〜)倒数

i_9_ - 256 & 0x7fffffff;

逆的逆~(~)

于 2013-01-30T05:12:31.523 回答