1. /*编写函数 unsigned int reverse_bit(unsigned int value); 函数返回二进制value的二进制位模式从左到右翻转后的值 如:00000000000000000000000000011001 翻转为 100110000000000000000000000000000000 */ #include<stdio.h> #include<math.h> /*利用POW函数实现*/ int reverse_bit(int n) { int i=0; int sum=0; for(i=0;i<32;i++) { sum+=((n>>i)&1)*pow(2,31-i); } return sum; } /*利用 “右移”,“位与”方式*/ int reverse2_bit(int n) { int i=0; int sum=0; for(i=0;i<32;i++) { sum<<=1; sum|=((n>>i)&1); } return sum; } int main() { int num=25; int ret=reverse_bit(num); int ret2=reverse2_bit(num); printf("%u\n",ret); printf("%u\n",ret2); return 0; }