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;
}