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