微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/java/124391.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐