gpt4 book ai didi

Python 位操作

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:58 26 4
gpt4 key购买 nike

我在一本书中找到了以下代码:

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不就被计数两次了吗?

最佳答案

x&1 检查最右边的位是否为 1

所以对于你的例子,它会做:

1100 & 0001 # 0
0110 & 0001 # 0
0011 & 0001 # 1
0001 & 0001 # 1

并正确返回 2。通过右移,您从右到左计算位数,直到最后一次移位导致 0000 并中断循环

关于Python 位操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47125036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com