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

来源:互联网 发布:南风知我意2全文下载 编辑:程序博客网 时间:2024/06/06 00:41
  • (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 0
原创粉丝点击