2012-05-13 15 views
0

私は長い番号を持っていると私はそれが道を以下にビット操作したい:Javaのロング - ビットの操作

Long l = "11000000011" (long l 's bit representation) 

Long ll1 = "110000000" (remove last two bits from l and convert to Long) 

Long ll2 = "11" (keep last two bit's of l and discard other bits and convert to Long) 

誰もが高速な方法でJavaでこれを行う方法を、私を助けることができますか?ロングにビットの文字列を変換するには

+0

java7を使用していますか? – esej

+1

[何を試しましたか?](http://whathaveyoutried.com) –

+0

質問を更新して、質問している内容をより正確に反映させてください。今すぐあなたはあなたが望むものと反対のものを求めています。 – templatetypedef

答えて

3

、あなたがLong.parseLongを使用することができます。

long l = Long.parseLong("11000000011", 2); 

あなたはその後、下位ビットをオフにドロップするビットシフト演算子>><<、および>>>を使用することができます。たとえば:

long ll1 = l >>> 2; 

すべてが、上位2ビットをオフに削除するには、残りのビットをオフにシフトし、その後、ビットをカウントするLong.bitCountを使用することができます。

long ll2 = l >>> (Long.bitCount(ll1) - 2); 

EDIT:から

String bits = Long.toBinaryString(/* value */); 

:あなたが求めている問題は、long型のビットにlong sから行くと関係していますので、あなたは、このためにLong.toBinaryStringメソッドを使用する必要があります最後の2つのビットを削除するには、単純な文字列操作を使用できます。これにはString.substringをお試しください。

希望すると便利です。

+0

ありがとうございます。申し訳ありませんが、私はビットの文字列ではないロングを持っていることを言及する必要があります。そしてそのロングから、私はビットを取得したい。私は例としてそれらを使用します。 – Arpssss

+0

それから私は最後の2ビット(LからRへ)を得たいと思っています。 – Arpssss

+0

ああ、大丈夫です。それはまったく異なる質問です。 'Long.toBinaryString'関数を使ってlongからバイナリ文字列を取得し、そこから標準の文字列操作を行ってビットを操作することができます。ここでは、すべてのLongメソッドのドキュメントを参照できます。http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html#toBinaryString(long) – templatetypedef

0
long l = Long.parseLong("11110", 2) ; 
long ll1 = l >>> 2; 
long lb = (l & 1) ; last bit 
long ls = l >>> 1; 
long lb1 = (ls & 1) ; bit before last bit