浅谈C语言移位操作

x86汇编移位操作有5类:

1.算数逻辑移位 SAR/SAL

   SAL: 左移,低位空出位补0,最近移出进CF

   SAR: 右移,高位空出多少位,就多少位补符号位,最近移出进CF
   
   Signed int a = 5;
   a >>= 2;           signed int 一般被翻译成 SAL/SAR 
2.逻辑移位 SHL/SHR

   SHL:左移,低位空出位补0,最近移出进CF

   SHR: 右移,高位空出为补0,最近移出进CF
   unsigned int i = 0x1234;
   i >>= 4;          unsigned int 一般被翻译成 SHL/SHR 
3.循环移位 ROR/ROL

   ROL: 左移,低位空出,由高位补,最近移出进CF

   ROR:右移,高位空出,由低位补齐,最近移出进CF

4.带进位循环移位 RCR/RCL

   RCL:左移,低位空出,原来的CF补低位,最近移出进CF

   RCR: 右移,高位空出,原来的CF补高位,最近移出进CF

5.双精度逻辑移位 SHLD/SHRD

  SHLD/SHRD  __1__,___2___,__3___

   1&&2必须是相同位宽,2必须是REG

 1左移N,空出的N位,2的高N位补上,但2不动

 1右移N,空出的N位,2的低N位补上,但2不动
posted @ 2013-10-18 00:29  moon_cat  Views(1281)  Comments(0Edit  收藏  举报