蝶式交換法代碼:
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;
}
在遇到交換字節(jié)位的問(wèn)題時(shí)使用蝶式交換法和查表法來(lái)實(shí)現(xiàn)。查表法顧名思義即將一些值存到內(nèi)存中
需要計(jì)算時(shí)查表即可但是也會(huì)占用額外的存儲(chǔ)空間。這里主要介紹一下蝶式交換法
設(shè)原始位為 1234 5678
data=(data<<4)|(data>>4); 之后位序?yàn)?5678 1234
data=((data<<2)&0xcc)|((data>>2)&0x33); 之后位序?yàn)?7856 3412
data=((data<<1)&0xaa)|((data>>1)&0x55); 之后位序?yàn)?nbsp;8765 4321
由此完成了整個(gè)位的逆序轉(zhuǎn)換
[此貼子已經(jīng)被作者于2013-4-21 17:09:46編輯過(guò)]
|