请问怎样颠倒一个八位二进制数的顺序?

来源:百度知道 编辑:UC知道 时间:2024/04/30 13:24:46
如题。比如把10101100转换为00110101。效率一定要高~因为要处理几个G的数据~
谢啦~

用堆栈来做

直接做一个lookup table,空间换时间,是最快的,一共才256个数么
a[256]={0,128,64,192,....
a[i]就是i的倒序

用数组吧```

typedef struct SwUChar//声明两个字节的位域。
{//Bit0x用于接收要转换的字节,Bit1x用于储存转换后的字节
unsigned char Bit00 :1;
unsigned char Bit01 :1;
unsigned char Bit02 :1;
unsigned char Bit03 :1;
unsigned char Bit04 :1;
unsigned char Bit05 :1;
unsigned char Bit06 :1;
unsigned char Bit07 :1;

unsigned char Bit10 :1;
unsigned char Bit11 :1;
unsigned char Bit12 :1;
unsigned char Bit13 :1;
unsigned char Bit14 :1;
unsigned char Bit15 :1;
unsigned char Bit16 :1;
unsigned char Bit17 :1;

}SwUChar_def;

typedef union LHUchar//定义联合体,声明一个两位数组。
{//ch[0]与Bit0x对应,ch[1]与Bit1x对应
unsigned char ch[2];
SwUChar_def SwUChar1;
}LHUchar_def;

LHUchar_def LHUchar1;//需提前声明,占用两个字节

unsigned char swap_uchar(unsigned char x)//直接调用即可
{
LHUchar1.ch[0] = x;
LHUcha