Chinaunix首页 | 论坛 | 博客
  • 博客访问: 613271
  • 博文数量: 105
  • 博客积分: 5389
  • 博客等级: 准将
  • 技术积分: 1290
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-29 11:13
文章分类

全部博文(105)

文章存档

2010年(23)

2009年(20)

2008年(62)

分类: C/C++

2009-06-24 15:28:17

如果有自己定义的指令,那我们可以定义一个周期完成的翻转。
但通常在c中,我们会这样写:
 
     ...
    /*!注意,按位与&的优先级小于移位的优先级, 按位或|的优先级更低*/
    uint32_t x = 0x11223344;
    swap1 = ((x&0xFF000000)>>24) | ((x&FF0000)>>8) | ((x&0xFF00)<<8) | ((x&0xFF)<<24);
     ...
 
这条语句运算次数是11次,如果处理器每周期完成一个指令,需耗费11个周期。而下面这条同样功能的指令只需8条指令:
 
     ...
    x = ((x<<8)&0xFF00FF00) | ((x>>8)&0x00FF00FF);
    swap2 = (x>>16) | (x<<16);
     ...
阅读(1191) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~