Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java长位';s操纵_Java_Bit Manipulation - Fatal编程技术网

Java长位';s操纵

Java长位';s操纵,java,bit-manipulation,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) 有谁能帮助我,如何在Ja

我有一个很长的数字,我想用以下方式处理它:

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 ll1 = l >>> 2;
要去掉除前两位以外的所有位,可以使用来计算位,然后再移开其余位

long ll2 = l >>> (Long.bitCount(ll1) - 2);
编辑:由于您要问的问题与从
long
s到long的位有关,因此您应该使用以下方法:

String bits = Long.toBinaryString(/* value */);
从这里开始,要去掉最后两位,可以使用简单的字符串操作。尝试为此使用
String.substring


希望这有帮助

要将一串比特转换为长比特,可以使用:

 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
然后,您可以使用位移位运算符
>
删除低位。例如:

long ll1 = l >>> 2;
要去掉除前两位以外的所有位,可以使用来计算位,然后再移开其余位

long ll2 = l >>> (Long.bitCount(ll1) - 2);
编辑:由于您要问的问题与从
long
s到long的位有关,因此您应该使用以下方法:

String bits = Long.toBinaryString(/* value */);
从这里开始,要去掉最后两位,可以使用简单的字符串操作。尝试为此使用
String.substring


希望这有帮助

请更新问题以更准确地反映您的问题;现在你问的与你想要的相反。请更新问题以更准确地反映你所问的;现在你问的和你想要的正好相反。谢谢。对不起,我应该提一下,我没有像字符串一样长。从那以后,我想得到一些东西。我只是以它们为例。从这段时间我想得到最后两位(从L到R)。啊,好的。这是一个完全不同的问题。您可以使用
Long.toBinaryString
函数从Long中获取二进制字符串,然后从Long中执行标准字符串操作以操作位。您可以在这里查看所有长方法的文档:谢谢。我也找到了另一种方法。谢谢。对不起,我应该提一下,我没有像字符串一样长。从那以后,我想得到一些东西。我只是以它们为例。从这段时间我想得到最后两位(从L到R)。啊,好的。这是一个完全不同的问题。您可以使用
Long.toBinaryString
函数从Long中获取二进制字符串,然后从Long中执行标准字符串操作以操作位。您可以在这里查看所有长方法的文档:谢谢。我也找到了另一种方法。
 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