二进制计算

显然,一个很简单的思路是一个一个数

class Solution:
    def NumberOf1(self, n):
        # write code here
        if n<0:
            n=n&0xffffffff
        return bin(n).count("1")

位与

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路很巧妙,可参考牛客二进制中1的个数讨论

class Solution:
    def NumberOf1(self, n):
        # write code here
        count=0
        if n < 0:
            n = n & 0xffffffff
        while n!=0:
            n=n&(n-1)
            count+=1
        return count

注意,使用java或者c++写时不需if判断,因为他两默认转的就是补码形式
在这里插入图片描述
而python不是,需要与0xffffffff位与才能变成补码形式
在这里插入图片描述