统计给定整数中1的数量
如何计算一个整数在二进制表示中有多少个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()
要慢。