2011-01-09 字节按位逆序
unsigned short intreverse_bit(unsigned short int b)
{
unsigned short int r = 0;
for (int i=0; i<8; i++) {
b >> = 1
r = (r << 1) | (b & 1);
}
return r;
}unsigned short int reverse_bit(unsigned short int b)
{
b = b << 4 + b >> 4; // &11110000, 56781234
b = (b & 0x33) << 2 + (b & 0xCC) >> 2; // &11001100, 78563412
b = (b & 0x55) << 1 + (b & 0xAA) >> 1; // &10101010, 87654321
return b;
}第一种解法,还是常用的一个一个的移位的做法。
第二种解法,利用64位乘法和取模运算,三步操作解决
第三种解法,仅用64乘法,4步解决
第四种解法,仅用32位操作,7步解决
最后更新于