编程之美

BoP——2.1求一个数的二进制表示中1的个数

2017-10-14  本文已影响0人  Myth52125

比如,3二进制表示为00000011,那么1的个数为2。

方法一

就3来说,我们我们将3除2,余数如果是1,那么表示有一个1。循环的除最终结果就是想要的

int counts1(int v)
{
    int counts = 0;
    while(v)
    {
        if(v%2 == 1)
        {
            counts++;
        }
        v/=2;
    }
    return counts;
}

方法二

基本和上面的相似,但是比较和除2,还为位操作。

int counts2(int v)
{
    int counts = 0;
    while(v)
    {
        counts += v & 0x01;
        v>>=1;
    }
    return counts;
}

方法三

方法三是一个和位操作相关的方法,有点看不懂。先放弃。

方法四

查表操作。
把所有可能的值全部放在数组中,然后需要的时候直接查数组。

上一篇 下一篇

猜你喜欢

热点阅读