如何把一个字节的位倒置

aaaaatiger 2006-08-24 09:57:58
如:11100001 倒置为10000111
用最快最高效的方法.
我想过用位操作:就是用—操作看每一位看是不是1。

那位高手还有更快的方法呢?
...全文
694 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
大耳 2006-08-25
  • 打赏
  • 举报
回复
查表把,如果256的表觉得太大,就用16的把,
同样分成4段组装一下就好了
Jim_King_2000 2006-08-25
  • 打赏
  • 举报
回复
用汇编吧。可以把x左移进C标志,再带C标志右移进y。循环8次就OK。当然,当计算机字长不够时,就很头疼了。
bohlee 2006-08-25
  • 打赏
  • 举报
回复
mark
tailzhou 2006-08-25
  • 打赏
  • 举报
回复
哎;
bit[c&0xff]<<8 && bit[c>>8]
==>
bit[c&0xff]<<8 | bit[c>>8]

fan0316 2006-08-25
  • 打赏
  • 举报
回复
bit[c&0xff]<<8 | bit[c>>8]
以上不解,各位大人能否写个例子see see。
Arthur_ 2006-08-24
  • 打赏
  • 举报
回复

大錯了不好意思
unsigned char aim=0x00;
unsigned char target=0x30&0xff;

現在把target倒置;

int i;
for(i=0;i<8;i++);
{
aim+=( (target>>(7-i) )&0x01 )<<i;
}
Arthur_ 2006-08-24
  • 打赏
  • 举报
回复
unsigned char i=0x00;
unsigned char target=0x30&0xff;

現在把target倒置;

int i;
for(i=0;i<8;i++);
{
i+=( (target>>(7-i) )&0x01 )<<i;
}



crazy_lazy_pig 2006-08-24
  • 打赏
  • 举报
回复
用位域如何?
aaaaatiger 2006-08-24
  • 打赏
  • 举报
回复
谢谢大家.由于要放进单片机去,内存比较小

BitReverse在时间上觉得比较浪费.

bit[c&0xff]<<8 && bit[c>>8]时间和内存都比较小.有没有更完美点的呢?哈哈.
tailzhou 2006-08-24
  • 打赏
  • 举报
回复
bit[256] 也仅仅占用了256个字节的空间;

应该是可以接受的吧?
Heaven_Redsky 2006-08-24
  • 打赏
  • 举报
回复
i = ~i;
i = i & 255;
这样可以不:)
dead_of_winter 2006-08-24
  • 打赏
  • 举报
回复
的确查表是最好的办法,内存应该没多少吧?
tailzhou 2006-08-24
  • 打赏
  • 举报
回复
只要位数是8的倍数,都可以用同样的影射表,再经过少数几次位操作来实现;
tailzhou 2006-08-24
  • 打赏
  • 举报
回复
还是查表;
映射表也是一模一样的;

处理变化一下;

int16 c;

bit[c&0xff]<<8 && bit[c>>8]

crazy_lazy_pig 2006-08-24
  • 打赏
  • 举报
回复
int BitReverse(int src, int size)
{
int tmp = src;
int des = 0;
for (int i=size-1; i>=0; i--)
{
des = ((tmp & 0x1) << i) | des;
tmp = tmp >> 1;
}
return des;
}

网上抄来的,没调试过。楼主可以查查快速傅立叶变换算法的相关文章。
aaaaatiger 2006-08-24
  • 打赏
  • 举报
回复
我希望能省点内存,并且速度要最快.请教16位的倒置.
aaaaatiger 2006-08-24
  • 打赏
  • 举报
回复
那个是8位的.如果是16位就不好办了.
aaaaatiger 2006-08-24
  • 打赏
  • 举报
回复
果然够快.厉害.能不能用位操作呢?
tailzhou 2006-08-24
  • 打赏
  • 举报
回复
最快的就是查表了;

做一个映射表:

bit[256];
下标对应于字节的值,元素对应于倒置后的值

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧