第一种取出每一位与0按位或然后移位
#include <stdio.h>
#include <stdlib.h>
unsigned int reverse_bit(unsigned int num)
{
int ret = 0;
int i = 0;
for (i = 0; i < 32; i++)
{
ret = ret << 1;
ret = ret | (num >> i) & 1;
}
return ret;
}
int main()
{
unsigned int num = 0;
printf("请输入一个数:");
scanf("%d",&num);
printf("%u\n", reverse_bit(num));
system("pause");
return 0;
}
第二种运用权重来做,左右翻转就相当于这个数的二进制数的最高位由value*2^31变为value*2^0,变为最低位即可。