使用两个补码搞乱二进制减法,但我想解释一下。
要执行11 - 9
我首先将0转换为负数,方法是将0更改为1,将1更改为0,然后再加1。然后我添加负数,使其变为11 +(-9)
二进制
00001011
+11110111
---------
100000010
据我了解,我只是忽略了MSB,所以它变成了:
00000010
为什么我可以放弃MSB?
答案 0 :(得分:0)
因为您首先有效地添加了它。
反转/添加一个组合相当于从常数中减去一个大于允许的#34;
100000000
00001001
--------- -
11110111
因此,您已将11 - 9
更改为11 + (256 - 9)
,您可以将其写为11 - 9 + 256
,以便更清楚地表明您添加了"额外位"你自己为了做数学,所以现在你必须放弃它才能得到原始表达式的结果。