蝶式交换法代码:
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编辑过]
|