【从零开始学习计算机科学】计算机组成原理(二)信息表示与编码
- 信息表示与编码
-
- 进位计数制
-
- 十进制(Decimal)
- 二进制(Binary)
- 十六进制(Hexadecimal)
- 进位计数制之间的转换
- 常用的信息分类与表示
- 定点表示
- 无符号数的编码
-
- 正整数的表示
- 原码表示法
-
- 定点小数的原码表示
- 定点整数的原码表示
- 补码表示法
-
- 模的概念
- 补码的定义
- 定点小数的补码表示
- 定点整数的补码表示
- 原码、补码之间的转换
- 反码表示法
-
- 定点小数的反码表示
- 定点整数的反码表示
- 移码表示法
-
- 移码和补码的关系
- 移码的特点
- 定点数的表示方法总结
- 浮点数的表示方法
-
- 浮点数的规格化表示
- 隐藏位技术
- 规格化浮点数的真值
- 十进制数的编码
- 非数值数据
-
- 字符的表示方法
- 字符编码-ASCII 码
- 字符编码-EBCDIC 码
- 汉字的表示方法
- 信息表示与编码
-
- 进位计数制
-
- 十进制(Decimal)
- 二进制(Binary)
- 十六进制(Hexadecimal)
- 进位计数制之间的转换
- 常用的信息分类与表示
- 定点表示
- 无符号数的编码
-
- 正整数的表示
- 原码表示法
-
- 定点小数的原码表示
- 定点整数的原码表示
- 补码表示法
-
- 模的概念
- 补码的定义
- 定点小数的补码表示
- 定点整数的补码表示
- 原码、补码之间的转换
- 反码表示法
-
- 定点小数的反码表示
- 定点整数的反码表示
- 移码表示法
-
- 移码和补码的关系
- 移码的特点
- 定点数的表示方法总结
- 浮点数的表示方法
-
- 浮点数的规格化表示
- 隐藏位技术
- 规格化浮点数的真值
- 十进制数的编码
- 非数值数据
-
- 字符的表示方法
- 字符编码-ASCII 码
- 字符编码-EBCDIC 码
- 汉字的表示方法
- 汉字的存储
- 汉字的输出
- 汉字编码与输入
- 区位码、国标码与机内码的关系
信息表示与编码
进位计数制
进位计数制是指,用少量的数字符号,按先后次序把它们排成数位,由低到高进行计数,计满进位,这样的方法称为进位计数制。
在进位计数制中,基数是一个很重要的概念。基数是指进位制基本特征数,即所用到的数字符号个数。
在进位计数制中,我们可以用一个与基数相关的多项式来表示该进制下的任意一个数。
十进制(Decimal)
基数:10。
符号:0,1,2,3,4,5,6,7,8,9。
计算规律:逢十进一或借一当十。
十进制数的多项式表示:
N 10 = d n − 1 × 1 0 n − 1 + d n − 2 × 1 0 n − 2 + ⋯ + d 1 × 1 0 1 + d 0 × 1 0 0 + d − 1 × 1 0 − 1 + d − 2 × 1 0 − 2 + ⋯ + d − m × 1 0 − m N_{10}=d_{n-1} \times 10^{n-1} + d_{n-2} \times 10^{n-2} + \cdots + d_1 \times 10^1 + d_0 \times 10^0 + d_{-1} \times 10^{-1} + d_{-2} \times 10^{-2} + \cdots + d_{-m} \times 10^{-m} N10=dn−1×10n−1+dn−2×10n−2+⋯+d1×101+d0×100+d−1×10−1+d−2×10−2+⋯+d−m×10−m
其中 m,n 为正整数,其中 n 为整数位数;m 为小数位数。 D i D_i Di 表示第 i 位的系数, 1 0 i 10^i 10i 称为该位的权。
二进制(Binary)
基数:2。
符号:0,1。
计算规律:逢二进一或借一。
二进制的多项式表示:
N 2 = d n − 1 × 2 n − 1 + d n − 2 × 2 n − 2 + ⋯ + d 1 × 2 1 + d 0 × 2 0 + d − 1 × 2 − 1 + d − 2 × 2 − 2 + ⋯ + d − m × 2 − m N_{2}=d_{n-1} \times 2^{n-1} + d_{n-2} \times 2^{n-2} + \cdots + d_1 \times 2^1 + d_0 \times 2^0 + d_{-1} \times 2^{-1} + d_{-2} \times 2^{-2} + \cdots + d_{-m} \times 2^{-m} N2=dn−1×2n−1+dn−2×2n−2+⋯+d1×21+d0×20+d−1×2−1+d−2×2−2+⋯+d−m×2−m
其中 n 为整数位数;m 为小数位数。 D i D_i Di 表示第 i 位的系数, 2 i 2^i 2i 称为该位的权。
十六进制(Hexadecimal)
基数:16。
符号:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。
计算规律:逢十六进一或借一当十六。
十六进制的多项式表示:
N 16 = d n − 1 × 1 6 n − 1 + d n − 2 × 1 6 n − 2 + ⋯ + d 1 × 1 6 1 + d 0 × 1 6 0 + d − 1 × 1 6 − 1 + d − 2 × 1 6 − 2 + ⋯ + d − m × 1 6 − m N_{16}=d_{n-1} \times 16^{n-1} + d_{n-2} \times 16^{n-2} + \cdots + d_1 \times 16^1 + d_0 \times 16^0 + d_{-1} \times 16^{-1} + d_{-2} \times 16^{-2} + \cdots + d_{-m} \times 16^{-m} N16=dn−1×16n−1+dn−2×16n−2+⋯+d1×161+d0×160+d−1×16−1+d−2×16−2+⋯+d−m×16−m
其中 n 为整数位数;m 为小数位数。 D i D_i Di 表示第 i 位的系数, 1 6 i 16^i 16i 称为该位的权。
进位计数制之间的转换
- R进制转换成十进制的方法
按权展开法:先写成多项式,然后计算十进制结果。
N = d n − 1 × R n − 1 + d n − 2 × R n − 2 + ⋯ + d 1 × R 1 + d 0 × R 0 + d − 1 × R − 1 + d − 2 × R − 2 + ⋯ + d − m × R − m N = d_{n-1} \times R^{n-1} + d_{n-2} \times R^{n-2} + \cdots + d_1 \times R^1 + d_0 \times R^0 + d_{-1} \times R^{-1} + d_{-2} \times R^{-2} + \cdots + d_{-m} \times R^{-m} N=dn−1×Rn−1+dn−2×Rn−2+⋯+d1×R1+d0×R0+d−1×R−1+d−2×R−2+⋯+d−m×R−m
- 十进制转换成二进制方法
方法1、分别对整数部分和小数部分采用两种不同的方法。
整数部分的转换采用除2取余法(基数除法)。除基取余法把给定的除以基数,取余数作为最低位的系数,然后继续将商部分除以基数,余数作为次低位系数,重复操作直至商为0。
小数部分的转换乘2取整法(基数乘法)。乘基取整法把给定的十进制小数乘以2,取其整数作为二进制小数的第一位,然后取小数部分继续乘以2,将所的整数部分作为第二位小数,重复操作直至得到所需要的二进制小数。
方法2、减权定位法。
减权定位法将十进制数依次从二进制的最高位权值进行比较,若够减则对应位置1,减去该权值后再往下比较,若不够减则对应位为0,重复操作直至差数为0。
常用的信息分类与表示
信息存在数值信息与非数值信息,数值信息包括无符号数和有符号数,无符号数默认为正整数,有符号数分为定点数和浮点数。
在计算机中,正、负号与某进制数绝对值的形式称为真值。如 +3,-5 等,即实际值;符号以及数值都数码化的数称为机器数,如 X=01011,Y=1101,即真值在机器中的表示。
计算机中常用的数据表示格式有两种,定点格式与浮点格式。定点格式容许的数值范围有限,但要求的处理硬件比较简单。浮点格式容许的数值范围很大,但要求的处理硬件比较复杂。
定点表示
定点表示约定机器中所有数据的小数点位置是固定不变的。(由于约定在固定的位置,小数点就不再使用记号“.”来表示)通常将数据表示成纯小数或纯整数。
因此,定点数就是指小数点位置固定不变的数。定点数分为定点整数和定点小数。定点整数是指小数点固定在最低位数的右面;定点小数是指小数点固定在最高位数的后面,即纯小数表示。
定点数表示的范围如下:
纯小数:
0 ≤ ∣ x ∣ ≤ 1 − 2 − n 0 \leq |x| \leq 1 - 2^{-n} 0≤∣x∣≤1−2−n
纯整数:
0 ≤ ∣ x ∣ ≤ 2 n − 1 0 \leq |x| \leq 2^{n - 1} 0≤∣x∣≤2n−1
目前计算机中多采用定点纯整数表示,因此我们将定点数表示的运算简称为整数运算。
无符号数的编码
正整数的表示
正整数可以表示为以下的位串:
x = x 0 x 1 x 2 … x n , x i = { 0 , 1 } , 0 ≤ i ≤ n x = x_0 x_1 x_2 \ldots x_n, \quad x_i = \{0,1\}, \quad 0 \leq i \leq n x=x0x1x2…xn,xi={
0,1},0≤i≤n
即
x = x 0 ⋅ 2 n + x 1 ⋅ 2 n − 1 + … + x n − 1 ⋅ 2 1 + x n x = x_0 \cdot 2^n + x_1 \cdot 2^{n-1} + \ldots + x_{n-1} \cdot 2^1 + x_n x=x0⋅2n+x1⋅2n−1+…+xn−1⋅21+xn
其中 0 ≤ x ≤ 2 n + 1 − 1 0 \leq x \leq 2^{n+1} - 1 0≤x≤2n+1−1
例如,对于 x = 010101 x = 010101 x=010101,其数值为 2 4 + 2 2 + 2 0 = 21 2^4 + 2^2 + 2^0 = 21 24+22+20=21。
在实际的数据处理的过程中,如不需要设置符号位可用全部字长来表示数值大小。如 8 位无符号数的取值范围是 0~255( 2 8 − 1 2^8 - 1 28−1)。
原码表示法
定点小数的原码表示
若定点小数的原码形式为 x 0 . x 1 x 2 ⋯ x n x_0.x_1 x_2 \cdots x_n x0