对于求一个数的二进制补码中1的个数,本文中的代码都通过写一个函数实现。
一共有三种实现方法。
1、无法处理负数的一种代码
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int geshu(int a)
{
int count = 0;
while (a)
{
if (a % 2 == 1)
{
count++;
a = a / 2;
}
}
return count;
}
int main()
{
int num = 0;
scanf("%d", &num);
printf("\ncount=%d", geshu(num));
system("pause");
return 0;
}
2、
利用num&(num-1)的一种算法,可以实现对负数的求解
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int geshu(int a)
{
int count = 0;
while (a)
{
count++;
a = a&(a - 1);
}
return count;
}
int main()
{
int num = 0;
scanf("%d&#