编码与解码
# 编码与解码
# 十进制的减法
我们来做一道减法题:
2 5 3
- 1 7 6
= 7 7
要做这道题,从最右边一列开始。首先,6比3大,所以需要从5借1,这样就变成了13减6,结果是7。
由于从5借了1,5就变成了4,4比7小,所以继续从2借1,14减7等于7。
2被借1后成为1,1减1为0,所以最后结果是77
# 原码
二进制数的正、负表示方法:通常采用的方法是在二进制数的前面增加一位符号位。符号位为0表示这个数是正数,符号位为1表示这个数是负数。这种形式的数称为原码。
在做减法运算时,如果两个数是用原码表示的,则首先需要比较两数绝对值的大小,然后以绝对值大的一个作为被减数、绝对值小的一个作为减数,求出差值,并以绝对值大的一个数的符号作为差值的符号。这个操作过程比较麻烦,而且需要使用数值比较电路和减法运算电路。
# 补码
# 补码的定义
在日常生活当中,可以看到很多这样的事情:
- 把某物体左转 90 度,和右转 270 度,在不考虑圈数的条件下,最终的效果是相同的;
- 把分针倒拨 20 分钟,和正拨 40 分钟,在不考虑时针的条件下,效果也是相同的;
- 把数字 87,减去 25,和加上 75,在不考虑百位数的条件下,效果也是相同的;
- ……
上述几组数字,有这样的关系:
- 90 + 270 = 360
- 20 + 40 = 60
- 25 + 75 = 100
式中的 360、60 和 100,我们先将它称为“模”。式中的 90 和 270、20 和 40,以及 25 和 75,就是一对对“互补”的数字。模就好比是一个极限,在它的范围内,两个相加等于模的数互为补数
知道了这些有什么用呢?我们可以将减法转换为加法!只需要将求出减数的补码,用被减数+补码即可。