引言
计算机内部的硬件电路怎么实现加法,减法,乘法,除法?
加法:全加器的串接。
减法:利用数学规律变成加法。
乘法:利用数学规律变成加法。
除法:利用数学规律变成乘法,再把乘法变成加法。
两种编码规则
科学家根据正数和负数两种可能性:
分别涉及了两种编码解码规则:有符号数,无符号数。
无符号数编码规则
在8比特位的二进制数中,如果要表示一个正数
100(10)
01100100 (2)
无符号数不能表示负数
有符号数编码规则
- 原码:最高位为符号位,其余各位为数值本身的绝对值
- 反码:
正数:反码与原码相同
负数:符号位为1,其余位对原码取反 - 补码:
正数:补码与原码相同
负数:符号位为1,其余位对原码取反后+1
1的原码:0 0 0 0 0 0 0 1
1的反码:0 0 0 0 0 0 0 1
1的补码:0 0 0 0 0 0 0 1
-1的原码:1 0 0 0 0 0 0 1
-1的反码:1 1 1 1 1 1 1 0
-1的补码:1 1 1 1 1 1 1 1
0在计算机中分+0与-0,它们的原码,补码,反码如下
+0的原码:0 0 0 0 0 0 0 0
+0的反码:0 0 0 0 0 0 0 0
+0的补码:0 0 0 0 0 0 0 0
-0的原码:1 0 0 0 0 0 0 0
-0的反码:1 1 1 1 1 1 1 1
-0的补码:0 0 0 0 0 0 0 0
补码形式相加计算
意义
补码在计算机中表示数值型数据的优势,和原码、反码等相比可表现在如下方面 :
- 解决了符号的表示的问题;
- 可以将减法运算转化为补码的加法运算来实现,克服了原码加减法运算繁杂的弊端,可有效简化运算器的设计;
- 在计算机中,利用电子器件的特点实现补码和真值、原码之间的相互转换,非常容易;
- 补码表示统一了符号位和数值位,使得符号位可以和数值位一起直接参与运算,这也为后面设计乘法器除法器等运算器件提供了极大的方便。总之,补码概念的引入和当时运算器设计的背景不无关系,从设计者角度,既要考虑表示的数的类型(小数、整数、实数和复数)、数值范围和精确度,又要考虑数据存储和处理所需要的硬件代价。因此,使用补码来表示机器数并得到广泛的应用,也就不难理解了。