2020年计算机考研复习已经开始,新东方在线在此整理了2020考研计算机组成原理知识点之【数据的表示和运算】,希望能帮助大家!
数制与编码
1. 进位计数制及其相互转换
1)进位计数制
进位计数制是指按照进位制的方法表示数,不同的数制均涉及两个基本概念:基数和权。
基数:进位计数制中所拥有数字的个数。
权:每位数字的值等于数字乘以所在位数的相关常数,这个常数就是权。
2)不同数制间的数据转换
(1)二、八、十六进制数转换成十进制数
(2)十进制数转换成二进制数
通常要对一个数的整数部分和小数部分分别进行处理,各自得出结果后再合并。
对整数部分,一般采用除 2 取余数法,其规则如下:
将十进制数除以 2,所得余数(0 或 1)即为对应二进制数最低位的值。然后对上次所得商除以 2,所得余数即为二进制数次低位的值,如此进行下去,直到商等于 0 为止,最后得的余数是所求二进制数最高位的值。
对小数部分,一般用乘 2 取整数法,其规则如下:
将十进制数乘以 2,所得乘积的整数部分即为对应二进制小数最高位的值,然后对所余数的小数部分部分乘以 2,所得乘积的整数部分为次高位的值,如此进行下去,直到乘积的小数部分为 0,或结果已满足所需精度要求为止。
(3)二进制数、八进制数和十六进制数之间的转换
八进制数和十六进制数是从二进制数演变而来的:
由 3 位二进制数组成 1 位八进制数;
由 4 位二进制数组成 1 位十六进制数。
对于一个兼有整数和小数部分的数以小数点为界,小数点前后的数分别分组进行处理,不足的位数用0 补足。
对整数部分将 0 补在数的左侧,对小数部分将 0 补在数的右侧。这样数值不会发生差错。
2. 真值和机器数
真值:数据的数值通常以正(+)负(-)号后跟绝对值来表示,称之为“真值”。
机器数:在计算机中正负号也需要数字化,一般用 0 表示正号,1 表示负号。把符号数字化的数成为机器数。
3. BCD 码
在计算机中采用 4 位二进制码对每个十进制数位进行编码。4 位二进制码有 16 种不同的组合,从中选出 10 种来表示十进制数位的 0~9,用 0000,0001,…,1001 分别表示 0,1,…,9,每个数位内部满足二进制规则,而数位之间满足十进制规则,故称这种编码为“以二进制编码的十进制(binary coded decima1,简称 BCD)码”。
在计算机内部实现 BCD 码算术运算,要对运算结果进行修正,对加法运算的修正规则是:
如果两个一位 BCD 码相加之和小于或等于(1001)2,即(9)10,不需要修正;
如相加之和大于或等于(1010)2,或者产生进位,要进行加 6 修正,如果有进位,要向高位进位。
4. 字符与字符串
在计算机中要对字符进行识别和处理,必须通过编码的方法,按照一定的规则将字符用一组二进制数编码表示。字符的编码方式有多种,常见的编码有 ASCII 码、EBCDIC 码等。
1)ASCII 码
ASCII 码用 7 位二进制表示一个字符,总共 128 个字符元素,包括 10 个十进制数字(0-9)、52 个英文字母(A-Z 和 a-z)、34 专用符号和 32 控制符号。
2)EBCDIC 码为 Extended Binary Coded Decimal Interchange Code 的简称,它采用 8 位来表示一个字符。
3)字符串的存放
向量存储法:字符串存储时,字符串中的所有元素在物理上是邻接的。
串表存储法:字符串的每个字符代码后面设置一个链接字,用于指出下一个字符的存储单元的地址。
5. 校验码
数据校验码是一种常用的带有发现某些错误或自动改错能力的数据编码方法。其实现原理,是加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码。
这样,可以通过检测编码的合法性来达到发现错误的目的。合理地安排非法编码数量和编码规则,可以提高发现错误的能力,或达到自动改正错误的目的。
码距: 码距根据任意两个合法码之间至少有几个二进制位不相同而确定的,仅有一位不同,称其码距为 1。
1)奇偶校验码
它的实现原理,是使码距由 1 增加到 2。若编码中有 1 位二进制数出错了,即由 1 变成 0,或者由 0变成 1。这样出错的编码就成为非法编码,就可以知道出现了错误。在原有的编码之上再增加一位校验位,原编码 n 位,形成新的编码为 n+1 位。增加的方法有 2 种:
奇校验:增加位的 0 或 1 要保证整个编码中 1 的个数为奇数个。
偶校验:增加位的 0 或 1 要保证整个编码中 1 的个数为偶数个。
2)海明校验码
它的实现原理,是在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。当某一位出错就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了依据。
3)CRC 校验码
CRC 校验码一般是指 k 位信息之后拼接 r 位校验码。关键问题是如何从 k 位信息方便地得到 r 位校验码,以如何从位 k+r 信息码判断是否出错。