Java 如何舍入最重要的位?

Java 如何舍入最重要的位?,java,bit-manipulation,Java,Bit Manipulation,因此,在Java中,我有: long value = 1324623451867855123L 我需要36个最低有效位,最高有效位可以被抛出。在我的头脑中,我可以使用逐位和 long rightMost36Bits = value & 0xFFFFFFFFFL 这将给我底部的36位。但是没那么辛苦。我错过了什么 编辑 固定打字错误,表示和的& Edit2 我真的想要最下面的10位小数。所以我应该使用%1000000000。抱歉过度设计解决方案:) 该方程的结果是1244425243

因此,在Java中,我有:

long value = 1324623451867855123L 
我需要36个最低有效位,最高有效位可以被抛出。在我的头脑中,我可以使用逐位和

long rightMost36Bits = value & 0xFFFFFFFFFL
这将给我底部的36位。但是没那么辛苦。我错过了什么

编辑

固定打字错误,表示和的
&

Edit2

我真的想要最下面的10位小数。所以我应该使用
%1000000000
。抱歉过度设计解决方案:)


该方程的结果是12444252435。那不是我想要的。我希望更像是451867855132
^
是按位异或。你想要

  value & 0xFFFFFFFFFL;

用于按位和,以丢失高阶位。异或将保留高阶位,同时反转36个低阶位。并将高阶位设置为零,并保留低阶位。

^
是按位异或。你想要

  value & 0xFFFFFFFFFL;

用于按位和,以丢失高阶位。异或将保留高阶位,同时反转36个低阶位。并将高阶位设置为零,并保留低阶位。

该值应为&0xFFFFFFFL。您使用了^XOR。

应该是value&0xfffffffl。您使用了^,它是XOR。

查看MSB和LSB处理,但不计算它,1324623451867855123L&0xFFFFFFFL不能是451867855132。。。一个是奇数,一个是偶数,所以你翻转了低阶位。考虑重新检查你的预期结果。(编辑:使用MS Calculator我得到12444252435)听起来你想要的是MOD 10000000000l,而不是和fffffffff lso你想要N个最低有效十进制数字吗?这与你原来的问题大不相同。是的,是N个最低有效小数位数。我愿意四舍五入到最接近的位长度(在本例中为36)。你们是对的,输入答案(使用mod),我给你们打分。。。我想把整个问题都搞砸了。请看一下MSB和LSB处理而不进行计算,1324623451867855123L&0xFFFFFFFL不能是451867855132。。。一个是奇数,一个是偶数,所以你翻转了低阶位。考虑重新检查你的预期结果。(编辑:使用MS Calculator我得到12444252435)听起来你想要的是MOD 10000000000l,而不是和fffffffff lso你想要N个最低有效十进制数字吗?这与你原来的问题大不相同。是的,是N个最低有效小数位数。我愿意四舍五入到最接近的位长度(在本例中为36)。你们是对的,输入答案(使用mod),我给你们打分。。。想把整个问题都搞砸。