加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 16:45:51 所属栏目:Java 来源:网络整理
导读:这似乎很简单,但是我找不到答案.如果我有一个int X,在 Java中从这个int获得最低有效位的最佳方法是什么? 解决方法 这应该适用于所有非负N 33 32: x ((1 N) - 1) 值得详细说明如何对N == 31和N == 32有效.对于N == 31,我们得到1 N == Integer.MIN_VALUE.当
这似乎很简单,但是我找不到答案.如果我有一个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位的值).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读