有符号二进制补码减法

有符号二进制补码减法

假设我们使用 3 位二进制补码数,并且我们将执行减法运算。被减数为 +3,减数为 -4。我们应该得到减数的 2 的补码并将其添加到被减数。+3 = 011 -4 = 100--->它的二进制补码再次为 100,现在我们将它们相加得到 111,这是不正确的。因为我们应该得到 3-(-4) = +7,但结果却是负数!您如何分析溢出?为什么结果错误?

答案1

如果使用最左边的位来表示符号,则不能使用整个 3 位数字。100要么是(正数,无符号)4,要么实际上是(负数)0。

如果你的数字是“-4”,那么它实际上必须是1100,而不仅仅是100。然后你利用你拥有的信息,知道你有一个 3 位数字,其中一个数字是负数。

我的意思是你得到的价值7.111对于 3 位无符号数来说,正好是 7。

如果您使用 3 位补码函数,您只是没有考虑到第一个数字不是您的符号数字这一事实。您必须首先查看您的数字并丢弃与当前操作无关的信息,即符号数字。符号告诉您需要用它做什么,但它不是该数字值的“实际”部分。

如果您使用带符号的 3 位数字,那么根据定义,您只能执行 2 位加法和减法。

相关内容