如果有自己定义的指令,那我们可以定义一个周期完成的翻转。
但通常在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);
...
阅读(1234) | 评论(0) | 转发(0) |