计算给定整数中的1的数量

Nei*_*eil 7 python python-2.7

如何计算给定整数的二进制表示中的1的数量.

说给你一个数20,这是10100二进制,所以那些数为2.

Cai*_*von 10

您正在寻找的是汉明重量,并且有很多算法可以做到.这是另一个简单的问题:

def ones(n):
    w = 0
    while (n):
        w += 1
        n &= n - 1
    return w
Run Code Online (Sandbox Code Playgroud)

  • `a &= b` 等价于 `a = a & (b)`。`&` 是 [按位 AND 运算符](http://docs.python.org/2/reference/expressions.html#binary-bitwise-operations)。 (2认同)

Ter*_*ryA 5

使用很棒的collections模块。

>>> from collections import Counter
>>> binary = bin(20)[2:]
>>> Counter(binary)
Counter({'0': 3, '1': 2})
Run Code Online (Sandbox Code Playgroud)

或者您可以使用内置功能count()

>>> binary = bin(20)[2:]
>>> binary.count('1')
2
Run Code Online (Sandbox Code Playgroud)

甚至:

>>> sum(1 for i in bin(20)[2:] if i == '1')
2
Run Code Online (Sandbox Code Playgroud)

但是最后一种解决方案比使用慢 count()

  • 即使是创造“ Counter”的人也没有用它来解决这个问题; (2认同)
  • 是的,但简单胜于复杂!我之前也不在开玩笑,贡献收藏模块的Raymond Hettinger回答了这个问题 (2认同)

Yar*_*kee 5

>>> num = 20
>>> bin(num)[2:].count('1')
2
Run Code Online (Sandbox Code Playgroud)