题目描述
C++中int型整数内码是一个32位的01序列,该01序列有些是对称的,有些是不对称的。对于给定的一个整数,在一些场合,需要判断其整数内码的对称性。这个事情要做好还非你不行呢。
输入
输入中含有一些整数n(0≤n〈2^32)。
输出
统计其中一共有多少个其内码对称的整数,输出之。
样例输入
0
1
2147483649
2
3
样例输出
2
代码
#include<stdio.h>#include<string.h>#include<math.h>int main(){ unsigned int n; int sum=0; unsigned int num[32]; int flag,i; while(scanf("%u",&n)!=EOF) { flag=0; if(n==0) sum++; else if(n<32768+65536) continue; else { for(i=0;i<32;i++) { num[i]=n%2; n/=2; } for(i=0;i<16;i++) { if(num[i]!=num[31-i]) { flag=1; break; } } if(flag==0) sum++; } } printf("%d
",sum); return 0; }