题目描述
输入一个整数,输出该数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