计算一个整数二进制位中1的个数。要求效率尽可能的高。且能正确求正数和负数的二进制中1的个数。

来源:互联网 发布:mac口红dangerous 编辑:程序博客网 时间:2024/04/30 09:59
#include<iostream>#include<stdlib.h>using namespace std;int Number1(int n){    int count = 0;    unsigned int flag = 1;    while (flag)    {        if (flag&n)            count++;        flag =  flag << 1;    }    return count;}int Number2(int n){    int count = 0;    while (n)    {        ++count;        n = (n - 1)&n;    }    return count;}//测试用例的选择正数的最大值,负数的最大最小值int main(){    cout << Number1(0x7fffffff) << endl;    cout << Number1(0x80000000) << endl;    cout << Number1(0xffffffff) << endl;    cout << Number2(0x7fffffff) << endl;    cout << Number2(0x80000000) << endl;    cout << Number2(0xffffffff) << endl;    system("pause");    return 0;}
阅读全文
0 0
原创粉丝点击