温故而知新~//求一个整数存储在内存中的二进制的一的个数

首先,用个简单的方法:

#include <stdio.h>
#include <Windows.h>
#pragma warning(disable:4996)

int get_One(int c)
{
int i = 0;
while (c & 1){
i++;
c >>= 1;
}
printf("%d", i);
}
int main()
{
int c = 0;
printf("请输入一个整数:");
scanf("%d", &c);

get_One(c);

system("pause");
return 0;

}

再用个sao一点的:

#include <stdio.h>
#include <Windows.h>

#pragma warning(disable:4996)

int main()
{
int num = -1;
int i = 0;

        int count = 0; 

   printf("请输入一个整数:");

   scanf("%d", &num);

for (i = 0; i < 32; i++)

{

if (((num >> i) & 1) == 1)
 count++;

}

printf("%d", count);
system("pause");
return 0;

}

再用个更sao一点的:

#include <stdio.h>
#include <Windows.h>

#pragma warning(disable:4996)

int main()
{
int num = -1;

int i = 0;

        int count = 0;

 printf("请输入一个整数:");

 scanf("%d", &num);

 while (num){
count++;
num = num&(num - 1);

}

printf("%d", count);
system("pause");
return 0;
}

OF COURSE!

还有更更sao的,待续……




猜你喜欢

转载自blog.csdn.net/chengx1996/article/details/79893203