二进制中1的个数

来源:互联网 发布:康有为 梁启超 知乎 编辑:程序博客网 时间:2024/05/16 07:53

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

源码:
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。

反码:
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

补码:
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)


# -*- coding:utf-8 -*-#当n为负数时,在计算机中int数由32位二进制数表示,负数的补码由其二进制先取反后加1,#此处我们先直接算出其十进制补码的数值,再转换为二进制数进行计算"""int范围内,负数(十进制)n的二进制的补码有两种形式求得    1. pow(2, 32) + n, 然后再转化为二进制,即为二进制的补码    2. 直接用二进制求补码两种方式得到的补码相同"""class Solution:    def NumberOf1(self, n):        # write code here        if n < 0:            # 转化为十进制的补码            n = pow(2, 32) + n        # bin 用来求二进制,用count统计1的个数        return (bin(n)).count("1")



0 0
原创粉丝点击