剑指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
全部评论

相关推荐

2024-12-26 20:46
复旦大学 C++
国棉17厂丶小王:拿了offer的那个周末晚上去网吧通宵,去网吧不知道玩什么刷了lc的每日一题,然后试着第一次打开了三角洲行动,从此少了一个已经刷了700道题的lc用户,但是烽火地带多了一只🐭🐭
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务