我正在学习汇编语言(特定于x86)。我明白了
SAL
和SHL
以类似的方式工作(清除lsb并将msb带到CF)从Difference between SHL and SAL in 80x86开始。
考虑到SHR
和SAR
的运算方式不同(后者保持msb不变)。
我希望有一个明确的概念为什么 Shift算术权 SAR
的功能定义与 Shift Right SHR
但同时SHL
和SAL
保留了类似的功能?
答案 0 :(得分:6)
因为在左移的情况下没有什么可以保留的。在那些左移改变符号(你可能想要以某种方式阻止)的情况下,没有溢出的结果将不适合寄存器(这是自动的 - 如果它确实适合,那么它不会溢出到首先)。所以无论如何你无能为力。
但右移不能溢出,它使数字变小(或保持不变)。所以现在你可以选择,我是否保持最高位。