#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;
}
计算一个整数二进制位中1的个数。要求效率尽可能的高。且能正确求正数和负数的二进制中1的个数。
最新推荐文章于 2023-01-15 13:16:46 发布