class Solution:
    def NumberOf1(self, n):
        # write code here
        # 补码:正数不变,负数是它的正数的反码加一
        # n & 0xFFFFFFFF
        # way 1
        '''
        count = 0
        for i in str(bin(n)):
            if i == '1':
                count += 1
        return count
        '''
        # way 2
        '''
        count = 0
        for i in range(32):
            mask = 1 << i
            if n & mask != 0:
                count += 1
        return count
        '''
        # way 3
        count = 0
        while n:
            n = n & (n-1)
            count += 1
            n = n & 0xFFFFFFFF
        return count