统计给定整数中1的数量

12 投票
10 回答
18203 浏览
提问于 2025-04-17 19:50

如何计算一个整数在二进制表示中有多少个1。

比如说,你给了一个数字 20,它的二进制表示是 10100,所以里面有2个1。

10 个回答

5

在编程中,有时候我们会遇到一些问题,像是代码运行不正常或者出现错误。这种时候,我们可以去一些技术论坛,比如StackOverflow,去寻找解决方案或者向其他人请教。

在这些论坛上,很多人会分享他们的经验和解决办法。比如,有人可能会遇到类似的问题,然后他们会把自己的解决过程写下来,帮助其他人。这样,大家就可以互相学习,避免重复犯错。

总之,技术论坛是一个很好的资源,可以帮助我们解决编程中遇到的各种问题。

>>> num = 20
>>> bin(num)[2:].count('1')
2
11

你要找的这个东西叫做 汉明重量,有很多算法可以用来计算它。这里有一个简单的方法:

def ones(n):
    w = 0
    while (n):
        w += 1
        n &= n - 1
    return w
7

使用很棒的 collections 模块。

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

或者你可以用内置的函数 count()

>>> binary = bin(20)[2:]
>>> binary.count('1')
2

甚至可以这样做:

>>> sum(1 for i in bin(20)[2:] if i == '1')
2

不过最后这个方法比用 count() 要慢。

撰写回答