蝶式交換法代碼:
unsigned char shift_fun2(unsigned char data)
{
data=(data<<4)|(data>>4);
data=((data<<2)&0xcc)|((data>>2)&0x33);
data=((data<<1)&0xaa)|((data>>1)&0x55);
return data;
}
在遇到交換字節位的問題時使用蝶式交換法和查表法來實現。查表法顧名思義即將一些值存到內存中
需要計算時查表即可但是也會占用額外的存儲空間。這里主要介紹一下蝶式交換法
設原始位為 1234 5678
data=(data<<4)|(data>>4); 之后位序為 5678 1234
data=((data<<2)&0xcc)|((data>>2)&0x33); 之后位序為 7856 3412
data=((data<<1)&0xaa)|((data>>1)&0x55); 之后位序為 8765 4321
由此完成了整個位的逆序轉換
[此貼子已經被作者于2013-4-21 17:09:46編輯過]
|