基本的に、ここに表示されているように、ビット単位のオペランドで操作される数値があります。
is[i_6_] = i_9_ - 256 | ~0x7fffffff;
このビットオペランドを反転/元に戻す必要があります。
| ~0x7fffffff
そのため、次の値が得られます。
i_9_ - 256r help!
このビットオペランドを逆にする方法は?
あなたが書いた表現が実際にあると仮定するすべてのimの最初(i_9_ - 256) | ~0x7fffffff
| ~0x7fffffff
事実上と同じです
| 0x80000000
つまり、元の値に関係なく、元の数値の最上位ビット(i_9_-あなたが言ったことによると256)を「1」にします。だから私はあなたがこれを逆転させることができるとは思わない
ご存知のように、そのビットを削除するだけです。
& 0x7fffffff
ただし、以前の状態に戻す必要があるため、ORを実行する前に、その最上位ビットの状態を保存して、そのビットをクリアする必要があるかどうかを判断する必要があります。したがって、結果を取得する最も直接的な方法は、i_9_の元の値を再利用することですが、今回はOR演算を使用しません。
= i_9_ - 256
これを使用する:そして値の(〜)逆で
i_9_ - 256 & 0x7fffffff;
逆の逆〜(〜)