写一个函数返回参数二进制中1的个数

  

题目:写一个函数返回参数二进制中1的个数
比如:0000 1111 4个1
程序原型:
int count_one_bits (unsigned int值)
{
//返回1的位数
}
解题思路:首先写出这个数字的二进制序列并且定义一个计数器,由于数字在计算机中是以其二进制补码的形式进行存储,那么我们需要知道这个数字的二进制原码。然后通过循环右移其二进制序列和1进行按位与,如果按位与的结果是1,则计数器加一,否则继续此操作,直到右移完它的全部位的数,则循环结束。
解法一:
# define _CRT_SECURE_NO_WARNINGS
# include
# include
int count_one (unsigned int值)
{
int数=0;
int i=0;
(i=0;我& lt;32;我+ +)
{
如果,价值比的在我和;0 x1)
{
+ +,
}
}
返回计数;
}
void main ()
{
unsigned int输入=0;
printf(“请输入一个数:“);
scanf (“% d",,输入),
printf (“% d \ n", count_one(输入),
系统(“pause");
返回0;
}
解法二:
# define _CRT_SECURE_NO_WARNINGS
# include
# include
int count_one (unsigned int n)
{
int数=0;
, (n !=0)
{
n=n& (n - 1),
+ +,
}
返回计数;

  

}
void main ()
{
unsigned int输入=0;
printf(“请输入一个数:“);
scanf (“% d",,输入),
printf (“% d \ n", count_one(输入),
系统(“pause");
返回0;
}

写一个函数返回参数二进制中1的个数