1、1第 3 章 计算机中的数【教学内容及地位、作用】内容摘要 地位和作用计算机常用数制数制数制间的相互转换BCD 码ASCII 码十进制数及字符的编码汉字的编码机器数的表示机器数机器数的运算奇偶校验码循环冗余校验码(CRC)代码校验海明码计算机技术基础【教学目标】1. 认识计算机中的数。2. 了解机器数的运算方法。 能进行定点数和浮点数的加减运算; 能理解定点数乘、除法的运算步聚。3. 知道计算机技术中的编码和常用的几种校验码。 知道奇偶校验码、循环冗余校验(CRC )码、海明码的构成、校验方法和应用场合; 知道8421BCD码、ASCII码、汉字的输入码、内码和字型码,理解汉字在计算机中的处理
2、过程。4. 掌握数制转换及定点数的码制表示。 了解计算机技术中常用的几种数制,能熟练进行数制的转换; 认识定点数和浮点数,会求定点数的原码、反码、补码和变形补码。【教学重点、难点】1数制转换。2定点数、浮点数及定点数的原码、反码、补码表示。3定点数和浮点数的加减运算。4CRC 码的生成方法。问题:计算机为什么采用二进制数或二进制编码表示所有信息? 容易实现:二进制数只有 0、1 两个数码,可以用任何具有两个不同稳定状态的元件来表示。 运算简单:二进制数的四则运算是所有数制中最简单的。2 便于存储:如存储十进制数 09 必须 10 个设备,如用二进制数表示,仅 4 个设备组合就可以存储十进制数
3、015; 便于逻辑设计:二进制数的 0、1 两个数码,与逻辑变量的取值相同,可用逻辑代数进行分析、运算和设计。3.1 数 制数制即计数制,是按某种进位原则计数的方法。如在日常生活中,计算用十进制、钟表中用六十进制,十二进制等。3.1.1 计算机常用数制在计算机技术中,常用的数制有二进制、八进制、十六进制和十进制。计算机内部,用二进制数表示和处理信息,但在汇编语言中,存储地址用八进制和十六制数表示,而高级语言则是用十进制数表示信息的。一、十进制数 有 09 十个数码。 逢十进一。 展开式为:N10= 10nmiiia式中,10 i 为十进制数的权;m,n 分别是小数和整数的位数。【例 3.1】2
4、05.5D=210 2+0101+5100+510-1二、二进制数 有 0,1 两个数码。 逢二进一, “10”表示十进制数“2” 。 展开式为:N2= 1nmiia式中,2 i 为二进制数的权。【例 3.2】1101.11B=12 3+122+021+120+12-1 +12-2三、八进制数 有 07 八个数码。 逢八进一, “10”表示十进制数“8” 。 展开式为:N8= 1nmiia式中,8 i 为十进制数的权。【例 3.3】275.4Q=28 2+781+580+48-1四、十六进制数 有 09,AF 十六个数码。3 逢十六进一, “10”表示十进制数“16” 。 展开式为:N16=
5、16nmiiia式中,16 i 为十进制数的权。【例 3.4】1F5.CH=116 2+15161+5160+1216-1在计算机技术中,为进行区别,对于二进制、八进制、十进制、十六进制数分别在数据末尾用字母 B、Q、D、H 标识,称为尾标。3.1.2 数制间的相互转换一、R 进制数转换成十进制数R 进制数是指二进制数、八进制数和十六进制数等非十进制数。(1)方法按权展开,求和。(2)实例【例 3.5】10110111B=12 5+024+123+122+021+120+12-1+12-2=32+8+4+1+0.5+0.25=45.75D【例 3.6】26.6Q=28 1+680+68-1=1
6、6+6+0.75=22.75D【例 3.7】3E.CH=316 1+14160+1216-1=48+14+0.75=62.75D在上述例 3.5 的二进制转十进制中,系数非 0 即 1,而 1 与权值相乘,等于权值本身,0 与权值相乘,则等于 0。所以对二进制转化为十进制,可以只将系数为 1 的各项权值相加即得对应的十进制数。转化时要熟记二进制数权值。210 29 28 27 26 25 24 23 22 21 20 2-1 2-2 2-3 2-41024 512 256 128 64 32 16 8 4 2 1 0.5 0.25 0.125 0.0625特殊情况:1111(n 个 1)=2
7、n-1;0.111(n 个 1)=1-2 -n实际操作中,对八、十六进制数与十进制数的转换,我们也可以借助二进制数。先把八、十六进制转换成二进制数,再把二进制转换成十进制数,有时会使问题变得简单。二、十进制转换成 R(二、八、十六) 进制数 乘、除基数法:整数,除以 R 从低到高取余数;小数,乘以 R 从高到低取整数。【例 3.8】将十进制数 215 转化为二进制数。过程为:0 2 1 余 12 3 余 12 6 余 02 13 余 12 26 余 02 53 余 12 107 余 12 215 余 1 低 位高 位4结果是:215D=11010111B。【例 3.9】将十进制数 0.75 转
8、化为二进制数。转换过程是:结果是:0.75D=0.11B 。对于八进制数和十六进制数,分别 R 为 8 和 16。 权分解法:适用于十进制数转化为二进制数。先将给定的十进制数分解成二进制数的权相加的形式,分解式中含权项系数为 1,不含权项系数为 0。【例 3.10】75.5D=64+8+2+1+0.5=1001011.1B【例 3.11】180.75D=128+32+16+4+0.5+0.25=10110100.11B三、二进制转换成八进制(1)方法 分组:整数部分从低向高,小数部分从高向低,3 位一组,不足 3 位,用 0 补齐; 求和:将每组的 3 位二进制数分别按展开求和。(2)实例【例
9、 3.12】将二进制数 1101011.1 转换成八进制数。解:分组求解,得001 101 011. 100=153.4Q四、二进制转换成十六进制数(1)方法 分组:整数部分从低向高,小数部分从高向低,4 位一组,不足 4 位,用 0 补齐; 求和:将每组的 4 位二进制数分别按权展开求和。(2)实例【例 3.13】将二进制数 1101011.1 转换成十六进制数解:分组求解,得0110 1011. 1000B=6B.8H五、八进制转换成二进制(1)方法将每一个八进制数分别用 3 位二进制数来表示。(2)实例【例 3.14】153.4Q=001 101 011. 100B=1101011.1B
10、六、十六进制数转换成二进制数(1)方法将每一个十六进制数分别用 4 位二进制数来表示。(2)实例【例 3.15】6B.8H= 0110 1011. 1000B=1101011.1B1.50 取 10.75 20.50 21.00 取 1高位低位53.2 十进制数及字符的编码3.2.1 二-十进制编码(BCD 码)十进制数在计算机中的二进制数编码表示,称为二十进制编码,即 BCD 码。BCD 码通常是用 4 位二进制数的编码来表示 1 位十进制数,最常用的 BCD 码是 8421BCD 码。8421BCD 码是一种有权码,其 4 位编码中,从高到低的权值分别是 8、4、2、1。019 的8421
11、BCD 码如表 3-1 所示。注意:编码与数值不同,数值的高位“0” ,不影响数值的大小,可以去掉,但编码要求足位,高位的“0”有效,不能随意去掉。【例 3.16】133.2D=(0001 0011 0011. 0010) 8421BCD【例 3.17】1101001.01B=105.25D=(0001 0000 0101.0010 0101) 8421BCD注:二进制数要先转换为十进制数,再转换为 8421BCD 码。表 3-1 8421BCD 码十进制数 8421BCD 码 十进制数 8421BCD 码0 0000 10 000100001 0001 11 000100012 0010 1
12、2 000100103 0011 13 000100114 0100 14 000101005 0101 15 000101016 0110 16 000101107 0111 17 000101118 1000 18 000110009 1001 19 000110013.2.2 字符的 ASCII 码字母、数字、通用符号等字符一般称为西文字符。在微型计算机中通常用 ASCII 码表示。ASCII(American Standard Code for Information Interchange)码是美国标准信息交换代码,由 7 位二进制组成,共 128 个代码,表示 128 个字符信息。
13、包括: 字母:AZ,az。 数字:09。 通用字符:+、*、$、括号、空格等。 通用控制符:NUL、DEL、ACK、NAK 等。 控制字符,不可显示,33 个常见字符的 ASCII 码如表 3-2 所示。可显示字符:95 个6表 3-2 常用字符的 ASCII 码b6b5b4b3b2b1b0 000 001 010 011 100 101 110 1110000 NUL(空操作) DLE(转义) SP 0 P 、 p0001 SOH(标题开始) DC1(设备控制1)! 1 A Q a q0010 STX(正文开始) DC2(设备控制2)” 2 B R b r0011 ETX(正文结束) DC3
14、(设备控制3)# 3 C S C s0100 EOT(传输结束) DC4(设备控制4)$ 4 D T d t0101 ENQ(询问字符) NAK(否认) % 5 E U e u0110 ACK(承认) SYN(同步) K k 1100 FF(换页) FS(文字分隔符) , N n 1111 SI(移位输入) US(单元分隔符) / ? O o DEL(删除)3.2.3 汉字的编码计算机用于识别汉字的编码有输入码、内码和字型码。一、汉字输入码汉字的输入码是将从键盘上输入汉字时使用的一种编码。常用的有数字编码、字音编码、字型编码。数字编码主要有国标区位码。国标区位码字符集共收集 6763 个汉字,
15、将汉字按行(区)、列(位)排列,共 94 行,每行 94 个汉字。编码用 4 位十进制数表示,前两位是区号,后两位是位号。数字编码的特点是:编码无重码,但难记忆。字音编码是以汉语拼音为基础的编码。特点是编码方法简单、不需记忆,但重码多。字型编码是用汉字的的形状进行编码,常用的是五笔字型输入码。特点是编码方法需记忆,但重码较少。7二、汉字内码汉字内码是汉字在计算机内部进行存储、交换、检索等处理的信息代码。常用的汉字内码是以 GB2312-80 码为基础、用两个连续的字节表示的编码。为与西文字符区别,两个字节的最高位均为 1。汉字内码、区位码与国标码的关系为国标码 = 区位码(十六进制数)+202
16、0H内码 = 国标码+8080H三、汉字字型码汉字字型码是计算机用于输出汉字时使用的一种编码。它是以汉字点阵表示的汉字字型代码。在字型点阵中,笔画经过的点为 1,笔画不经过的点为 0。所有汉字字符集的字型点阵构成汉字字型库。不同的字体、不同的字型有不同的字型库。显示、打印汉字时,需根据内码向字型库检索出该汉字的字型信息后,再进行输出。汉字的处理过程如图 3-2-1所示。3.3 机 器 数数值数据在计算机中的表示形式称为机器数。3.3.1 机器数的表示一、机器数的特点 用二进制表示。 符号数值化。计算机中有符号数的正、负号用二进制数表示的。机器数的最高位为符号位,通常规定:0 表示“+ ”;1
17、表示“” 。 小数点隐含。机器数中不表示小数点,而是以一定方式将小数点的位置规定下来的。按小数点位置的表示方式,机器数可分为定点数和浮点数。定点数按小数点位置的不同,又分为定点整数和定点小数。 机器数的表示范围有限。计算机的字长是有限,机器数所能表示的范围也有限。机器零:小于机器数所能表示的最小值的数;机器无穷大:大于机器数所能表示的最大值的数。真值:机器数所表示的有符号的数。汉字内码汉字字型码汉字输入码输入设备管理模块汉字标识汉字字型库输出设备图 3-2-1 汉字编码和处理过程输入 输出内部处理8二、 定点数和浮点数1定点数小数点位置固定不变的机器数。(1)定点小数:约定小数点的位置在符号位
18、的右边,机器数表示的是一个纯小数。(2)定点整数:约定符号位在最低位的右边,机器数表示的是一个整数。定点数在机器中表示的格式:2浮点数小数点的位置不固定的机器数称为浮点数。浮点数的表示形式为N=2 rx其中,r 称为 N 的阶码,为整数,指明小数点的位置;x 称为尾数,为纯小数,表示N 的有效数字。浮点数在计算机中表示时,要将其阶码和尾数分别表示,一般是阶码在前,尾数在后,阶码和尾数的最高位分别为阶符和尾符,其表示格式是如浮点数 N=2-100.1011 的表示格式为浮点数与定点数相比,在相同字长的情况下,表示的范围较大。如 32 位字长的计算机,用定点数表示,范围是:(2 311)(2 31
19、1) ;而用浮点数表示,若阶码为 8 位(含1 位阶符) ,尾数为 24 位(尾符 1 位) ,表示范围是2 127(2 231)2 127(2 231) 。3规格化浮点数在浮点数的运算过程中,为了保持运算精度,通常都采用规格化形式。规格化浮点数是指尾数满足 0.5x1 的浮点数。所以在运算中对于非规格化数要进行规格化处理。规格化的方法是,尾数左移 1 位,阶码减 1,直到满足要求为止。该方法称为“左规” 。如:N=2 110.0101 为非规格化数, “左规”后为 N=2100.1010,为规格化数。三、定点数的原码、反码和补码机器数是用编码表示的,在计算机技术中,常用的编码有:原码、反码和
20、补码。1定点数的原码将真值符号数值化后所得到的机器数即为该真值的原码。定点小数 定点整数阶符 阶码 尾符 尾数阶符 阶码 尾符 尾数1 1 0 1 1 10 09 正数的原码:符号位为 0,数值位与真值相等。【例 3.18】X = +0.1101,X 原码 = 0.1101; X = +1101,X 原码 = 01101。 负数的原码:符号位为 1,数值位与真值相等。【例 3.19】X = 0.1101,X 原码 =1.1101X = 1101 ,X 原码 =11101。 0 的原码:+ 0 =0000=1002定点数的反码 正数的反码:符号位为 0,数值与真值相等。即正数的反码与原码相等。
21、负数的反码:符号位为 1,数值部分按位取反。【例 3.20】X = 0.1101,X 反码 =1.0010X = 1101 ,X 反码 =10010。 0 的反码+ 0 =0000=1113定点数的补码 正数的补码:与原码、反码相同。 负数的补码:定义:X 补码 =2 n +X计算:方法一:符号为 1,数值部分按位取反,末位加 1。【例 3.21】X = 0.1101,X 补码 =1.0011X = 1101 ,X 补码 =10011。方法二:符号位为 1,数值部分从后向前找,第一个“1”前数值变反, “1”及其后数值不变。【例 3.22】X=0.11010,求X 补码0. 1 1 0 1 0
22、变 反 不变X补码 =1.00110 0 的补码+ 0= 0=000 n 位字长的计算机,有:-2 n-1补码 =2 n-1例如:8 位字长的计算机,-128 补码 =128(即 10000000) 。4变形补码又称模 4 补码,是用两位符号位表示的补码,其中:“00”表示正号;“11”表示负号。而“01”和“10”用来进行溢出判断。103.3.2 机器数的运算在计算机中,加法运算是最基本的运算。乘法、除法等运算都是在加法运算的基础上,配合移位等操作实现的。一、定点数的加、减法运算计算机进行加、减法运算通常采用补码或变形补码,这是因为补码运算时,符号位可以参与运算,并且根据符号位的结果很容易判
23、断溢出。更重要的是,补码运算可以将减法运算转化成加法运算,从而使运算变得简单,容易实现。而原码运算时,符号位必须单独处理,实现电路相对复杂。1补码加减运算公式: X Y补 =X补 Y 补 X Y补 =X补 Y 补2补码加减相关运算(1)已知X 补 ,求 X若X 补 的最高位为 “0”或“ 00”,则将其用“+”表示,数值部分保持不变;若X 补 的最高位为 “1”或“ 11”,则将其用“”表示,数值部分按位取反末位加1。【例 3.23】X 补 =00.1011 则 X = +0.1011;X补 =11.1001 则 X = 0.0111(2)已知X 补 ,求 2X补在保证不出现溢出的情况下,将X
24、 补 符号位和数值位一起左移 1 位,末位添 0,即得2X补 。【例 3.24】X 补 =00.0101 则 2X补 =00.1010X补 =00.1011,求 2X补 ,左移 1 位后溢出。(3)已知X 补 ,求X/2 补将符号位和数值位一起右移 1 位,符号位按与原来相同添补,末位采用“0 舍 1 入”或“末位恒置 1”方法进行舍入处理。【例 3.25】X 补 =11.01011 则X/2 补 =11.10101(末位恒置 1)。3补码加减运算过程举例(1)加法运算【例 3.26】已知:X =0.0111,Y =0.1101,求 X + Y解:X 补 =00.0111, Y补 =11.00
25、11X+Y补 =X补 +Y补 =00.0111+11.0011=11.1010X+Y= 0.0110【例 3.27】已知:X=0.0111,Y=0.1101,求 X + Y解:X 补 =00.0111, Y补 =00.110111X+Y补 =X补 +Y补 =00.0111+00.1101=01.0100(溢出)溢出是因为相加的两个数太大了,以致于相加之后,超出了机器所能表示的范围(定点小数大于 1) 。处理溢出的办法是使两个数减小后再相加。X/2补 =00.0011,Y/2 补 =00.0111 (末位恒置“1” )(X+Y)/2 补 =X/2补 Y/2 补 =00.1010(X+Y) /2=
26、 +0.1010X+Y=1.01(2)减法运算【例 3.28】已知:X = 0.0111,Y = 0.1101,求 X Y解:X 补 =00.0111, Y 补 =11.0011XY 补 =X补 +Y 补 =00.0111+11.0011=11.1010X+Y = 0.0110二、定点数的原码乘法在计算机中,用原码实现乘法运算比较方便。因为原码表示的两个数相乘时,乘积的数值即两数的绝对值之积,乘积的符号可根据“同号为正,异号为负”的方法确定。所以计算时,只需将两个数的绝对值相乘,对符号位可单独通过异或电路实现。1手工计算的过程:【例 3.29】已知:X =0.0111,Y =0.1101 求
27、X Y。X Y = 0.01011011运算实质:从乘数的最低位开始,逐渐向高位进行的。若运算位是“1”,则加上被乘数;若运算位是“0” ,则加 0。每次将被乘数左移一位,最后求和。2计算机中乘法运算的过程:与手工过程基本相同,只是将每位乘法运算的结果作为部分积,右移一位之后与被乘数相加。定点原码乘法运算的实现过程是: 用 3 个寄存器,1 个存放高位部分积,初始为 0;1 个存放低位部分积,初始为乘数;一个存放被乘数。即:A 部分积高位,初始为 0; B 被乘数;C 部分积低位,初始为乘数。 将被乘数各位作为判断位,从最低位开始,若判断位为“1” ,则将部分积加上被乘数后,右移一位;若判断位
28、为“0” ,则将部分积直接右移一位。 积的符号位用“同号为正,异号为负”的方法,将被乘数和乘数的符号位异或运算来确定。【例 3.30】已知:X = 0.0111,Y = 0.1101 求 X Y。解:运算过程为:01110000011101110 0111 0 11010.0101101112X Y= 0.01011011三、定点数的原码除法1手工除法的过程:【例 3.31】X = 0.1011,Y = 0.1101,求 X / Y。X / Y = 0.1101 10.24运算实质:将被除数和除数比较,若被除数小于除数则商 0,然后落下低位或补 0;若被除数不小于除数则商 1,将被除数与除数相
29、减后,落下一位继续比较,直到商的位数满足要求为止(一般与被除数和除数位数相同) 。2定点原码恢复余数法因为定点小数的绝对值小于 1,为了不使商大于 1 造成溢出,所以定点除法一般只限于被除数小于除数的情况。(1)定点原码恢复余数法的过程: 取绝对值相除,符号处理方法同乘法运算。0101100101001110001100001 0011100000 001110100000100 00111A101100110111011C01101101101101101101操作说明判断位为 1,加被乘数右移一位判断位为 0,右移一位判断位为 1,加被乘数右移一位判断位为 1,加被乘数右移一位010113
30、 在被除数小于除数的情况下,将被除数左移一位,与除数相减(+Y 补 ) ,若余数为正,则商“1” ,余数左移一位;若余数为负,则商“0” ,再加上除数(即恢复余数)后左移一位,直到商的位数满足要求为止。【例 3.32】X = 0.1011, Y = 0.1101,求 X / Y。解:Y 补 =11.0011 操作过程为:X / Y = 0.1101 10.24若最末一位商为 0,则取恢复后的余数为最后余数。(2)不恢复余数法:余数为正,商 1 后,余数Y ;余数为负,商 0 后,余数Y 。原理:恢复余数法商至第 i 位时,余数为 R i,而R i = 2R i-1 (Y )若 R i0 时,商
31、 0 同时恢复余数,即 R i + Y,再求 R i+1,而R i+1=2(R i Y )( Y )=2 R i Y四、浮点数的加减运算 对阶:小阶向大阶看齐,阶码每加 1,尾数要向右移一位。小阶向大阶看齐,舍去的是尾数的低位部分,可以保证数的精度。 尾数相加、减。用变形补码运算。若溢出,则将两个尾数右移一位,阶码加 1 后再加、减。 结果规格化。【例 3.33】X = 2 010.1101,Y = 211(-0.1010 )求 X + Y。解:(1) 对阶:X = 2 110.0011(末位恒置 1)(2) 尾数相加:X + Y补 =00 11;00.0011+00 11;11.0110=0
32、0 11;11.1001X + Y =211( -0.0111)(3) 结果规格化:X + Y =210( -0.1110)00.011100.101001.0100 11.001111.1101 0.11010.10111.0110 11.001100.100101.0010 11.001100.010100.1010 11.0011操作说明X左移一位,即2XY补R1 为正,商 .1左移一位,2R 1Y补R2 为正,商 1左移一位,2R 2Y补R3 为负,商 0Y,恢复余数2(2R 2)Y补R4 为正,商 1被除数/部分余数143.4 代 码 校 验提高数据传输的可靠性的措施: 提高硬件电路
33、的可靠性和抗干扰能力。 在数据编码时采取校验码进行检错和纠错。计算机中常用的校验码有奇偶校验码,循环冗余校验码(CRC)和海明码。3.4.1 奇偶校验码校验码:在传输的有效数据位中,按某种规律添加适当的校验位。奇偶校验码:在数据位的最高位或最低位添加 1 位校验位,若为奇校验,应使代码中“1”的个数为奇数个;若为偶校验,应使代码中“1”的个数为偶数个。带奇偶校验的 8421BCD 码如表 3-3 所示。表 3-3 奇偶校验码十进制数 带奇校验的 8421BCD 码 带偶校验的 8421BCD 码01234567890000100010001000011101000010110110101110
34、100001001100000000110010100110010010101001100011111000110010奇偶校验码只能检测出有奇数个位出错的情况,无纠错能力。3.4.2 循环冗余校验码(CRC)CRC 码是串行同步通信方式中普遍采用的一种校验码。其代码由两部分构成,前面是k 位信息位,后面附加 r 位校验位,共 n(n = k+r)位。一、校验位的生成方法: 将信息码左移 r 位;r 为生成多项式的最高幂次。 写出生成多项式对应的二进制数; 将、步结果进行“模 2 除” ,所得的余数即为校验位。“模 2 除”是指做除法运算时,每一步的减法运算按位减,不借位。【例 3.34】信息
35、码为 001,求其在生成多项式为 x4 + x3 + x2 + 1 时的 CRC 码。解:(1)将信息位左移 4 位,得 10000。(2)生成多项式对应的二进制数是 11101。(3)两数模 2 除15校验位为 1101,校验码为 0011101。二、CRC 码的校验方法接收方收到 CRC 码后,用相同的生成多项式 “模 2 除”校验码,若余数为 0,则说明无错,若余数不为 0,按余数与校验位的对应关系可判断出错位。3.4.3 海明码海明码是由 Richard Hamming 于 1950 年提出的,多用于远程通信传输,现广泛用于RAID2 磁盘阵列中。一、海明码的格式在信息位中插入若干校验
36、位构成。 校验位数的确定:设信息位为 k 位,校验位为 r 位,则应满足:2 r1k + r如 4 位信息位,校验位的位数至少应为 3 位。 插入位置的确定:第 i 个校验位应插在 2 i-1 位置。设 8421BCD 码的信息位为 4 位,从高到低分别用 I4,I 3, I2,I 1 表示,由上述方法确定应插入 3 个校验位,分别用 P3,P 2,P 1 表示,则插入位置和代码格式为7 6 5 4 3 2 1I4 I3 I2 P3 I1 P2 P1二、海明码的校验方法海明码是一种既能发现 1 位错,又能纠错的校验码。校验时,先计算校验和,然后根据校验和判断出错位。对于(7,4)海明码,校验和
37、(S 2S1S0)与出错位的对应关系是S2S1S0 000 001 010 011 100 101 110 111错误位 无错 1 2 3 4 5 6 7由上表可见,当 1,3,5,7 位出错时, S0 为“1” ;当 2,3,6,7 位出错时 S1 为“1”;当 4,5,6,7 位出错时,S 2 为“1” 。因此有S2 = P3 I 4 I 3 I 2S1 = P2 I 4 I 3 I 1S0 = P1 I 4 I 2 I 1三、校验位的确定分析校验和的计算公式,我们可以发现:使 S2 为 0 的条件是 P3 与 I4 I 3 I 2 相等,使 S1 为 0 的条件是 P2 与 I4 I3
38、I1 相等,使 S0 为 0 的条件是 P1 与 I4 I2 I1 相等。按此确定校验位,无错时,S 2S1S0=000;有错时,校验和的值即错误位。所以校验位应按下式确定P3 = I4 I 3 I 2P2 = I4 I 3 I 116P1 = I4 I 2 I 1【例 3.35】在信息传输时,接收方收到一个海明码为 0001010,分析该海明码是否有错,如果有错,是哪位?正确的海明码是什么?解:由校验和公式,得:S2 = P3 I 4 I 3 I 2=1S1 = P2 I 4 I 3 I 1=1S0 = P1 I 4 I 2 I 1=0故第 6 位出错,正确的海明码是 0101010,是“4
39、”的海明码。本 章 小 结数制是数的某一种进位体制。常用的数制有二进制数、十进制数、八进制数和十六进制数。计算机中所有的信息都用二进制数或二进制编码表示,而高级语言程序中使用十进制数,汇编语言用十六进制数和八进制数表示存储地址,所以数制转换是信息处理的基础。十进制数在计算机中一般用 BCD 编码表示,8421BCD 码是最常用的二 - 十进制编码,8421BCD 码是一种有权码,由四位二进制数组成,从高到低权值分别是 8、4、2、1。西文字符一般用 ASCII 码表示,ASCII 码由 7 位二进制组成,共 128 个编码。汉字编码分汉字内码、输入码和字型码。内码是计算机内进行汉字交换、存储和
40、检索等处理时使用的代码;输入码是汉字输入时使用的代码,常用的有字型编码、字音编码和数字编码。汉字字型码是计算机用于输出汉字时使用的一种编码,是以汉字点阵表示的汉字字型代码。数在计算机中的表示称为机器数,相应地这个数称为真值。机器数中,符号也用二进制表示,通常用“0”表示正号, “1”表示负号。机器数分定点数和浮点数,定点数的小数点位置固定不变,有定点整数和定点小数之分。浮点数由阶码和尾数两部分组成,小数点位置由阶码来确定。定点数在机器中,常用原码、反码、补码等表示。正数的原码、反码和补码相同,负数的原码符号位为 1,数值部分与真值相同;负数的反码符号位为 1,数值位将真值按位取反;负数的补码符
41、号位为 1,数值部分将真值按位取反末位加 1。n 位(含符号位)二进制数用原码、反码表示时范围为-(2 n-11) +( 2n-11 ) ,用补码表示时范围为-2 n-1 +( 2n-11 ) 。定点数的加、减运算通常用补码进行,用补码运算时,符号位可以与数值位一起参与运算,并且可以很容易由符号位运算的结果判断是否溢出。定点数的乘除运算一般用原码进行。运算时,先将绝对值做乘、除法运算,最后由“同号相乘、除,结果符号为正,异号相乘、除,结果符号为负”的方法确定结果的符号。浮点数的加、减运算用补码进行,运算步聚是: 对阶:对阶的方法是小阶向大阶看齐,阶码增加时,尾数要同时向右移。阶码每加 1,尾数
42、右移一位。 尾数求和:一般用双符号位的变形补码运算,若出现溢出,则将尾数右移一位,阶码加 1,重新运算。 规17格化。由补码运算的结果,求出真值,若尾数的小数点后第一位为“1”,则为规格化浮点数,否则进行“左规” 处理,即将尾数左移,同时调整阶码,尾数每左移 1 位,阶码减 1,直至尾数的小点后第一位为“1”为止。为了提高数据传输的可靠性,在数据信息中增加校验位构成校验码。常用的校验码有奇偶校验码、海明码和 CRC 码。奇偶校验码是在信息位的最高位或最低位增加一位校验位,若为奇校验码,则增加校验位后, “1”的个数应为奇数个;若为偶校验码,增加校验位后,“1”的个数为偶数个。海明码是在信息位之间插入若干校验位构成,插入的校验位数按2 r 1k + r 确定,其中 k 为信息位位数,r 为校验位位数。插入的位置按 2 i-1 确定,i 为校验位序号。海明码的校验方法是根据收到的海明码计算校验和,由校验和判断并纠正出错位。CRC 码即循环冗余校验码,是串行同步通信方式中普遍采用的一种校验码。是由 n 位信息位后增加若干位校验位构成的。校验位是由给定的生成多项式通过“模 2 除”的方法生成的。校验位的位数即生成多项式的最高次数。CRC 码的校验是将收到的 CRC 码,用相同的生成多项式 “模 2 除”,若余数为 0,则说明无错,若余数不为 0,按余数与校验位的对应关系可判断出错位。