示例: 输入7,输出3
方法一 : 假设输入7时,它的二进制表示为: 00000000 00000000 00000000 00000111
判断n是否为1—— 不是一则右移一位,同时count++(总数+1)
int Number1(int x)
{
int count = 0; // 存放总数
while (x != 0)
{
count++;
x = x >> 1;
}
return count;
}
int main()
{
int n = 0;
scanf("%d", &n); // 输入n
printf("%d\n",Number1(n)); // 向函数传参,并将函数运行结果作为返回值传给printf,打印
return 0;
}
这段代码,当n为负数时,无法计算出正确结果,需要在函数形参定义时,将x定义为无符号整型,unsigned int x
方法二:& 按位与 同样假设输入为7,二进制:00000000 00000000 00000000 00000111