我有一个很长的数字,我想通过以下方式操作它:
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 中快速完成此操作?
最佳答案
要将位字符串转换为长整型,可以使用 Long.parseLong
:
long l = Long.parseLong("11000000011", 2);
然后您可以使用位移运算符 >>
, <<
,和>>>
丢弃较低位。例如:
long ll1 = l >>> 2;
要删除除前两位之外的所有内容,您可以使用 Long.bitCount
对位进行计数,然后移走剩余的位。
long ll2 = l >>> (Long.bitCount(ll1) - 2);
编辑:因为您提出的问题与 long
相关。 s 到长整型的位,您应该使用 Long.toBinaryString
方法:
String bits = Long.toBinaryString(/* value */);
从那里,要删除最后两位,您可以使用简单的字符串操作。尝试使用String.substring
为此。
希望这有帮助!
关于Java Long - 位的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10575559/