Python二进制求和

时间:2016-01-05 15:29:12

标签: python performance binary sum sage

在查看一些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中实现这一目标?转换为字符串和返回都很慢,所以我想避免这些。对此有快速解决方案吗?

1 个答案:

答案 0 :(得分:2)

如果您要查看非零位的数量:

bin(5).count("1")