二进制中1的个数

来源:互联网 发布:mac for word审阅 编辑:程序博客网 时间:2024/06/07 01:11

题目描述:

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

答案:

# -*- coding:utf-8 -*-class Solution:    def NumberOf1(self, n):        # write code here        return sum([(n>>i & 1) for i in range(0,32)])
解析:>>二进制位右移,&按位与(二进制位都为1时结果为1),1的二进制表示为[0000 0000 0000 0000 0000 0000 0000 0001],n的32位通过右移的方式每一位和1进行“与”操作,从而得到n的二进制中1的个数,并相加。(位操作是用补码计算的)

补充:

十进制转二进制

def original(number):    a = []    value = number    while value:        b = value%2        a.insert(0,b)        value = value//2    return a

负数原码转补码(a为原码)

def negative_complement(a):    length = len(a)    l = length    while l < 8:        a.insert(0,0)        l+=1    c = []    for i in a:        if i==1:            c.append(0)        elif i==0:            c.append(1)    c[7] = 1    return c


原创粉丝点击