二进制中1的个数

来源:互联网 发布:仙鹤刺绣棒球服淘宝 编辑:程序博客网 时间:2024/05/22 13:45

解法一:
首先把i和1做与运算,判断I的最低位是不是为1。接着把1左移一位得到2,在和i做与运算,就能判断i的此地为是不是1…这样反复左移,每次都能判断i的其中一位是不是1。代码如下:

int NumberOf1(int n){    int count = 0;    unsigned int flag = 1;    while (flag)    {        if (n&flag)//判断第flag位是不是1            count++;        flag = flag << 1;//将flag位左移一位    }    return count;}

解法二:
把一个整数减去1,在和原证书做与运算,会把该整数最右边一个1变成0。那么一个整数的二进制表示中有多少个1,就可以进行多少次操作。大大减少了循环次数。代码如下:

int NumberOf1_2(int n){    int count = 0;    while (n)    {        ++count;        n = n&(n - 1);    }    return count;}
原创粉丝点击