思想:
首先:让最高位放到最低位,我的想法是定义一个new_value=0,让value的最高位&1,若其结果为1,就放到new_value的最低位,若为0,则直接返回,以此类推。利用循环,将32位全部进行运算,最后放到new_value。
就可以实现从左到右的翻转。
程序结果:
unsigned int reverse_bit(unsigned int x)
{
unsigned int data = 0;
int i = 0;
for (i = 0; i < 32;i++){
if (x & (1<<i))
{
data = data | (1 << (31 - i));
}
}
return data;
}
int main()
{
unsigned int ret = reverse_bit(0x5555AAAA);
printf("%x\n", ret);
system("pause");
return 0;
}