您当前的位置: 首页 > 

IT之一小佬

暂无认证

  • 0浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

二进制中1的个数

IT之一小佬 发布时间:2021-03-27 11:12:36 ,浏览量:0

二进制中1的个数

【题目】:

请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。

如9的二进制为:1001,输出结果为2。

【解题思路】:

利用位移的思想,每次先与1进行与运算,再将该数右移一位;

先将该数字对2求余,再除以2,直到结果为0。 **Note:**位运算比除法效率要高  

def number_func1(n):
    count = 0
    while n:
        if n & 1:
            count += 1
        n = n >> 1
    return count


def number_func2(n):
    count = 0
    while n:
        if n % 2 != 0:
            count += 1
        n = n // 2
    return count


# 这个方法非常巧妙,且效率很高,因为数字中有多少个1就会进行几次循环
def number_func3(n):
    count = 0
    while n:
        count += 1
        n = (n - 1) & n
    return count


# test
n = 9
print("number_func1: ", number_func1(n))
print("number_func2: ", number_func2(n))
print("number_func3: ", number_func3(n))

运行结果:

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0395s