您的位置:首页 > 博客中心 > 互联网 >

高效求一个整数中1的位数

时间:2022-04-22 09:05

求一个整数中0或1的位数,有很多方法可以使用除法,求余等方法,也可以使用位运算,相比前者效率更高。

#include 
#include 
//求一个整数 1的位数
int count0(int x)
{
    int num=0;
    while(x)
    {
        num+=x%2;
        x/=2;
    }
    return num;
}

int count1(int x)
{
    int num=0;
    while(x)
    {
        num+=(x&0x01);
        x>>=1;
    }
    return num;
}

int count2(int x)
{
    int num=0;
    while(x)
    {
        x &=(x-1);
        num++;
    }
    return num;
}
int main()
{
    unsigned int x=10;
    printf("%d   %d\n",x,count0(x));
    printf("%d   %d\n",x,count1(x));
    printf("%d   %d\n",x,count2(x));
    return 0;
}

  

 

本类排行

今日推荐

热门手游