目录
2.1 数制与编码
2.1.1 进位计数制及其相互转换
在计算机系统内部,所有信息都是用二进制编码,这样做的原因如下:
- 二进制只有两种状态,使用有两个稳定状态的物理器件就可以表示二进制中的每一位,制造成本低,例如用高低电平或电荷的正负性都可以很方便地表示0和1。
- 二进制位1和0正好与逻辑值真 和假 对应,为计算机实现逻辑运算和程序中的逻辑判断提供了便利条件。
- 二进制编码和运算规则都很简单,通过逻辑门电路能方便的实现算术运算。
进位计数法
一个r进制数的数值可以表示为,在上述式子中,为基数,是第i位的位权(规定整数最低位为第0位);的取值是从0~r-1共r个数码中的任何一个。
不同进制数之间的相互转换
- 二进制转换为八进制和十六进制
- 任意进制数转换为十进制数
- 十进制数转换为任意进制数
采用基数乘除法,对整数部分用除基取余法,对小数部分用乘积取整法,最后将结果拼接。
除基取余法
整数部分除基取余,最先取得的余数为数的最低位,商为0时结束。
乘积取整法
小数部分乘基取整,最先取得的整数为数的最高位,乘积为1.0时结束。
2.1.2 定点数的编码表示
真值与机器数
- 真值是机器数所代表的实际值,即带有+或-的值。
-
在计算机中,通常将数的符号和数值一起编码,将数据的符号数字化,通常用0表示正,1表示负;这种把符号数字化的数称为机器数。
原码
用机器数的最高位表示数的符号位,其余各位表示数的绝对值。
纯整数的原码定义:
- 当时,
- 当时,
例如,;,
纯小数的原码定义:
- 当时,
- 当,
例如,;,
若机器字长为n位,原码的表示范围为
补码
补码出现是让减法操作变为加法,节省了硬件成本。这里主要探讨整数的补码。二进制补码在书上的表示方法:
- 正数的补码就是其本身
- 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
但在实际中,补码的本质是人为规定的一种特殊的模运算,如图。
若字长为n位,则补码的表示范围为