所以在Java中,我有:
long value = 1324623451867855123L
我需要36个最低有效位,MOST有效位可以被抛出。在我的脑海中,我可以使用按位而且只是做
long rightMost36Bits = value & 0xFFFFFFFFFL
这将给我最低36位。但是......不那么有点......我错过了什么?
**编辑**
修正了拼写错误,意思是&为和。
EDIT2
真想要底部十位小数。所以我应该使用%10000000000.抱歉过度工程解决方案:) 该等式的结果是 12444252435 ....这不是我想要的。我想要更像 451867855132
答案 0 :(得分:5)
那应该是价值& 0xFFFFFFFFFL。你使用的是XOR。
答案 1 :(得分:2)
^
是按位异或。你想要
value & 0xFFFFFFFFFL;
用于按位AND以丢失高阶位。异或将保留高位,同时反转36个低位。 AND将高位设置为零并保留低位。
答案 2 :(得分:0)
在Java中,默认的整数文字将是int类型,因此您必须附加L后缀以告知该数字为long
bottom10digits = value % 10000000000L;