java - 获取整数中设置位的位置

标签 java bit-manipulation

我正在使用以下技巧来遍历 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/

相关文章:

java - 在 Amazon SQS 上获取 "peer not authenticated"异常

java - 计算不可淹没面积

java - 为什么cookieManager的cookies和Android中httpClient的cookies不一样?

algorithm - 具有给定 OR 值的对数

java - 对字符串进行位移位

java - 使用 powermockito 模拟 URL 类时出现问题

java - Docker 容器中带有 Java 环境的 Visual Studio 代码

java - 查找整数中的特定半字节

c - 高效计算三个无符号整数的平均值(无溢出)

c# - C# 中左移位的奇怪行为