【发布时间】:2009-05-09 17:52:09
【问题描述】:
复制:
Best algorithm to count the number of set bits in a 32-bit integer?
假设你有一个号码。有没有办法计算该数字的二进制表示中等于 1 的位,而不是使用迭代?我的意思是,有没有办法使用一些按位运算符和掩码在恒定时间内做到这一点。我需要适用于 32 位和 64 位架构的解决方案。啊差点忘了,我需要C语言或者汇编也不错。
【问题讨论】:
-
FWIW,对于一个恒定大小的数字,迭代是恒定时间。
-
是的,虽然严格的提问者没有说它是固定长度的;对于任意位长度 n,它是正确的 O(n)。
标签: c assembly bit-manipulation bitmask