求一个整数存储在内存中的二进制中1的个数
三种方法
①
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int num = 10;
int count = 0;//计数
while (num)
{
if (num % 2 == 1)
count++;
num = num / 2;
}
printf("二进制中1的个数 = %d\n", count);
return 0;
}
②
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int num = -1;
int i = 0;
int count = 0;//计数
for (i = 0; i<32; i++)
{
if (((num >> i) & 1) == 1)
count++;
}
printf("二进制中1的个数 = %d\n", count);
return 0;
}
③
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int num;
scanf("%d", &num);
int i = 0;
int count = 0;//计数
while (num)
{
count++;
num = num&(num - 1);
}
printf("二进制中1的个数 = %d\n", count);
return 0;
}
以上代码运行得没毛病
铁汁加油!