unsigned char reverse_bits(unsigned char value) { unsigned char answer , i ; answer = 0 ; for(i = 1 ; i != 0 ; i <<= 1) { answer <<= 1 ; if(value & 1) answer |= 1 ; value >>= 1 ; } return answer ; }
以上程序实现的是对一个8bit的无符号字符型的数的二进制位进行翻转,比如我传入的是0xfe的话,对应的二进制就是:
1111 1110 ,翻转得到的answer是:0111 1111
这个函数可以做到任意类型的数据进行翻转,如果想翻转更大的数,可以将unsigned char改成unsigned int 或者 unsigned long 或者unsigned short这些类型,这样翻转过后的数值就会更大。