什么是补数?
从一串 9 中减去一个数叫做对 9 求补数
比如 112 对 9 求补数
999 - 112 = 887
所以 112 对 9 求补数的结果就是 887
补数是怎么来的?
当计算减法时为了避免借位,所以引出了补数这一概念
比如
253 -176
首先从最后一位算起,3-6 不够减所以从上一位 5 借 1,13-6 得 7
算第二位5被借走 1 位,变 4-7 又不够,向上一位 2 借 1, 14-7 得 7
算第三位 2 被借走 1 位, 1-1 得 0
所以最后结果为 77
我们用了一个数学技巧来避免借位
253 - 176 = 253 - 176 + 1000 - 1000
253 - 176 = 253 - 176 + 999 + 1 - 1000
253 - 176 = 253 + (999 - 176) + 1 - 1000
253 - 176 = 253 + 823 + 1 - 1000
253 - 176 = 1076 + 1 - 1000 = 1077 - 1000 = 77
看到了吗?全程都没有借位。
假如是 176 – 253 呢,结果明显会是负数,为了避免借位,但是计算过程会稍微所差别
176 - 253 = 176 - 253 + 999 - 999
176 - 253 = 176 + (999 - 253) - 999
176 - 253 = 176 + 746 - 999
176 - 253 = 922 - 999 = - (999 - 922) = -77
引入补数的好处显而易见,它避免了我们通过借位来计算减法。
总结下就是
**如果a>b a-b 等于 a+b的补码+1-1000
如果a<b a-b 等于 -(a+b的补码-999)**
当将补码引入二进制计算中时就发生了许多奇妙的现象,
我们将 253 – 176 转为 二进制
11111101-10110000
二进制中补码是有一串 1 组成的,即 11111111
我们先求被减数 10110000 的补数
11111111
-10110000
=01001111
看到么,二进制数的对1的补码即是简单的对每位取反即可,其他的计算方法都与十进制无异了。
(未完待续,明天再补)