汇编语言 - 添加两个带符号的数字

时间:2017-08-20 16:33:27

标签: assembly tasm

亲爱的Stackoverflow社区

问题:给定两个带符号的数字x = 01111110(基数2)和y = 00001000(基数2)。解释为什么x + y操作会导致错误的结果?

我的尝试:(理解)根据我对有关符号数量级的研究,如果答案溢出到符号中,那么x + y错误的唯一方法就是。

任何人都可以帮助我,我已经研究并阅读过一个extra_context补码的符号幅度,但仍然觉得很困惑。

非常感谢你花时间和耐心看我的问题。

1 个答案:

答案 0 :(得分:2)

假设你的有符号整数是8位宽,它就像你说的那样:它在符号位中溢出,(以2的补码)导致环绕。

01111110 +
00001000 =
10000110

正如您所看到的,将两个正值(126和8,它们都没有设置符号位)相加得到一个负值(它有符号位设置;在2的补码中,它是-122),显然是错的。