代码之家  ›  专栏  ›  技术社区  ›  KushalP

为什么计数位数有用?

  •  5
  • KushalP  · 技术社区  · 15 年前

    我看到过许多关于计算 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 回复  |  直到 15 年前
        1
  •  5
  •   Paul R    15 年前

    你可以把一串比特看作 set ,其中1表示对应元素集的成员身份。因此位计数给了你 population count 一套。

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

        2
  •  0
  •   David Thornley    15 年前

    如果您正在滚动自己的奇偶校验方案,您可能需要计算位的数量。(一般来说,当然,我宁愿用别人的)如果你在模仿一台旧电脑,想知道它在原始电脑上运行的速度有多快,有些电脑有一些乘法指令,它们的速度随1位的数目而变化。

    在过去十年左右的时间里,我想不出任何时候我想做这个,所以我怀疑这更多的是一个编程练习,而不是实际需要。

        3
  •  0
  •   Paul Nathan    15 年前

    以一种讽刺的方式,它对面试问题很有用,因为它需要一些详细的低级思维,而且似乎在comp-sci课程中不作为标准算法来教授。

        4
  •  0
  •   John R. Strohm    15 年前

    有些人喜欢用位图来表示“东西”的存在/不存在。

    有一个简单的方法可以隔离一个单词中最低有效的1位,将其转换为下面位中的1位字段,然后通过计算1位来找到位号。

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

    注意工作。

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

    它设置了3位,所以第2位是原始字中最不重要的1位