题目描述
输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。
示例1
输入

10

返回值

2

关于表示负数的补码你会发现它其实是 2^32 - n 的二进制表示。
例如:
1 的二进制为:
00000000 00000000 00000000 00000001
反码:
11111111 11111111 11111111 11111110
补码:
11111111 11111111 11111111 11111111
这里的补码表示-1,其刚好是 2^32 - 1 的二进制表示

代码实现:

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1(self, n):
        # write code here 
        key = 1 << 32
        if n >= 0:
            return bin(n).count('1')
        else:
            count = bin(key + n).count('1')
            return count