您的位置:首页 > 其它

逻辑移位 算术移位

2010-04-08 11:30 225 查看
From: http://blog.csdn.net/hillgong/archive/2009/03/01/3945398.aspx

逻辑移位(不管是左移位还是右移位) 都是空缺处补0

例如: mov ax , 1100_0111_0110_1000B
mov cl , 3
shl ax , cl ; 结果 ax = 0011_1011_0100_0000

mov ax , 1100_0111_0110_1000B
mov cl , 3
shr ax , cl ; 结果 ax = 0001_1000_1110_1101

算术移位要保证符号位的不改变(逻辑左移位补0, 逻辑右移位看符号位)

例如: mov ax , 1100_0111_0110_1000B
mov cl , 3
sal ax , cl ; 结果 ax = 0011_1011_0100_0000

mov ax , 1100_0111_0110_1000B
mov cl , 3
sar ax , cl ; 结果 ax = 1111_1000_1110_1101

mov ax , 0100_0111_0110_1000B
mov cl , 3
sar ax , cl ; 结果 ax = 0000_1000_1110_1101

可以总结如下:

算术左移同逻辑左移
算术右移移入的位用符号位填
逻辑右移移入的位用0填

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hillgong/archive/2009/03/01/3945398.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: