在查看一些SageMath代码时,我遇到了以下代码段:
bits = n - sum(n.digits(2))
由于我不知道digits
做了什么,所以我继续尝试使用n = 5
的值:
n = 5
print(n.digits(2))
[1, 0, 1]
如果我运行完整的行,结果(显然)
n = 5
print(sum(n.digits(2)))
2
我怎样才能在纯Python中实现这一目标?转换为字符串和返回都很慢,所以我想避免这些。对此有快速解决方案吗?
答案 0 :(得分:2)
如果您要查看非零位的数量:
bin(5).count("1")