首页 > 其他 > 详细

位运算

时间:2019-10-14 19:58:00      阅读:93      评论:0      收藏:0      [点我收藏+]
1.算术移位指令
指令格式:SAL/SAR Reg/Mem, CL/Imm                
    左边的操作数可以使寄存器或内存,右边的操作数可以是寄存器cl或立即数               
    SAL(Shift Arithmetic Left): 算术左移                
    SAR(Shift Arithmetic Right): 算术右移    
 
1)算术左移
左移一位,最高位存入cf,最低位补0;
技术分享图片技术分享图片
例如:10000001左移一位    ->00000010
mov eax,0x81
sal eax,1
结果:
    eax=0x02,cf=1
 
2)算术右移
右移一位,最高位补符号位,最低位存入cf
技术分享图片技术分享图片
例如:10000001右移一位    ->11000000
mov eax,0x81
sar eax,1
结果:
    eax=0xc0,cf=1 
 
2.逻辑移位指令
指令格式:SHL/SHR Reg/Mem, CL/Imm            
    SHL(Shift Left):      逻辑左移            
    SHR(Shift Right):      逻辑右移    
 
shl逻辑左移:最高位存入cf最低位补0;
shr逻辑右移:最低位存入cf,最高位补0;
技术分享图片技术分享图片
 
3.循环移位指令
指令格式:ROL r/m, i8  ROR r/m, CL            
    ROL(Rotate Left):        循环左移            
    ROR(Rotate Right):       循环右移
 
循环左移rol:最高位的值拿出来放到最低位,cf放最后拿出来的那个值
循环右移ror:最低位拿出来放最高位,cf放最后拿出来的值
技术分享图片技术分享图片
 
4.带进位循环移位指令
指令格式:RCL r/m, i8  RCR r/m, CL                
    RCL(Rotate through Carry Left):  带进位循环左移                
    RCR(Rotate through Carry Right): 带进位循环右移    
 
相当于把cf算进循环移位指令里;
带进位循环左移rcl:将最高位放入cf里,将cf中的值放入最低位;
带进位循环右移rcr:最低位放入cf,cf的值放入最高位;
技术分享图片技术分享图片
 
5.c语言中的位运算
与运算 &
或运算 or
非运算 |
异或运算 ^
移位运算 <<  >>
 
1)操作位
技术分享图片技术分享图片
 
 
 
 

位运算

原文:https://www.cnblogs.com/ShiningArmor/p/11673174.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!