2018-10-26

2018-10-26  本文已影响0人  多多多_91fe

小算法

        对于任意非负整数,同级其二进制展开中数为1的总数

有两种比较妖的做法,都是通过位运算的方式实现:

int countOnes(unsigned int n)
{
    int ones = 0;
    
    while (0 < n)
    {
        ones += (1 & n); //取二进制的末位,叠加
        n >>= 1;
    }

    return ones;
}
int numOnes(unsigned int n)
{
    int ones = 0;

    while (n)   //有多少个1,则该操作可执行多少次
    {
        n = n & (n-1);
        ones++;
    }

    return ones;
}
上一篇 下一篇

猜你喜欢

热点阅读