【发布时间】:2010-08-02 20:53:07
【问题描述】:
为什么用二进制补码将正数和负数相加时不会发生算术溢出。如果可以请提供一个 8 位有符号整数(字节)的示例。
【问题讨论】:
标签: numbers overflow math signed
为什么用二进制补码将正数和负数相加时不会发生算术溢出。如果可以请提供一个 8 位有符号整数(字节)的示例。
【问题讨论】:
标签: numbers overflow math signed
这……听起来像是家庭作业。您的意思是使用“作业”标签吗?
不能溢出的原因是因为添加一个正数x 和一个负数y 将产生一个值z,这样abs(z) < abs(x) 和abs(z) < abs(y)。由于x 和y 可以表示为没有溢出,并且z 比任何一个更接近 为零,z 也可以表示为没有溢出。
任何一对正负数构成一个例子。
【讨论】:
假设您有一个正数 A 和一个负数 B。他们的总和是S。那么:
S <= A && S >= B
他们的总和会在中间的某个地方。注意会有进位,但这不是溢出(不正确的总和)。
【讨论】: