0

長い数値があり、次の方法でビットを操作したい:

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でこれをすばやく行う方法を教えてください。

4

2 に答える 2

3

ビットの文字列を long に変換するには、次を使用できますLong.parseLong

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

その後、ビット シフト演算子>><<、およびを使用>>>して、下位ビットを削除できます。例えば:

long ll1 = l >>> 2;

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

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

編集:あなたが求めている質問は、longsからlongのビットに移動することに関係しているLong.toBinaryStringため、これにはメソッドを使用する必要があります:

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

そこから、最後の 2 ビットを削除するには、単純な文字列操作を使用できます。これに使っString.substringてみてください。

お役に立てれば!

于 2012-05-13T22:00:17.653 に答える
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
于 2012-05-13T22:37:16.753 に答える