1. 程式人生 > >XTU-OJ-迴圈3-有多少個1?

XTU-OJ-迴圈3-有多少個1?

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