写一个函数返回参数二进制中 1 的个数。
比如: 15 0000 1111 4 个 1
以下例举-1
10000000000000000000000000000001 原码
11111111111111111111111111111110 反码
11111111111111111111111111111111 补码
第一种方法
#include<stdio.h>
int count_number_of_1(unsigned int m)
{
int c = 0;
while (m)
{
if (m % 2 == 1)
{
c++;
}
m /= 2;
}
return c;
}
int main()
{
int n = -1;//n放在内存中的补码的2进制中的1的个数
int ret = count_number_of_1(n);
printf("%d\n", ret);
return 0;
}
第二种方法
#include<stdio.h>
int count_number_of_1(int m)
{
int c = 0;
int i = 0;
for (i = 0;i < 32;i++)
{
if ((m & 1) == 1)
{
c++;
}
m >>= 1;
}
return c;
}
int main()
{
int n = -1;//n放在内存中的补码的2进制中的1的个数
int ret = count_number_of_1(n);
printf("%d\n", ret);
return 0;
}
第三种方法
#include<stdio.h>
int count_number_of_1(int m)
{
int c = 0;
while (m)
{
m = m & (m - 1);
c++;
}
return c;
}
int main()
{
int n = -1;//n放在内存中的补码的2进制中的1的个数
int ret = count_number_of_1(n);
printf("%d\n", ret);
return 0;
}