美文网首页
剑指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