算法思想:将一个无符号整型的第一位比特位拿出来(从左到右),用的方法是移位与1;然后定义一个新的变量初始化成0,按以上的方法如果检测到某位是1,则从右往左把对
应的比特位置1,0不要管,因为已经初始化成0了;最后返回这个新的无符号数
注意:
(1)函数返回类型的真实对应
(2)调用函数返回结果避免出现无定义的报错情况,使用递归调用 直接将调用作为参数
程序:
#include <stdio.h>
int reverse_bit(unsigned int value)
{
unsigned int new_value=0;
int i=0;
for(i=31;i>=0;i++)
{
if((value>>i)&1==1) //判断第一位是否为1,如果是,将new_value的最后一位置1,以此类推,遍历完32位比特位
{
new_value=(new_value)|(1<<(31-i));
}
}
return new_value; //当有整型的返回值时,函数类型不能是void类型
}
int main()
{
unsigned int x=0;
printf("please enter:");
scanf("%u",&x);
printf("%u",reverse_bit(x));
return 0;
}