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位的值).

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...