从一个整数中获取n个最低有效位

机翼

这似乎很简单,但是我找不到答案。如果我有一个int X,那么在Java中从该int获取N个最低有效位的最佳方法是什么?

泰德·霍普(Ted Hopp):

这应适用于所有非负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 & -1x适用于任何intx(并且x是的低32位的值x)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从一个整数形成位模式

有效的方式来从一个更大的范围内删除范围的列表中的元素

如何从一个活动传递有效位图的目录到其他?

有效地从一个表中删除与另一个表不匹配的行[MySQL]

有没有一种有效的方法可以将元素从一个索引获取到集合中的另一个索引,而无需将其更改为ArrayList?

Java:从char中减去'0'得到一个整数...为什么这样做有效?

最有效的方法来获取Python中整数的第一个数字?

如何在C ++中获得整数的j个最重要的最高有效位?

在一个位置或更低的位置计数设置位的有效方法是什么?

SQL:从一个日期列生成有效日期和有效日期

应用一组N个函数中的第一个有效函数

C#从第一个有效位开始获取uint32的高4位

Django Rest Framework“需要一个有效的整数。”?

加载到16位寄存器中,第一个或第二个寄存器中的最低有效位?

在R中的整数中找到最低有效置位的最快/最有效方法是什么?

C-如何获取Char中的4个最低有效位

如何从Excel中的数字中获取第一个有效数字?

从n个排序的子列表中创建一个排序的列表(有效)

将有效载荷从一个传奇传递到另一个传奇

有效的MongoDB查询以从一个集合中获取报告并插入到另一个集合中

有效地获取javascript中的最高和最低有效位

将n个最低有效位设置为1

在javascript中获取数字的最低有效位的最有效方法是什么?

Base64解码错误最后一个单元的有效位不足

访问整数的最低有效位的最快方法?

有没有一种更有效的方法来从一行中获取值并将其应用于同一列中的下一个“ n”行?大熊猫

将数据从一个表移动到多个表的有效方法

在没有硬编码有效负载的情况下无法从一个部分中抓取所有书籍

有符号整数的最低有效位 (LSB) 的否定