#include<stdio.h>
#include<stdlib.h>
unsigned int reverse_bit(unsigned int value) //定义一个无符号的数
{
int ret = 0;
int i;
for(i=0;i<32;i++) //这个数的二进制位的每一位都需要与1与
{
int r=value & 0x01; //这个数与1与之后赋给r,就取出来了这个数二进制位的最后一位
ret |= r<<(32-i-1); // 把取出来的二进制位的最后一位向左移31位,下一位取出来的数向左移30位,以此类推,并且把每一次移动后的值加起来,就是最后翻转后的值。
value = value >> 1; //每次的数与1与了之后,它需要向右移再次与1与
}
return ret; //将这个数返回
}
int main()
{
int val= 0;
printf("请输入一个数字:");
scanf("%d",&val);
printf("将这个数字位反转后是:%u\n",reverse_bit(val));
system("pause");
return 0;
}