1. 程式人生 > >個人感覺最優的按位翻轉資料演算法

個人感覺最優的按位翻轉資料演算法

unsigned char ReverseBits(unsigned char ch)

  1. {
  2. ch = (ch & 0x55) << 1 | (ch >> 1) & 0x55;
  3. ch = (ch & 0x33) << 2 | (ch >> 2) & 0x33;
  4. ch = (ch & 0x0F) << 4 | (ch >> 4) & 0x0F;
  5. return ch;
  6. }

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