评估0xFB的才能,0xFA回应

问题描述 投票:0回答:1
0xfb-0xfa

我必须先转成二进制

0xfb=11111011

0xfa=11111010

-0xfa=00000101+1=00000110

现在11111011+00000110=100000001这是下溢,但它显然是不正确,在哪里我弄错了吗?

binary hex
1个回答
1
投票

目前尚不清楚最初的数是否带符号。其结果将是相同的,但理由是略有不同。

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

+0xfb = 0 11111011
+0xfa = 0 11111010
-0xfa = 1 00000110

现在,我们可以计算出除

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

我们可以看到,没有溢出。有一个进行,但我们可以忽略它的二进制补码。和一正一反数的总和不能溢出。

现在,作为这两个MSB是相等的,结果可缩短为8位给出1的明显的结果。

如果最初的数字签名的,大部分的计算是正确的。所有的操作都可以在8位来完成。其结果将是8位。

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

有一个进,但没有超过或下溢。其结果是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.