(计算机组成原理)第二章数据的表示和运算-第二节2:原码反码补码和移码的作用
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(计算机组成原理)第二章数据的表示和运算-第二节2:原码反码补码和移码的作用相关的知识,希望对你有一定的参考价值。
一:原码直接运算的弊端
前面我们刚说了各种码,计算机中的各种数是要经过大量运算的,如果在这里我们不管别的,直接按照习惯采用原码对应二进制位相加的话,如果是无符号数那么结果正确,比如下面
但是如果它们表示的是有符号数呢,那么计算的结果明显是错误的
所以这也就有要求计算机能够识别加减法运算,并能做出相应调整。算术逻辑单元也要有加法器和减法器才行,加法器实现成本较低,但是减法器成本太大,所以一个可行的方案就是使用加法代替减法
二:如何使用加法实现减法
如下有一个始终,开始时指向的是10,如果要让其指向7,那么有两种方法:逆时针旋转至7或顺时针旋转至7。
如果是逆时针旋转就相当于减法10-3=7
,顺时针旋转应该加多少呢?,应该加的是9,然后使用19%12=7
这个例子反映了一个道理:一个减法操作可以转换为一个与之对应的加法操作,而这里采用的是取余。-3和9在
M
O
D
12
MOD 12
MOD12这样的情况下是等价的。-3和9对12取余都是9,还有很多的数在MOD12下是等价的,比如21,33,-15等等。同时这些数之间的差距均为12。
因此上面例子中10+(-3)和10+9就是等价的,运算之后再mod12就得到结果
在上面的条件中我们两个等价的数绝对值的和(m)称为模,两个数互为补数,比如-3和9。因此在(mod m)的条件下,若能找到负数的补数,就可以用正数的加法代替减法,怎么找呢?
− a ( a > 0 ) 的 补 数 = 模 − ∣ a ∣ -a(a>0)的补数=模-|a| −a(a>0)的补数=模−∣a∣
以下面的例子为例
要完成运算,只需要找到-14的补数即可,这里机器字长为8bit,因此其表示的数的范围为0~2
8
−
1
^{8}-1
8−1,这个
2
8
−
1
2^{8}-1
28−1就相当于表盘上的12,所以当表示范围超时时,数字只会被映射在这个范围内,也就是说计算机天然的完成了
2
8
2^{8}
28的操作
因此-14的补数为
+
1
,
00000000
+1,00000000
+1,00000000-
00001110
00001110
00001110=
11110010
11110010
11110010,大家认真观察就可以发现-14的补数其实就是-14的补码,接着完成运算,其结果就是0
以上是关于(计算机组成原理)第二章数据的表示和运算-第二节2:原码反码补码和移码的作用的主要内容,如果未能解决你的问题,请参考以下文章
(计算机组成原理)第二章数据的表示和运算-第二节1:定点数的表示(原码反码补码和移码)
(计算机组成原理)第二章数据的表示和运算-第二节5:定点数乘法运算(原码/补码一位乘法)
(计算机组成原理)第二章数据的表示和运算-第二节6:定点数除法运算(原码/补码一位除法)
(计算机组成原理)第二章数据的表示和运算-第二节3:定点数的移位运算(算数移位逻辑移位和循环移位)