二进制位的倒序
8位的倒序
uint8 bin8_rev(uint8 data)
{
data=((data&0xf0)>>4) | ((data&0x0f)<<4);
data=((data&0xCC)>>2) | ((data&0x33)<<2);
data=((data&0xAA)>>1) | ((data&0x55)<<1);
return data;
}
{
data=((data&0xf0)>>4) | ((data&0x0f)<<4);
data=((data&0xCC)>>2) | ((data&0x33)<<2);
data=((data&0xAA)>>1) | ((data&0x55)<<1);
return data;
}
16位的倒序:
static INT16U BitChange(INT16U us_DataIn)
{
INT16U us_Data = us_DataIn;
us_Data = ((us_Data & 0xFF00) >> 8) | ((us_Data & 0x00FF) << 8);
us_Data = ((us_Data & 0xF0F0) >> 4) | ((us_Data & 0x0F0F) << 4);
us_Data = ((us_Data & 0xCCCC) >> 2) | ((us_Data & 0x3333) << 2);
us_Data = ((us_Data & 0xAAAA) >> 1) | ((us_Data & 0x5555) << 1);
return (us_Data);
}
32位的倒序:
unsigned int GetRevertBit(unsigned int v)
{
v = ((v <<16) & 0xFFFF0000) | ((v >>16) & 0x0000FFFF);
v = ((v << 8) & 0xFF00FF00) | ((v >> 8) & 0x00FF00FF);
v = ((v << 4) & 0xF0F0F0F0) | ((v >> 4) & 0x0F0F0F0F);
v = ((v << 2) & 0xCCCCCCCC) | ((v >> 2) & 0x33333333);
v = ((v << 1) & 0xAAAAAAAA) | ((v >> 1) & 0x55555555);
return v;
}
posted on 2018-06-21 13:56 CarryBricks 阅读(706) 评论(0) 编辑 收藏 举报