二进制加法。它溢出了吗?

时间:2010-04-27 23:37:34

标签: binary overflow underflow

二进制值为2s补充形式。

如果我要添加110001(-15)和101110(-18),并且答案必须以6位整数存储,这是下溢/溢出。

3 个答案:

答案 0 :(得分:2)

这是溢出的,你的教授是正确的。您正在存储可以保存在分配空间中的更多位(即使位表示的数字为负数。)

下溢是指通过大数学运算将位变为零。在定点数学中很常见。将一个非常小的数字除以一个非常大的数字,你经常得到一个0.这就是下溢。

答案 1 :(得分:1)

讨论了一个很好的例子,用于添加两个内容为-70和-90的寄存器,并将其存储在第三个寄存器中。

Let's assume R1[8 bits] = -70 R2[8 bits] = -90 Result[9 bits] = -160, an extra bit for overflow.

下面的ref 1上的overflow_signed_detection页面讨论了这个例子。 根据本页讨论的规则,该示例可以缩放为任意两个带符号的十进制数。

答案 2 :(得分:0)

编辑:我刚刚意识到-33对于6位来说太大了,所以结果是-33而不是+31,因此肯定是溢出:)

添加两个数字并获得正确的结果,如果绝对不是溢出。溢出的一个例子是添加两个负数并得到一个正数(反之亦然)。

例如,如果添加两个正数0x7fffffff和0x00000001,则得到负数0x80000000,这肯定是错误的,因此是溢出。

也许你对携带的溢出感到困惑?