为什么计算位数有用?

时间:2010-04-13 15:48:45

标签: language-agnostic computer-science bit-manipulation bits bitcount

我看到了很多关于计算insert type of输入中设置位数的问题,但为什么它有用?

对于那些寻找有关位计数的算法的人,请看这里:

  1. Counting common bits in a sequence of unsigned longs
  2. Fastest way to count number of bit transitions in an unsigned int
  3. How to count the number of set bits in a 32-bit integer?

4 个答案:

答案 0 :(得分:5)

您可以将位字符串视为set,其中1表示相应元素的集合的成员资格。因此,位数为您提供了集合的population count

实际应用包括压缩,加密和纠错码。参见例如wikipedia.org/wiki/Hamming_weightwikipedia.org/wiki/Hamming_distance

答案 1 :(得分:0)

如果您正在滚动自己的奇偶校验方案,则可能需要计算位数。 (一般来说,当然,我宁愿使用其他人的。)如果你要仿效一台旧电脑,并想跟踪它在原版上运行的速度,有些会有乘法指令,其速度随数字而变化1位。

在过去的十年左右的时间里,我无法想到我想要这么做,所以我怀疑这不仅仅是一种编程练习而非实际需要。

答案 2 :(得分:0)

具有讽刺意味的是,它对于面试问题很有用,因为它需要一些详细的低级思维,而且似乎并不像comp sci课程那样被教授为标准算法。

答案 3 :(得分:0)

有些人喜欢使用位图来表示是否存在“东西”。

有一个简单的黑客可以隔离一个字中最不重要的1位,将其转换为位于其下方位的1的字段,然后您可以通过计算1位来找到位数。

countbits((x XOR (x-1)))-1;

注意它的工作。

Let x =     00101100
Then x-1 =  00101011
x XOR x-1 = 00000111

设置了3位,因此位2是原始字

中最不重要的1位