2011-06-07 133 views
13

我的一个演讲稿中给出算术溢出的例子,对于ARM芯片上的条件分支标志一个主题开展,引用如下:算术溢出与算术运

  • V(溢) - 7FFFFFFF 1
  • C(进位) - FFFFFFFF + 1

据推测为举例起见,地址只能容纳8个字节。所以对我来说,似乎喜欢加1到7FFFFFFF给80000000.我认为80000000仍然适合一个8字节的地址。

为什么这是一个算术溢出?这张幻灯片是否是错误的?或者我的理解有缺陷?

感谢您的任何答复

+2

您溢出带符号的整数。 0x80000000是64位二进制补码算法中最大可能的*负值*(而不是从0x7fffffff)。 – falstro 2011-06-07 13:31:55

+0

@falstro,即32位:) – sgupta 2014-11-28 06:07:29

+0

@ user1075375是的,我知道。一定是咖啡因低。 :) – falstro 2014-11-28 21:36:52

回答

25
  • 溢出标志被置当寄存器不能正确表示结果作为符号值(你溢出到符号位)。当寄存器不能正确表示结果为无符号值(不需要符号位)
  • 卡里标志被设置。
+0

好吧,这是有道理的 - 谢谢! – eggonlegs 2011-06-07 13:42:08

+0

非常简单和简洁。谢了哥们!! – 2015-11-21 16:39:00

5

你得到溢出,如果符号位被破坏。所以你知道你必须调整你的结果。

你得到一个进位,如果结果不中这个值适合。 (需要比你更多的位)。

在过去,你必须写你自己的加法和乘法子程序多字节值。