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.parseLong

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

然后,您可以使用位移运算符>><<>>>删除低位。例如:

long ll1 = l >>> 2;

要删除除前两位以外的所有位,您可以使用Long.bitCount对位进行计数,然后移出剩余位。

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

编辑:由于您要问的问题与从longs 到 long 的位有关,因此您应该使用以下Long.toBinaryString方法:

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

从那里,要删除最后两位,您可以使用简单的字符串操作。尝试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 回答