题目描述:
请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。
输入描述:
输入的第一行为一个无符号的整形数字
输出描述:
输出一个整数表示该数二进制中1的个数
#include<iostream>
using namespace std;
int numberHas1OfSimple(unsigned int input);
int numberHas1OfUp(unsigned int input);
int main()
{
unsigned int input;
cin>>input;
int result=numberHas1OfSimple(input);
printf("%d",result);
}
//简单版
int numberHas1OfSimple(unsigned int input)
{
int number=0;
unsigned int index=1;
while(index){
if(index & input){
number++;
}
index=index<<1;
}
return number;
}
//升级版
int numberHas1OfUp(unsigned int input)
{
int number=0;
while(input){
input=(input-1) & input;
number++;
}
return number;
}