gpt4 book ai didi

assembly - 在 SAR 与 SHR 的汇编中将二进制数向右移动

转载 作者:行者123 更新时间:2023-12-01 09:27:27 28 4
gpt4 key购买 nike

我们知道,当我们将一个二进制数向右移动时,它被除以 2。对于号码:1001 0001。假设存储在 AX 寄存器中:

  • 如果我们认为它是无符号数(等于十进制的145):SHR AX, 1 将使 AX 等于 0100 1000 等于 72 十进制,这是对。

  • 但如果我们将其视为有符号数(等于十进制的 -111):SAR AX, 1 将使 AX 等于 1100 0100 等于 -56 十进制,这是错误的,因为它应该等于 -55十进制。

为什么?

最佳答案

SHR 指令执行无符号右移,移入零:

Input:  1001 0001
| |\
+------+ +--> lost
v
+------+
| |
Output: 0100 1000
^
+-- added by SHR

另一方面,SAR 指令执行 signed 右移,将最高有效位解释为符号。它在符号位的副本中移动:

Input:  1001 0001
| |\
+------+ +--> lost
| v
|+------+
v| |
Output: 1100 1000
^
+-- preserved (copied) by SAR

关于assembly - 在 SAR 与 SHR 的汇编中将二进制数向右移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20790864/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com