unsigned char ReverseBits(unsigned char ch)
{
ch = (ch & 0x55) << 1 | (ch >> 1) & 0x55;
ch = (ch & 0x33) << 2 | (ch >> 2) & 0x33;
ch = (ch & 0x0F) << 4 | (ch >> 4) & 0x0F;
return ch;
}
0x55 -> 01010101 B
0x33 -> 00110011 B
0x0F -> 00001111 B
从中可以看出,是先将相连的两bits 对调--实现相连2 bits数据翻转;接着两个相连的“2 bits组合”对调--实现相连4 bits数据翻转;再下来就是将两个相连的“4 bits组合”对调--即可以完成对一个字符8 bits的翻转。