/* 编写函数unsigned int reverse_bit(unsigned int value)
这个函数的返回值value的二进制模式从左到右翻转后的值
如在32位的机器上25这个值包涵下列各位:
00000000000000000000000000011001
翻转后(2550136832)
10011000000000000000000000000000
最后输出2550136832
*/
#include<stdio.h>
#include<math.h>
unsigned int reverse_bit(unsigned int value)
{
int n=31;
int count = 0;
int ret ;
int rat = value;
while(rat != 0)
{
ret=rat%2;
count =count+ret*pow(2,n);
rat = rat/2;
n--;
}
printf("%u\n",count);
return 0;
}
int main()
{
reverse_bit(25);
return 0;
}
思路 如25 11001 n=31
25%2=1 1乘2的31次幂 25/2=12 n--
12%2=0 0乘2的30次幂 12/2=6 n--
6%2=0 0乘2的29次幂 6/2=3 n--
3%2=1 1乘2的28次幂 3/2=1 n--
1%2=1 1乘2的27次幂 1/2=0 结束
将这些数依次相加即可完成“倒序”