为什么我的位计数功能不能用于负数? (蟒蛇)

时间:2014-10-26 20:43:22

标签: python binary bitwise-operators

我是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位表示。感谢您的帮助。

0 个答案:

没有答案