我是trying to implement一个函数,它计算整数二进制表示中的1。为什么它对负整数不起作用?
def bit_count(n):
bits = 0
while n != 0:
bits += (n&1)
n = n >> 1
return bits
我已经做了一些调查,发现使用bin(n)并在结果字符串中计算1将会起作用,但我想找出为什么这个版本不起作用。
谢谢!
编辑:澄清一下,它可以立即解决大+整数问题,但无限期地运行任何整数。
后续问题:这个任务在Python中是不可能的,因为它代表负数?
分辨率:为了解决问题,我使用了一个计数器,使得while循环最多运行32次,即得到负数的32位表示。感谢您的帮助。