繁体   English   中英

如何检测溢出标志?

[英]How to detect overflow flag?

在下面的问题中,我想知道为什么OVERFLOW标志设置为1。我知道只有在将两个数字加相同符号并得到不同符号时才会发生溢出。 这是本书解决方案中的错误吗?

在此处输入图片说明

这些看起来像8位无符号数字。 结果是9位,这会使8位寄存器溢出(最近很难找到)。 如果这些是带符号的数字,则它们实际上将具有不同的符号(-1和1)。 但是,该图像显示了一个九位的总和,而不仅仅是0(甚至是00000000)。 因此,这些是无符号的8位,或者“书”中存在错误。 注意半进位被设置。 这表明正在使用16位寄存器的1/2。 这种情况一直在发生。

关于符号不同的说法使溢出不可能发生-只是重申了简单的关系,即将2个相同位大小的数字相加,其中一个为正,另一个为负。 最大的8位正数是127。最大的8位负数是-128。 进行数学运算相对容易。 从127开始,并添加每个可能的负数... 127 + -1 = 126,127 + -2 = 125,127 + -3 = 124,... 127 + -126 = 1,127 + -127 = 0 ,127 + -128 = -1。 总和都不大于127或小于-128,因此不会发生溢出。 您可以通过将每个正数加到-128来完成证明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM