如何完善最重要的位?

时间:2011-12-23 07:03:59

标签: java bit-manipulation

所以在Java中,我有:

long value = 1324623451867855123L 

我需要36个最低有效位,MOST有效位可以被抛出。在我的脑海中,我可以使用按位而且只是做

long rightMost36Bits = value & 0xFFFFFFFFFL

这将给我最低36位。但是......不那么有点......我错过了什么?

**编辑**

修正了拼写错误,意思是&为和。

EDIT2

真想要底部十位小数。所以我应该使用%10000000000.抱歉过度工程解决方案:) 该等式的结果是 12444252435 ....这不是我想要的。我想要更像 451867855132

3 个答案:

答案 0 :(得分:5)

那应该是价值& 0xFFFFFFFFFL。你使用的是XOR。

答案 1 :(得分:2)

^是按位异或。你想要

  value & 0xFFFFFFFFFL;

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

答案 2 :(得分:0)

在Java中,默认的整数文字将是int类型,因此您必须附加L后缀以告知该数字为long

bottom10digits = value % 10000000000L;