1. 程式人生 > >把一個無符號16bit的數像鏡面反射一樣顛倒一下

把一個無符號16bit的數像鏡面反射一樣顛倒一下

value static 使用 stat sta ati ide ont inter

下面這個函數是把一個無符號16bit的數像鏡面反射一樣顛倒一下。

該函數是NXP(飛思卡爾)的 S32DS IDE中提供的SDK中的一個官方代碼:

 1 static inline uint16_t REV_BIT_16(uint16_t value)
 2 {
 3     uint8_t i;
 4     uint16_t ret = 0U;
 5 
 6     for (i = 0U; i < 8U; i++)
 7     {
 8         ret |= (uint16_t)((((value >> i) & 1U) << (15U - i)) | (((value << i) & 0x8000U
) >> (15U - i))); 9 } 10 11 return ret; 12 }

使用S32DS創建普通的C語言的工程。選擇CDT Internal Builer(否者編譯會錯誤)。
某數:
?0b0001001000110100?
將該數顛倒以後:
?0b0010110001001000?

把一個無符號16bit的數像鏡面反射一樣顛倒一下