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

比如,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;
}

方法三

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

方法四

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

你可能感兴趣的:(BoP——2.1求一个数的二进制表示中1的个数)