Java Long - 位的操作

标签 java bit-manipulation

我有一个很长的数字,我想通过以下方式操作它:

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/

相关文章:

ios - 如何分解涉及移位运算符的表达式? swift

C - 非 2 的幂数的模数按位运算的算法

c++ - 在 C++ 中输入的值中缺少元素

c - C语言中函数指针的理解

java - JLabel 不会显示 Getter 的正确值

java - 自动向数组添加元素

java - 在 Java 中从 SOAPBody 获取原始 XML(对于 Camel 流?)

java - 类型 'List<Object?>' 不是类型转换中类型 'List<>' 的子类型

java - 用于子列表/部分匹配的 Hamcrest 匹配器?

binary - 位和按位运算的用途是什么?