# coding=utf-8
"""
question:
将一个整数转换为二进制形式,统计二进制中 1 的个数,如果是负数,按补码统计。
设一个整数为 4 个字节
"""
def count_bin_one(num):
if num < 0:
num &= 0xffffffff # 将内存中负数的二进制变成对应正数
# bin(num)得到一个字符串,带进制标识故要 -2
bits = len(bin(num)) - 2 # 计算二进制数的位数
count = 0 # 计数值
for i in range(bits):
if num & 2 ** i: # 按位相与,判断是否为 1
count += 1
return count
if __name__ == '__main__':
print(count_bin_one(-1))