原码、反码、移码的作用
看笔记一定要心静,慢慢来不急。
之前我们学习了,原码、反码、补码和移码。我们看这个标题会发现,然而并没有反码什么事儿。其实回想一下之前提到过反码的作用,它就是原码变补码的一个中间过程。可以理解为使得原码求补码更方便。好了那么接下来就看剩余的三种码的作用了。
1. 原码
我们回忆一下原码是什么?原码简单来说就是数据在计算机中的表示方式。那么为什么要把数据表示在计算机内呢?这就体现出了计算机的作用了,计算机诞生的原因就是用来计算数据,所以原码的作用就是用来方便完成数据的运算。计算机中的所有复杂运算最终都能分解为简单运算(加减运算),这里我们来看原码的加减运算(为了方便理解这样写,其实最终原码码运算都是加法器实现,具体在后面学习定点数运算详细讲解):
在计算机内,加法-------用加法器完成,减法-------用减法器完成。早期计算机成本很高啊,所以人们就想着能不能把所有的运算都用加法来完成,这样计算机只要有加法器就可以了,就能大幅度的节约成本了,由此补码的作用就体现出来了。
2. 补码
我们知道,减去一个数等于加上这个数的相反数,例如18-9=18+(-9).理论存在。
这里牵扯到模运算,因为在这里不太好描述,具体不在解释,你只要知道补码就是根据模运算原理推出来的,用来简化运算的就行,主要还是掌握补码运算,考试的时候谁也不会让你从模运算推补码。
- 补码运算整个过程全是补码。
如上图,参与运算的是补码,计算出来的结果也是补码,因为正数的原码、反码、补码相同所以不是太明显,结果符号位进位舍弃,并不代表溢出(溢出是:符号位和最高数据位就是符号位右边那一位,一个进位一个不进位)。颜色标记的是符号位。
这时候我们可能意识到,虽然减法用加法实现了,把减法器去除了,但是算出来的是补码,转换原码不还得用其他器件嘛,确实是这样,但是顶不住其他器件比减法器便宜的多啊。
3. 移码
来看一张表:
移码的作用就是方便计算机比较两个数数值的大小,计算机很笨,不像人的大脑一样眼睛看到之后就可以很快知道谁大谁小,计算机只能通过一位一位的比较,它只知道1比0大,所以移码就是为了屏蔽那些符号位啥的干扰,让计算机轻松的比较数值的大小。