XTU-OJ-迴圈3-有多少個1?
阿新 • • 發佈:2018-12-21
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;
}
總結
- 看ACMer大佬的程式碼。。。看了好久也看不懂的我呀。。。可能這就是差距吧。。。哭哭o(╥﹏╥)o