#include<stdio.h>
int number(unsigned int x)//首先绝对值不行 其次unsigned可以解决当时答疑的那个问题
{
int count = 0;
while (x)// m%1 m>>=1 也可以实现
{
if (x % 2 == 1)
{
count++;
}
x = x / 2;
}
return count;
}
int main()
{
int a = 0;//求补码中1的个数(负数的时候原码1的个数会很多(补码也很多))
scanf("%d", &a);
int ret = number(a);
printf("%d", ret);
return 0;
}
//m = m&(m-1)这个表达式会把二进制序列中最右边的1去掉
//2去掉最低位 %2得到最低位 10进制同理
c语言 统计一个数二进制中1的个数
最新推荐文章于 2024-08-25 23:50:29 发布