然后说一下这个,78 – 统计二进制中1的个数

将一个整数转换为二进制形式,统计二进制数中1的个数,如果是负数,按补码统计1的个数

def oneNumber(n):
    print(bin(n))
    if n < 0:
        # 在python中,负数与0xFFFFFFFF按位与,实际上按照语法,负数在做与操作之前会先把自己转为计算机中的二进制表示形式,然后与0xFFFFFFFF做与操作,也就变成了一个二进制表示的无符号数
        n = n & 0xffffffff
    print(bin(n))
    print(len(bin(n)))
    # 去掉开头的0b
    m = len(bin(n)) - 2
    count = 0
    '''
    1101 = 13
    
    1000 = 8  count++
    0100 = 4  count++
    0000 = 0  
    0001 = 1  count++
    '''
    for i in range(0, m):
        # 具体流程如上
        if n & 2 ** i != 0:
            count += 1
            
    return count

print(oneNumber(13))
print(oneNumber(-1))

0b1101

0b1101

6

3

-0b1

0b11111111111111111111111111111111

34

32

正文完