逻辑移位 算术移位
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
逻辑移位(不管是左移位还是右移位) 都是空缺处补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
相关文章推荐
- Visual Basic 2008 运算符(算术、关系、逻辑、字符串连接、赋值、移位)——汇总
- 算术移位与逻辑移位有什么区别? 其他开发语言 / 汇编语言 - CSDN社区 community.csdn.net
- 算术移位与逻辑移位
- 算术与逻辑移位
- 算术移位和逻辑移位实现分析
- 算术移位和逻辑移位
- 算术移位和逻辑移位
- 从头认识C—算术移位和逻辑移位
- 算术移位与逻辑移位有什么不同
- 算术移位 和 逻辑移位
- C/C++ 算术移位&&逻辑移位 int && long long间的转化
- 逻辑移位和算术移位
- 算术移位与逻辑移位有什么区别?
- C语言之逻辑移位与算术移位
- (ZT)算术移位和逻辑移位的区别
- 【C语言/C++】算术移位和逻辑移位以及一道移位的题目
- 【C语言/C++】算术移位和逻辑移位以及一道移位的题目
- 算术移位与逻辑移位有什么区别?
- 算术移位与逻辑移位有什么区别?
- 逻辑移位与算术移位