美文网首页编程之美
BoP——2.1求一个数的二进制表示中1的个数

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

作者: Myth52125 | 来源:发表于2017-10-14 16:07 被阅读0次

比如,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的个数

    本文链接:https://www.haomeiwen.com/subject/msstuxtx.html