美文网首页编程之美
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