Binary 如何从二进制的较小数字中减去?
我有两个号码。负数用2的补码翻译Binary 如何从二进制的较小数字中减去?,binary,Binary,我有两个号码。负数用2的补码翻译 a = 160 = A0 = 1010 0000 b = -28 = E4 = 1110 0100 我必须执行以下操作a-b。我一直借到最后一点,但后来我遇到了这样的情况 0 1 - 1 1 --- ? 0 我应该借用一些虚构的东西吗?在十进制1-3=-2,所以答案是BC,但是你如何解释这里的负2?如果你在做2的补码计算,两个数字都是2的补码,所以A0等于十进制-96,而不是160 160不能用8bit 2的补码表
a = 160 = A0 = 1010 0000
b = -28 = E4 = 1110 0100
我必须执行以下操作a-b
。我一直借到最后一点,但后来我遇到了这样的情况
0 1
- 1 1
---
? 0
我应该借用一些虚构的东西吗?在十进制
1-3=-2
,所以答案是BC
,但是你如何解释这里的负2
?如果你在做2的补码计算,两个数字都是2的补码,所以A0
等于十进制-96
,而不是160
160
不能用8bit 2的补码表示。我将在这里使用9位2的补码
a-b
其中a=160
和b=-28
等于160+28
。这就是你想要的吗
0 1010 0000
+ 0 0001 1100
-------------
0 1011 1100
还是要计算160-28
?这等于160+(-28)
我们可以忽略左1,因为我们正在进行9位2的补码计算。因此结果是0 1000 0100
,即132
这是2的补码的优点,你不必做减法,你可以把2的补码加到数字上而不是减去它
8比特2与原始二进制文件的补充:
1010 0000
+ 1110 0100
---------
11000 0100
结果是
1000 0100
,这是-124
(-96-28)。为什么我们需要8位2的补码?这不是160-28的正确答案,对吗?@Jwan622我们不想在这里使用8位2的补码,因为160在8位2的补码中不可表示。因此,使用(错误的)8位2的补码值160(实际上是-96)将给出错误的结果。
1010 0000
+ 1110 0100
---------
11000 0100