24小时热门版块排行榜    

查看: 1074  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

hu123rong00

铜虫 (小有名气)

[求助] 位倒序——半字节查表法

我想实现一个字节的倒序,例如  11001100  ---->  00110011.
用半字节查表法怎么做啊?请高手讲解一下原理?或者还有其他快速的算法
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

就是从0000到1111的倒序先保存在一个数组中,比如:
CODE:
0000 -> 0000
0001 -> 1000
0010 -> 0100
...

于是这个数组就是:
CODE:
i   rev[i]
0   0
1   8
2   4
...

构造好数组rev后,就可以这么查表了:
CODE:
unsigned char byteReverse(unsigned char b){
        return (rev[b&0xF]<<4) | rev[b>>4];                //注意rev如果不是有符号或无符号型int数组的话,需要强制转换一下
}

2楼2012-03-07 09:14:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hu123rong00 的主题更新
信息提示
请填处理意见