美文网首页
剑指offer 二进制中1的个数 python

剑指offer 二进制中1的个数 python

作者: 霍尔元件 | 来源:发表于2019-04-24 11:34 被阅读0次

先上代码

class Solution2:
    def NumberOf1(self, n):
        n = n & 0xffffffff if n < 0 else n # 把负数转换成一个正数 这个正数的二进制表示和附属的补码是一样的
        cnt = 0
        while n: # 只要n不为0 就必然存在1在某些位置上
            n = n & (n - 1) # 消灭掉n中最靠右的一个1
            cnt += 1
        return cnt

这里面让人疑惑的就是python的补码
实际上python应该是没有补码的
怎么能够手工获得一个负数的补码表示呢

image.png

相关文章

网友评论

      本文标题:剑指offer 二进制中1的个数 python

      本文链接:https://www.haomeiwen.com/subject/pnwwgqtx.html