码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-09-19 17:23:55      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:blog   io   使用   div   sp   log   c   amp   r   

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

#include <stdio.h>
#include <stdlib.h>
//求一个整数 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;
}

  

 

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

标签:blog   io   使用   div   sp   log   c   amp   r   

原文地址:http://www.cnblogs.com/forsta/p/3981801.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!