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

先上代码

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
全部评论

相关推荐

废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 14:11
很喜欢小米的新车,校招薪资每月22k,攒多久能买?
测试糕手手:别看工资,先看现金流存款。有50W存款以上再考虑,车是消耗品,选适合自己的重要。你有钱就当我没说过
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务