这似乎很简单,但是我找不到答案。如果我有一个int X,那么在Java中从该int获取N个最低有效位的最佳方法是什么?
这应适用于所有非负N < 33 32:
x & ((1 << N) - 1)
这是对这个如何工作的价值诠N == 31
和 。因为N == 32
N == 31
,我们得到了1 << N == Integer.MIN_VALUE
。当您从中减去1时,Java会默默地环绕到Integer.MAX_VALUE
,这正是您所需要的。 因为 N == 32
,1位被完全移出,所以 1 << N == 0
;然后 (1 << N) - 1 == -1
,全部设置为32位。
对于N == 32
,不幸的是,该命令不起作用,因为(感谢@zstring!)<<
操作符仅向右移动mod32 。相反,如果您要避免对此情况进行特殊测试,则可以使用:
x & ((int)(1L << N) - 1)
通过移位a long
,您可以得到完整的32位移位,将其强制转换回a后int
,您将得到0。减1会得到-1,并且x & -1
它x
适用于任何int
值x
(并且x
是的低32位的值x
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句