在计算机中,算术移位和逻辑移位有着不同的处理指令。
算术左移 (SAL) 与逻辑左移 (SHL) 指令执行相同的操作; 它们将目标操作数中的位向左(朝向更高有效位的位置)移位。 对于每个移位计数,目标操作数的最高有效位将移入 CF 标志, 最低有效位将被清除(请参阅“IA-32 英特尔® 体系结构软 件开发人员手册”第 1 卷的“图 6-6”)。
算术右移 (SAR) 与逻辑右移 (SHR) 指令将目标操作数的位向右 (朝向更低有效位的位置)移位。 对于每个移位计数,目标操作数的最低有效位将移入 CF 标志,根据指令类型, 最高有效位将设置为 1 或清除为 0。 SHR 指令清除最高有效位(请参阅“IA-32 英特尔® 体系结构 软件开发人员手册”第 1 卷的“图 6-7”); 根据目标操作数中原始值的符号(最高有效位),SAR 指令将设置或清除最高有效位。 实际上,SAR 指令使用移位之前的值的符号来填充移位之后的值的空位 请参阅“IA-32 英特尔® 体系结构软件开发人员手册”第 1 卷的“图 6-8”)。