unsigned int reverse_bit(unsigned int value);

 1 /*编写函数 
 2 unsigned int  reverse_bit(unsigned int value); 
 3 这个函数的返回值吧value的二进制位模式从左到右翻转后的值。 
 4 如在32位机器上25这个值包含下列各位: 
 5 00000000000000000000000000011001 
 6 翻转后:(2550136832) 
 7 10011000000000000000000000000000 
 8 */  
 9 #include <stdio.h>   
10 #include <math.h>   
11 int reverse_bit(unsigned int value)   
12 {   
13     int ret = 0;   
14     int bit = 0;   
15     int i;  
16     for( i=0; i < 32; i++)   
17     {   
18         ret = ret << 1; //左移一位,保存前一位  
19     //注意dst <<= 1这条语句必须出现在dst |= 1之前,
20     //否则duo左移一位
21         bit = value & 1; //取出最后一位  
22         value = value >> 1;//值右移,取下一位  
23         ret = bit | ret; //最后一位赋给ret  
24     
25     }   
26     return ret;   
27 }  
28 int main()   
29 {   
30     printf("%u\n",reverse_bit(25));   
31     return 0;   
32 }  

 

posted on 2018-03-03 15:44  yiludaifei  阅读(329)  评论(0编辑  收藏  举报

导航