2012-11-14 12 views
6

可能性の重複:
What does >> and >>> mean in Java?<< or > >>とはJavaの意味ですか?

は、私はいくつかのJavaコードでいくつかのなじみのないシンボルにわたって走り、コードが正しくコンパイルおよび機能ながら、私はまさに山括弧へと混乱していますこのコードで行っています。これらの神秘的な探してブラケットが何をしますか

public void append(int source, int kBits) 
    { 
     if (kBits < _avail) 
     { 
      _word = (_word << kBits) | source; 
      _avail -= kBits; 
     } 
     else if (kBits > _avail) 
     { 
      int leftover = kBits - _avail; 
      store((_word << _avail) | (source >>> leftover)); 
      _word = source; 
      _avail = NBits - leftover; 
     } 
     else 
     { 
      store((_word << kBits) | source); 
      _word = 0; 
      _avail = NBits; 
     } 
    } 

:私は、com.sun.java.help.search.BitBufferに以下となっているフラグメントをコードを発見しましたか?それはほぼのように見えるC + +の挿入/抽出が、私はJavaがそのようなものを持っていないことを知っている。

また、私はグーグルで試してみましたが、何らかの理由でGoogleがそれらを引用符で囲んでも、角括弧が見えないようです。

+3

これらはビットシフト演算子です。[ここ](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html)より詳しく解説しています。 [ここをクリック](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html) – jlordo

+0

追加するだけで、ビットを右シフトするとは、ビットシフトの数で2のべき乗と<<左のビットシフトは、2の累乗に2を乗じたビットシフトの数を2倍にすることを意味します。 –

答えて

20

ビット単位のビットシフト演算子で、指定されたビット数をシフトすることで動作します。それらの使用方法はtutorialです。

署名された左シフト演算子「< <」は左

にビットパターンをシフト符号付き右シフト演算子「>>」 右にビットパターンをシフトさせます。

符号なし右シフト演算は「>>>」 左端位置ORACLE DOCから直

+0

コードは、符号なしの右シフトである '>>>'も使用しています。 – TheZ

+0

@TheZ:ありがとう!関連テキストの更新。 – kosa

4

にゼロをシフトします。

署名された左シフト演算子「< <」が左にビットパターンをシフトし、 および署名された右シフト演算は、「>>」 右にビットパターンをシフトさせます。ビットパターンは、左側のオペランドによって与えられ、右側のオペランドによってシフトされる位置の数は です。符号なし 右シフト演算子 ">>>"は、最も左の位置にある にシフトしますが、 ">>"の後の最も左の位置は符号拡張に依存します。

関連する問題