统计整数的二进制数中1的个数
1、题目
给定一个整数,统计其二进制表示里有多少个1。
2、分析
- 方法1:循环迭代该数的二进制的每一位,复杂度是 o(log2 n),n就是该整数
-
def count1(num): lens = 0 while num != 0: lens += num & 1 num = num >>= 1 return lens
-
- 方法2:复杂度仅仅是1的个数。方法是采用位运算抹去0不需要处理。
-
def count(self,num): lens = 0 while num != 0: num = num & (num - 1) # 本质含义是抹去了0不考虑 lens += 1 return lens
-
题外话
python 可以直接通过bin()方法获得一个树的二进制表示,返回值是一个字符串,因此
bin(x).count('0')也可以做到上述结果