“如何求二进制中1的个数”(python)

题目描述:给定一个整数,输出这个整数的二进制中1的个数。例如:给定7,其二进制表示111.因此输出结果为3.

方法一:移位法

可以采用位操作来完成。具体思路如下:首先,判断这个数的最后一位是否为1,如果为1,那么计数器加1,然后右移丢掉最后一位,,循环执行该操作,直到这个数等于0为止,在判断二进制最后一位是否为1时,可以采用与运算来达到这个目的。

def countOne(n):
    count = 0
    while n > 0:
        if (n % 1) == 1:  # 判断最后一位是否为1
            count += 1
        n >> =  1
    return count

if __name__ == "__main__":
    print(countOne(7))
    print(countOne(8))

方法二:与操作法

给定一个数n,每一次进行n&(n-1)计算,其结果中都会少一位0,而且是最后一位。

def countOne(n):
    count = 0  # 用来计数
    while n > 0:
        if n!= 0:
            n = n &(n - 1)
        count += 1
    return count

 

你可能感兴趣的:(“如何求二进制中1的个数”(python))