我看到了很多关于计算insert type of
输入中设置位数的问题,但为什么它有用?
对于那些寻找有关位计数的算法的人,请看这里:
答案 0 :(得分:5)
您可以将位字符串视为set
,其中1表示相应元素的集合的成员资格。因此,位数为您提供了集合的population count
。
实际应用包括压缩,加密和纠错码。参见例如wikipedia.org/wiki/Hamming_weight和wikipedia.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位