剑指offer 二进制中1的个数(Python)

二进制中1的个数

http://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8

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

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务