相关疑难解决方法(0)

如何计算32位整数中的设置位数?

代表数字7的8位看起来像这样:

00000111
Run Code Online (Sandbox Code Playgroud)

设置三位.

什么算法来确定32位整数中的设置位数?

algorithm binary bit-manipulation hammingweight iec10967

838
推荐指数
31
解决办法
52万
查看次数

这个功能有什么作用?

我正在读一个包含以下功能的程序,即

int f(int n) {
    int c;
    for (c=0;n!=0;++c) 
        n=n&(n-1);
    return c;
}
Run Code Online (Sandbox Code Playgroud)

我不太明白这个功能打算做什么?

c c++

20
推荐指数
4
解决办法
2673
查看次数

n位整数中有多少1?

我今天遇到的一个有趣的问题:什么是计算n位整数中1的数量的最快方法?是否有可能击败O(n)?

例如:

42 = 0b101010 => 3 ones
512 = 0b1000000000 => 1 one
Run Code Online (Sandbox Code Playgroud)

显然,天真算法只是简单计算.但是,有什么技巧可以加快速度吗?

(这仅仅是一个学术问题;通过实施这样的策略没有预期的性能提升.)

language-agnostic bit-manipulation

4
推荐指数
1
解决办法
1476
查看次数