SAR,SHR,SAL,SHL区别
是不是就是SAR不是补0,其他的都是补0呢比如100,SAL1位后是不是000.SAR1位后是不是110...
是不是就是SAR不是补0,其他的都是补0呢
比如100,SAL1位后是不是000.SAR1位后是不是110 展开
比如100,SAL1位后是不是000.SAR1位后是不是110 展开
7个回答
展开全部
楼上说的百对,shl和sal,左移的操作,效果都是一样的(shl和sal的机器码都是相同的)
sar和shr的主要区别在于,向右移动时,sar会根据最高度为是否为1来扩展符号位,shr只把移出来的位补0
比如
-1
的16位二进制是1111
1111
mov
ax,
-1
sar
ax,
1
;
ax还是1111
1111
shr
ax,
1;
这下ax就变成0111
1111了专
这就是“算数”和“逻辑”移位的区别,算数移位保留操作数的符号,逻辑移位只把操作数当作一块单纯的存储属空间
sar和shr的主要区别在于,向右移动时,sar会根据最高度为是否为1来扩展符号位,shr只把移出来的位补0
比如
-1
的16位二进制是1111
1111
mov
ax,
-1
sar
ax,
1
;
ax还是1111
1111
shr
ax,
1;
这下ax就变成0111
1111了专
这就是“算数”和“逻辑”移位的区别,算数移位保留操作数的符号,逻辑移位只把操作数当作一块单纯的存储属空间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上说的对,shl和sal,左移的操作,效果都是一样的(shl和sal的机器码都是相同的)
sar和shr的主要区别在于,向右移动时,sar会根据最高为是否为1来扩展符号位,shr只把移出来的位补0
比如
-1
的16位二进制是1111
1111
mov
ax,
-1
sar
ax,
1
;
ax还是1111
1111
shr
ax,
1;
这下ax就变成0111
1111了
这就是“算数”和“逻辑”移位的区别,算数移位保留操作数的符号,逻辑移位只把操作数当作一块单纯的存储空间
sar和shr的主要区别在于,向右移动时,sar会根据最高为是否为1来扩展符号位,shr只把移出来的位补0
比如
-1
的16位二进制是1111
1111
mov
ax,
-1
sar
ax,
1
;
ax还是1111
1111
shr
ax,
1;
这下ax就变成0111
1111了
这就是“算数”和“逻辑”移位的区别,算数移位保留操作数的符号,逻辑移位只把操作数当作一块单纯的存储空间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SHL和SAL事实际没有区别,移动结果都是一样的,SHL是逻辑左移,SAL,算法左移,它们都是向左移动几位,最右就补几个0
比如
SHL
ax,CL
;ax=1111
1111B
CL=4
,移动后AX=1111
0000
SAL
AX,CL
;AX=0101
1100
CL=5移动后
AX=1000
0000
SHR是逻辑右往,向右移动几位,最左边(即最高位补0)比如
SHR
AX,
CL
;AX=1101
1010
CX=3
移动后AX=0001
1011
SAR是算法右移,向右移动几位,最左边第一位保持,其他补0
SAR
AX,
CL
AX=11
00
1111,CX=5移动后AX=
1000
0110
SAR
AX,CL
AX=0011
1111
CX=3
移动后
AX=
0
00
00111
比如
SHL
ax,CL
;ax=1111
1111B
CL=4
,移动后AX=1111
0000
SAL
AX,CL
;AX=0101
1100
CL=5移动后
AX=1000
0000
SHR是逻辑右往,向右移动几位,最左边(即最高位补0)比如
SHR
AX,
CL
;AX=1101
1010
CX=3
移动后AX=0001
1011
SAR是算法右移,向右移动几位,最左边第一位保持,其他补0
SAR
AX,
CL
AX=11
00
1111,CX=5移动后AX=
1000
0110
SAR
AX,CL
AX=0011
1111
CX=3
移动后
AX=
0
00
00111
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就SAR最高位保持不变,其他都补0.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询