java – 从内部获取最低有效位

前端之家收集整理的这篇文章主要介绍了java – 从内部获取最低有效位前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这似乎很简单,但是我找不到答案.如果我有一个int X,在 Java中从这个int获得最低有效位的最佳方法是什么?

解决方法

这应该适用于所有非负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!)<<运算符只能通过右侧mod 32进行移动.相反,如果要避免对该情况进行测试,可以使用:

x & ((int)(1L << N) - 1)

通过移动很长时间,您将获得完整的32位移动,在将其转换为int后,您将获得0.减1将给您-1和x& -1对于任何int值x只是x(x是x的低32位的值).

原文链接:https://www.f2er.com/java/124391.html

猜你在找的Java相关文章