统计整数的二进制数中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')也可以做到上述结果

 

posted @ 2020-06-04 11:43  r1-12king  阅读(216)  评论(0编辑  收藏  举报