问题: 输入一个32位无符号整数,将该数对应的二进制位翻转,输出翻转后的二进制数对应的十进制值。
#include<stdio.h>
unsigned int bit[32];
int main()
{
unsigned int ans;int i,k,x,n;
bit[0]=1;
for(i=1;i<32;i++)
bit[i]=bit[i-1]<<1;
scanf("%d",&n);
while(n--)
{
scanf("%d",&x);
k=0;
ans=0;
while(x)
{
if(x&1)
ans|=bit[31-k];
k++;
x>>=1;
}
printf("%u\n",ans);
}
}
/*
输入示例
5
0
1
2
3
4
输出示例
0
2147483648
1073741824
3221225472
536870912
*/