XTU-OJ-循环3-有多少个1?

版权声明:转自可爱的安安的博客!qq:1085589289 https://blog.csdn.net/ac1085589289/article/details/83659074

Description

计算机中存储的整数都是按补码的型式,一个32位有符号整数的补码的定义为:如果x>=0,则x的补码等于x的二进制表示;如果x<0,那么x的补码为2^32+x的二进制表示。请根据给定的整数,求出它的补码包含有多少位为1。
输入
每行一个样例,为一个整数(可以用int表示)。
输出
每行输出一个对应样例的结果。

Sample Input

1
0
-1

Sample Output

1
0
32

某ACMer的代码(我看不懂)

#include <stdio.h>
int main()
{
	unsigned int x;
	int sum;
	while(scanf("%d",&x)==1){
		sum=0;
		if(x<0)	x=(~x); 
		while(x!=0){
			if(x&1)	sum++;
			x=x>>1; 
		} 
		printf("%d\n",sum);
	}
	return 0;
}

我这种人写的代码

#include<stdio.h>
int main()
{	
   int n;
   while(scanf("%d",&n)==1)
   {	
   	int count=0;
   	for(int i=0;i<32;i++)
   	{ 
   	if(n&1) ++count;
   	n=n>>1;
   	}
   	printf("%d\n",count); 
   }
   return 0;
}

总结

  1. 看ACMer大佬的代码。。。看了好久也看不懂的我呀。。。可能这就是差距吧。。。哭哭o(╥﹏╥)o

猜你喜欢

转载自blog.csdn.net/ac1085589289/article/details/83659074