计算整数C中的1的数量

时间:2017-09-17 21:46:44

标签: c bits

在不使用for或while循环且不使用大于0xFF的常量的情况下,计算C中32位整数x中1的数量的最佳方法是什么?

我想到的是将x 24向右移动并计算移位整数中的1到1并将其存储在变量计数中。然后,将x 16向右移动并将移位计数乘以移位整数中的1的数量,依此类推。

那么,任何更好的解决方案的想法?

1 个答案:

答案 0 :(得分:1)

您可以将所有d位数中的1的数量制成表格。这会得到一个2^d条目表,每个条目的值不超过d<255)。

现在,您可以在d位的切片中剪切数字,并查找所有切片的计数。

空间/操作次数之间的良好折衷可能是d=48切片,表格大小= 16)。