本函数实现的是将一个value的二进制值从左到右变换一下后的值,例如把15的二进制 0000 0000 0000 0000 0000 0000 0000 1111
变为 1111 0000 0000 0000 0000 0000 0000 0000 4026531840
1 #include <stdio.h> 2 3 unsigned int reverse_bits(unsigned int value) 4 { 5 unsigned int answer=0; 6 unsigned int i; 7 for(i=1;i!=0;i<<=1)//一个无符号int数在我的机器上左移32次后为0 与机器的整形字长无关 8 { 9 answer<<=1; 10 if(value&1) //判断value的最低位是否为1 11 answer|=1; 12 value>>=1; 13 14 } 15 return answer; 16 } 17 18 int main (void) 19 { 20 unsigned int a=15; 21 unsigned int j=reverse_bits(a); 22 printf("%u ",j); 23 return 0; 24 }