【笔试/面试】—— 计算一个数二进制形式中 0 的个数

  • (1)计算一个数二进制形式的位数:

    log2(n)+1

    numOfDigits = lambda n: int(math.log(n, 2)) + 1
  • (2)计算一个数二进制形式 1 出现的次数;

    对 x &= x-1; 进行统计计数

    def numOf1(n):
        cnt = 0
        while n:
            cnt += 1
            n &= n-1;
        return cnt
  • (3)计算一个数二进制形式 0 出现的次数;

    (1)中的结果减去(2)中的结果

    numOf0 = lambda n: numOfDigits(n)-numOf1(n)

你可能感兴趣的:(【笔试/面试】—— 计算一个数二进制形式中 0 的个数)