#include <stdio.h>
//第一种
int count_1_1(unsigned int num)
{
int count=0;
while(num)
{
if(num%2==1)
{
count++;
}
num=num/2;
}
return count;
}
//第二种
int count_1_2(int num)
{
int count=0;
int i=0;
for(i=1;i<=32;i++)
{
//将num向右移动i位,按位与1
if(( num>>i & 1 ) ==1)
{
count++;
}
}
return count;
}
//第三种
int count_1_3(int num)
{
//num=15
//num 1111
//num-1 1110
//num 1110
//num-1 1101
//num 1100
//num-1 1011
//num 1000
//num-1 0111
//num 0000
//每次按位与之后,num的二进制数里就少一个1
int count=0;
while(num)
{
num=num&(num-1);
count++;
}
return count;
}
int main()
{
int num=15;
int input1=count_1_1(num);
int input2=count_1_2(num);
int input3=count_1_3(num);
printf("%d\n",input1);
printf("%d\n",input2);
printf("%d\n",input3);
return 0;
}
写一个函数,求输入的数字的二进制数中有多少个1
于 2022-02-19 18:58:58 首次发布