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的翻转。
个人理解:针对16bit和32位及以上位数的数据交换,延续此思路即可,对应的掩码设置为0x00FF和0x0000FFFF即可。原博客:https://blog.csdn.net/maliqiqaz/article/details/38408473