5

>>演算子を右シフトに使用していました。>>> に置き換えたところ、同じ結果が見つかりました。したがって、これら2つが基本的に等しいかどうかはわかりません。

4

3 に答える 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 に答える