Binary 评估0xfb-0xfa

Binary 评估0xfb-0xfa,binary,hex,Binary,Hex,我首先要讲二进制 0xfb-0xfa 现在11111 011+00000110=100000000001这是下溢,但它肯定不正确,我哪里弄错的 不清楚初始数字是有符号的还是无符号的。结果将是相同的,但推理略有不同 假设您的初始数字是无符号的,则初始转换不正确。 当二进制编码为无符号时,数据为8位。 如果要将它们转换为2s补码而不进行截断,则需要额外的位。所以 0xfb=11111011 0xfa=11111010 -0xfa=00000101+1=00000110 现在我们可以计算加法

我首先要讲二进制

0xfb-0xfa

现在
11111 011+00000110=100000000001
这是下溢,但它肯定不正确,我哪里弄错的

不清楚初始数字是有符号的还是无符号的。结果将是相同的,但推理略有不同

假设您的初始数字是无符号的,则初始转换不正确。 当二进制编码为无符号时,数据为8位。 如果要将它们转换为2s补码而不进行截断,则需要额外的位。所以

0xfb=11111011

0xfa=11111010

-0xfa=00000101+1=00000110
现在我们可以计算加法

+0xfb = 0 11111011
+0xfa = 0 11111010
-0xfa = 1 00000110
我们可以注意到没有溢出。有一个执行,但我们可以忽略它。正数和负数之和不能溢出

现在,由于两个MSB相等,结果可以缩短为8位,得到明显的结果1

如果初始数字是有符号的,则大多数计算是正确的。所有操作都可以在8位上完成。结果将是8位

        (1)
  0xfb     0 11111011
 -0xfa   + 1 00000110
           ----------
           0 00000001   

有一个执行,但没有过流或下流。结果是正确的。

所以在2s补码中永远不会出现溢出?我们忽略了执行溢出对于2s补码的确定是复杂的。如果操作数为!=签名,则可能有或没有执行(可忽略)。如果操作数均>=0,则结果必须为0,并且不应执行任何进位操作。如果操作数都是
        (1)
  0xfb     11111011
 -0xfa   + 00000110
           ----------
           00000001