题目描述:给定一个整数,输出这个整数的二进制中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