【发布时间】:2017-11-05 18:23:28
【问题描述】:
我在一本书中找到了以下代码:
def count_bits(x):
num_bits = 0
while x:
num_bits += x&1
x >>= 1
return num_bits
print(count_bits(12))
我不明白这一行 (num_bits += x&1)
假设我输入 12 (1100),第一个字符 ("1") 被计算在内。但是接下来有一个右移,1100变成了0110。如果计数器移动到第二个字符,1不会被计数两次吗?
【问题讨论】:
-
作为参考,是“Python 编程面试的要素”第 23 页 :-) 吗?
-
@AzizAlto 是的!我现在正在读这本书。其中一位作者的名字是 Aziz,就像你的把手一样。是巧合还是……?
-
纯属巧合!碰巧我昨天正在通过确切的例子浏览这本书,祝你好运! :-]