0

基本的に、ここに表示されているように、ビット単位のオペランドで操作される数値があります。

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

このビットオペランドを反転/元に戻す必要があります。

| ~0x7fffffff

そのため、次の値が得られます。

i_9_ - 256r help!

このビットオペランドを逆にする方法は?

4

3 に答える 3

3

あなたが書いた表現が実際にあると仮定するすべてのimの最初(i_9_ - 256) | ~0x7fffffff

| ~0x7fffffff

事実上と同じです

| 0x80000000

つまり、元の値に関係なく、元の数値の最上位ビット(i_9_-あなたが言ったことによると256)を「1」にします。だから私はあなたがこれを逆転させることができるとは思わない

于 2013-01-30T05:17:38.260 に答える
2

ご存知のように、そのビットを削除するだけです。

& 0x7fffffff

ただし、以前の状態に戻す必要があるため、ORを実行する前に、その最上位ビットの状態を保存して、そのビットをクリアする必要があるかどうかを判断する必要があります。したがって、結果を取得する最も直接的な方法は、i_9_の元の値を再利用することですが、今回はOR演算を使用しません。

= i_9_ - 256
于 2013-01-30T05:23:10.147 に答える
1

これを使用する:そして値の(〜)逆で

i_9_ - 256 & 0x7fffffff;

逆の逆〜(〜)

于 2013-01-30T05:12:31.523 に答える