我已经学习了一半以上,并且我熟悉有符号和无符号整数如何以位表示的概念,我知道这似乎是一个奇怪的问题,答案很明显,但我我想知道对于其中一个被认为是有符号而另一个被认为是无符号的一对数字,使用加法之类的算术运算是否有意义,我想到了如下多个示例,它们将产生正确的结果:
10000001(1 字节整数,被视为无符号,相当于 129)
+
11111111(1 字节整数,被视为有符号(二进制补码系统),相当于 -1)
10000000(1 字节整数,在无符号逻辑中相当于 128)
现在,如果上限值在 AL 寄存器中,我们有以下指令代码(GAS 格式):
addb -1, %al
然后 EFLAGS 寄存器的进位标志 (CF) 将在操作完成后设置,并通知实际上没有发生的溢出,可能是因为在溢出方面有一个无符号数 EFLAGS 寄存器的溢出标志 (OF)应该参考。所以我很困惑做这样的事情是否明智。