>>演算子を右シフトに使用していました。>>> に置き換えたところ、同じ結果が見つかりました。したがって、これら2つが基本的に等しいかどうかはわかりません。
質問する
2922 次
3 に答える
11
>>
Java チュートリアルで説明されているように、算術 (>>>
符号付き) 右シフト、論理 (符号なし) 右シフトです。負の値で試してみると、違いがわかります。
于 2012-07-07T13:35:56.143 に答える
6
最初の演算子は値を符号拡張し、符号ビットのコピーをシフトインします。2 つ目は常にゼロにシフトします。
この理由は、ビット操作を行う目的で符号なし整数をエミュレートし、Java の符号なし整数型の欠如を部分的に補うためです。
于 2012-07-07T13:36:32.297 に答える
3
これは本当によく説明しています。同じページに簡単な例もあります。
しかし、実際の簡単な要約については、次のとおりです。
<< signed left shift - shifts a bit pattern to the left
0 0 1 1 1 => 0 1 1 1 0
>> signed right shift - shifts a bit pattern to the right
0 0 1 1 1 => 0 0 0 1 1
>>> unsigned right shift - shifts a zero into the leftmost position
1 1 1 0 => 0 0 1 1
~ unary bitwise complement operator
A | Result
0 | 1
1 | 0
0 | 1
1 | 0
& bitwise and
A | B | Result
0 | 0 | 0
1 | 0 | 0
0 | 1 | 0
1 | 1 | 1
^ xor
A | B | Result
0 | 0 | 0
1 | 0 | 1
0 | 1 | 1
1 | 1 | 0
| inclusive or
A | B | Result
0 | 0 | 0
1 | 0 | 1
0 | 1 | 1
1 | 1 | 1
于 2012-07-07T13:42:00.763 に答える