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


79 - 反转单向链表

发布了208 篇原创文章 · 获赞 249 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_29339467/article/details/105032513
78