具体代码如下:
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
int get_bit_count1(int num)
{
if(0 == num)
return 0;
else
return ((num & 1) + get_bit_count1(num >> 1));
}
int get_bit_count2(int num)
{
int dic[] = {
0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4
};
return dic[(num&0x000f )>>0 ] +dic[(num&0x00f0 )>>4 ] +
dic[(num&0x0f00 )>>8 ] +dic[(num&0xf000 )>>12] +
dic[(num&0xf0000 )>>16] +dic[(num&0xf00000 )>>20] +
dic[(num&0xf000000)>>24] +dic[(num&0xf0000000)>>28];
}
int main(int argc, char **argv)
{
if(argc != 2)
cout << "Usage:"<<argv[0]<<"$num_to_be_check" << endl;
cout << get_bit_count1(num) << endl;
cout << get_bit_count2(num) << endl;
}