【问题标题】:Is this an Overflow? - Twos Complement这是溢出吗? - 补码
【发布时间】:2015-06-09 11:08:26
【问题描述】:

我正在尝试将以下两个二进制数相加,但是我无法这样做,因为我不确定这是否是溢出?

110101 + 010111 我得到的答案是:1001100

我是删除答案中最左边的 1 还是保留它?通过删除它我得到 12,否则答案是不正确的。我是不是做错了什么?

是这样吗?

【问题讨论】:

  • 最终答案是 1001100,应该是 (-11) + 23 = 12。 - 但是,如果我要删除最左边的 1,我会得到 12 - 我只留下 1 吗?

标签: binary decimal twos-complement


【解决方案1】:

这个问题的答案取决于您所谈论的系统中单词的大小。在一个 8 位(或更高)的系统中,你正在做 2 的补码,

110101 + 010111 = 1001100

等同于:

00110101 + 00010111 = 01001100

是:53 + 23 = 76,没有溢出或执行。

如果是 7 位系统,做 2 的补码,那么你有:

0110101 + 0010111 = 1001100

这是53 + 23 = -52。有溢出,但没有执行。

如果是6位系统,做2的补码,那么:

110101 + 010111 = (1)001100

这是-11 + 23 = 12。没有溢出,但有执行。请注意,在 6 位系统中,从技术上讲,您不能拥有 1001100,因为它是 7 位。你会得到001100

有关参考,请参阅The CARRY flag and OVERFLOW flag in binary arithmetic

【讨论】:

    猜你喜欢
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多