#include
#include
/*
* Method One
*
*/
int getOneCount_1(int number)
{
int count = 0;
do
{
if(number & 0x00000001 == 1)
{
count++;
}
}while((number>>=1) != 0);
return count;
}
/*
* Method Two
*
*/
int getOneCount_2(int number)
{
int count = 0;
while(number != 0)
{
number &= number - 1;
count++;
}
return count;
}
/*
* Method Three
*
*/
int getOneCount_3(int number)
{
int count = 0;
int i = 0;
int BitMap[16] = {
0, 1, 1, 2,
1, 2, 2, 3,
1, 2, 2, 3,
2, 3, 3, 4
};
while(i<4)
{
count += BitMap[(number>>(4*i)) & (0x000000FF<
i++;
}
return count;
}
void main()
{
int i, j;
//i = getOneCount_1(7);
i = getOneCount_2(7);
//i = getOneCount_3(7);
j = sizeof(int)*8 - i;
printf("One count:%d\nZero count:%d\n",i,j);
}