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) 编辑 收藏 举报