有没有知道这哪错了啊,我看了半天了就是没看出来哪里有问题。🧐😤😭
【相关推荐】
例如:5的二进制为00000000000000000000000000000101
-5的二进制为10000000000000000000000000000101
负数与正数相差一个符号位1,我们可以先计算负数的相反数再加上符号位1就可以完善该算法。
#include<stdio.h>
#include<math.h>
int main()
{
int n = 0;
int m = 0;
int u = 0;
int count = 0;
scanf("%d", &n);
u = abs(n);
while (u)
{
m = u % 2;
u = u / 2;
if (m == 1)
{
count++;
}
}
if (n > 0)
{
printf("%d\n", count);
}
else
{
printf("%d\n", count + 1);
}
return 0;
}