我正在使用以下技巧来遍历 int 的位集:
while (b != 0)
{
c = b & (0 - b);
//Do something...
b = b ^ c;
}
以数字 4128(二进制 0001000000100000)为例,它工作正常,因为 c 的值是 32 和 4096。
但是,我想要这些值的位置,而不是实际值,这些是 5 和 12。
是否有额外的代码行可以插入到返回位置的循环中?
最佳答案
您可以使用 Integer.numberOfTrailingZeros
获取位索引,如下所示:
while (b != 0)
{
c = b & (0 - b);
int index = Integer.numberOfTrailingZeros(c);
//Do something...
b = b ^ c;
}
关于java - 获取整数中设置位的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15430050/