采取两种方法来获取整数的二进制1的个数
1.采取左移和相与的方法
2.采取减1和相与的方法
程序:
#include<iostream>
#include<stdlib.h>
struct CountCalc
{
public:
int count_one_use_leftshift(int num) //采取左移和相与的方法
{
int count=0;
int flag=1;
while(flag)
{
if(num&flag)
{
count++;
}
flag<<=1;//flag 由1->10->100->1000逐渐变大最后变为0结束循环
}
return count;
}
int count_one_use_sub(int num)//采取减1和相与的方法
{
int count=0;
while(num)
{
count++;
num&=num-1;
}
return count;
}
};
int main()
{
int num=0;
CountCalc ss;
std::cin>>num;
std::cout<<ss.count_one_use_sub(num)<<std::endl;
std::cout<<ss.count_one_use_leftshift(num)<<std::endl;
system("pause");
return 0;
}