相关疑难解决方法(0)

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

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

00000111
Run Code Online (Sandbox Code Playgroud)

设置三位.

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

algorithm binary bit-manipulation hammingweight iec10967

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

计算O(1)中的汉明重量

在二进制表示中,汉明重量是1的数.我遇到了网络并找到了一个O(1)答案:

v = v - ((v>>1) & 0x55555555);
v = (v & 0x33333333) + ((v>>2) & 0x33333333);
int count = ((v + (v>>4) & 0xF0F0F0F) * 0x1010101) >> 24;
Run Code Online (Sandbox Code Playgroud)

但是我不太了解算法,无法在任何地方找到它的描述.有人可以解释一下,尤其是最后一行(什么是*0x1010101然后>> 24意味着什么)?

algorithm bit-manipulation

21
推荐指数
1
解决办法
2万
查看次数