《计算机组成原理》第2章:数字化信息编码.ppt

上传人:小飞机 文档编号:5904124 上传时间:2023-09-01 格式:PPT 页数:96 大小:597.50KB
返回 下载 相关 举报
《计算机组成原理》第2章:数字化信息编码.ppt_第1页
第1页 / 共96页
《计算机组成原理》第2章:数字化信息编码.ppt_第2页
第2页 / 共96页
《计算机组成原理》第2章:数字化信息编码.ppt_第3页
第3页 / 共96页
《计算机组成原理》第2章:数字化信息编码.ppt_第4页
第4页 / 共96页
《计算机组成原理》第2章:数字化信息编码.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《《计算机组成原理》第2章:数字化信息编码.ppt》由会员分享,可在线阅读,更多相关《《计算机组成原理》第2章:数字化信息编码.ppt(96页珍藏版)》请在三一办公上搜索。

1、第2章 数字化信息编码与数据表示,(时间:3次课,6学时),第2章 数字化信息编码与数据表示,本章介绍数字化信息编码的基本概念、常用的信息编码及计算机中数字数据的表示和转换。,第2章 数字化信息编码与数据表示,2.1 数字化信息编码的概念 2.2 常用的信息编码 2.3 计算机中数值数据的表示 2.4 数据校验码,2.1 数字化信息编码的概念,1.编码 所谓编码,就是用少量简单的基本符号,选用一定的组合规则,以表示出大量复杂的信息。2.编码的两大要素 基本符号的种类和这些符号的组合规则是一切编码的两大要素。3.多重编码 当基本符号数量很多时,往往还要采取措施,以便能使用更少量而简单的基本符号来

2、表示那些量大而复杂的基本符号,这就构成了多重编码。汉字编码是多重编码的典型例子。,2.1 数字化信息编码的概念,4.计算机系统中的编码 由于计算机系统中的一切信息只能以二进制数据来表示,因此在计算机系统中,广泛采用的是仅用0和1两个基本符号组成的基2码,或称为二进制码。基2码是进一步对各种基本编码符号进行重编码的媒介。,2.2 常用的信息编码,计算机中可以进行处理的信息类型是比较多的,对不同类型的数据要进行不同的编码。本节重点讲解计算机内常用的信息编码方案,包括中西文字符编码、逻辑型数据的表示、数值型数据的表示与编码、不同进位数据间的转换、二进制数据算术与逻辑运算规则。,2.2 常用的信息编码

3、,2.2.1 字符编码 2.2.2 中文的编码表示 2.2.3 逻辑数据的表示 2.2.4 数值数据的表示与编码,2.2.1 字符编码,字符是计算机系统中使用最多的信息之一。在计算机系统中,要为每个字符指定一个确定的编码,作为识别与使用这些字符的依据。这些编码的值,是用一定位数的基2码的两个基本符号1和0进行重编码给出的。,2.2.1 字符编码,1.ASCII 码 使用最多、最普遍的是ASCII字符编码,即American Standard Code for Information Interchange,如表2-1所示。2.EBCDIC码 EBCDIC码主要用在IBM计算机中。它采用8位码,

4、有256个编码状态,但只选用其中一部分。3.字符串的表示 字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字符。主存中每个字节存的都是相应字符的ASCII编码值。,表2-1 ASCII 码,2.2.2 中文的编码表示,我国是个多民族的国家,共有近60种民族文字,其中用得最广的是汉字,其他还有蒙、藏、朝鲜、僮、苗、哈尼、维吾尔等多种文字。计算机中文处理系统,应尽可能地处理各种中文文字,但其中最关键的技术是很好地解决汉字的编码方案、存储技术和输入/输出方法。,2.2.3 逻辑数据的表示,很容易想到,用计算机中的基2码的两个状态1和0恰好能表示两个逻辑数据。例如,若

5、用1表示真,则0就表示假。注意,这里的1和0没有了数值和大小的概念,只有逻辑上的意义。对逻辑数据只能进行逻辑运算,产生逻辑数据结果,以表达事物内部的逻辑关系。,2.2.4 数值数据的表示与编码,2.2.4 数值数据的表示与编码,在计算机中最普遍的方法,是用二进制数表示数值数据,包括整数、纯小数和实数(通称浮点数),这有利于减少所用存储单元的数量,便于实现算术运算。为了更有效地、方便地表示负数,对二进制数又可以选用原码、反码、补码、移码等多种编码方案。,2.3 数值数据的表示、转换和运算,本节讲解数制与进位记数法、各种进制的数值数据之间的相互转换、二进制数的运算规则、二进制数在计算机内的表示、十

6、进制数的编码与运算。,2.3 数值数据的表示、转换和运算,2.3.1 数制与进位记数法2.3.2 数据的转换 2.3.3 二进制数的运算规则 2.3.4 二进制数在计算机内的表示 2.3.5 十进制数的编码与运算,2.3.1 数制与进位记数法,1.基 r 数制 在采用进位记数的数字系统中,如果只用r个基本符号(0,1,2,r-1)表示数值,则称其为基r数制,r称为该数制的基。假定数值N用m+k个自左向右排列的代码Di(-Kim-1)表示,即,式中的Di(-Kim-1)为该数制采用的基本符号,可取值0,1,2,r-1,小数点位置隐含在D0与D-1位之间,则Dm-1D1D0为N的整数部分,D-1D

7、-2D-k为N的小数部分。,(2-1),2.3.1 数制与进位记数法,2.位权 若每一个Di的单位值都赋予固定的值Wi,则称Wi为Di位的权,此时的数制称为有权的基r数制。此时N代表的实际值可表示为:,如果该数制的编码还符合“逢r进位”的规则,则每一位的权(简称位权)可表示为:,式中的r是数制的基,i为位序号。式(2-2)又可以写为:,(2-2),(2-3),(2-4),2.3.1 数制与进位记数法,此时该数制被称为r进位数制,简称r进位制。下面是计算机中常用的几种进位数制:二进制:r=2,基本符号 0,1八进制:r=8,基本符号 0,1,2,3,4,5,6,7十六进制:r=16,基本符号 0

8、,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十进制:r=10,基本符号 0,1,2,3,4,5,6,7,8,9 如果每一位Di都具有相同的基,则采用同样的基本符号集来表示,则称该数制为固定基数制,这是计算机内普遍采用的方案。,2.3.2 数据的转换,二、八、十六进制数据转换为十进制数据 十进制数值N和用于表示它的多个R进制位间的关系为:,式中,若R=2,表示二进制数,此时,Di可以为1或0;若R=8,表示八进制数,则Di可以为0、1、2、3、4、5、6、7这8个数字中的任何一个;若R=16,表示十六进制数,则Di可以为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、

9、F这16个字符中的任何一个。,2.3.2 数据的转换,现在以R=2为例,来说明如何将二进制数转换为十进制数。按下式计算:(1101.0101)2=123+122+021+120+02-1+12-2+02-3+12-4=8+4+1+0.25+0.0625=(13.3125)10 熟练地记清二进制数每位上的位权是有益的。当位序号为012时,其各位上的位权依次为1、2、4、8、16、32、64、128、256、512、1024、2048、4096。2.十进制数据转换为二、八、十六进制数据,2.3.2 数据的转换,1)十进制数转换为二进制数 十进制数到二进制数的转换,通常要区分数的整数部分和小数部分,

10、分别按除2取余数和乘2取整数两种不同方法来完成。例:将十进制整数245转换为二进制整数,按下列步骤操作。(1)用2去除给出的十进制整数,得到商和余数。记下余数,为转换后的二进制整数的最低位数字。(2)再用2去除所得的商,得到新的商和新的余数。记下余数,为转换后的二进制整数的高一位的数字。(3)重复执行步骤(1),直到商为0结束转换过程。这样,(245)10=(11110101)2。,2.3.2 数据的转换,2.3.2 数据的转换,例:将十进制小数0.37转换成二进制小数。(1)用2去乘小数0.37,得0.74,取出整数部分0,是二进制小数的最高位。(2)用2去乘小数0.74,得1.48,取出整

11、数部分1,是二进制小数的次高位。(3)用2去乘小数0.48,得0.96,取出整数部分0,是二进制小数的次高位后面一位。(4)依此类推。结果有两种情况:可能到某一次后,小数部分全为0;也可能小数部分永远不会为全0。可以根据自己的实际需要取到某位小数。在本例中,取到5位小数。这样,(0.37)10=(0.01011)2。,2.3.2 数据的转换,例:将十进制数6.375转换成二进制数。这里既有整数部分,也有小数部分。因此应分两次进行。可以先转换其整数部分,再转换其小数部分,然后再将两部分结果合起来,就得到了转换后的最终结果。这样,(6.375)10=(110.011)2。2)十进制数转换为八进制数

12、十进制数到八进制数的转换,也要区分数的整数部分和小数部分,分别按除8取余数和乘8取整数两种不同方法来完成。例:将十进制整数1013转换为八进制整数。,2.3.2 数据的转换,(1)用8去除十进制整数1013,得到商126和余数5。记下余数,为转换后的八进制整数的最低位数字。(2)再用8去除所得的商126,得到新的商15和新的余数6。记下余数,为转换后的八进制整数的高一位的数字。(3)再用8去除所得的商15,得到新的商1和新的余数7。记下余数,为转换后的八进制整数的更高一位的数字。(4)再用8去除所得的商1,得到新的商0和新的余数1。记下余数,为转换后的八进制整数的最高一位的数字。这样,(101

13、3)10=(1765)8。,2.3.2 数据的转换,例:将十进制小数0.385转换为八进制小数。(1)用8去乘小数0.385,得3.08,取出整数部分3,是八进制小数的最高位。(2)用8去乘小数0.08,得0.64,取出整数部分0,是八进制小数的次高位。(3)用8去乘小数0.64,得5.12,取出整数部分5,是八进制小数的次高位后面一位。(4)依此类推。结果有两种情况:可能到某一次后,小数部分全为0;也可能小数部分永远不会为全0。可以根据自己的实际需要取到某位小数。在本例中,取到3位小数。这样,(0.385)10=(0.305)8。,2.3.2 数据的转换,3)十进制数转换为十六进制数十进制数

14、到十六进制数的转换,也要区分数的整数部分和小数部分,分别按除16取余数和乘16取整数两种不同方法来完成。例:将十进制整数1013转换为十六进制整数。(1)用16去除给出的十进制整数1013,得到商63和余数5。记下余数,为转换后的十六进制整数的最低位数字。(2)再用16去除所得的商63,得到新的商3和新的余数F(15)。记下余数,为转换后的十六进制整数的高一位的数字。,2.3.2 数据的转换,(3)再用16去除所得的商3,得到新的商0和新的余数3。记下余数,为转换后的十六进制整数的最高一位的数字。这样,(1013)10=(3F5)16。例:将十进制小数0.385转换为十六进制小数。(1)用16

15、去乘小数0.385,得6.16,取出整数部分6,是十六进制小数的最高位。(2)用16去乘小数0.16,得2.56,取出整数部分2,是十六进制小数的次高位。(3)用16去乘小数0.56,得8.96,取出整数部分8,是十六进制小数的次高位后面一位。,2.3.2 数据的转换,(4)依此类推。结果有两种情况:可能到某一次后,小数部分全为0;也可能小数部分永远不会为全0。可以根据自己的实际需要取到某位小数。在本例中,取到3位小数。这样,(0.385)10=(0.628)16。3.二进制数与八进制、十六进制数的关系 由于log28=3,log216=4,可知一位八进制数可以用3位二进制的数重编码来得到,一

16、位十六进制数可以用4位二进制的数重编,2.3.2 数据的转换,码得到,故人们通常认为,在计算机这个领域,八进制数和十六进制数,只是二进制数的一种特定的表示形式;但计算机硬件只识别二进制数。把二进制数转换成八进制数的表示形式,其方法是:从小数点开始,向左向右分别按每3位分成一组;当最高一组不足3位时,在其前补足0,保证为3位;当最低一组不足3位时,在其后补足0,保证为3位。然后分组按八进制数运算,把得到的结果依次排列起来,得到需要的结果。例如:(1101011.11101101)2=(001 101 011.111 011 010)2=(153.732)8,2.3.2 数据的转换,把二进制数转换

17、成十六进制数的表示形式,其方法是:从小数点开始,从左向右分别按每4位分成一组;当最高一组不足4位时,在其前补足0,保证为4位;当最低一组不足4位时,在其后补足0,保证为4位。然后分组按十六进制数运算,把得到的结果依次排列起来,得到需要的结果。例如:(1101011.111011)2=(0110 1011.1110 1100)2=(6B.EC)16 八进制数和十六进制数之间的转换,经过二进制的中间结果是十分方便的。,2.3.3 二进制数的运算规则,1.加法规则 0+0=0 0+1=1 1+0=1 1+1=10(当对应位都是1时,相加后本位为0,并向高位产生进位)例如:,2.3.3 二进制数的运算

18、规则,2.减法规则0-0=00-1=1(要向高位借位1次)1-0=11-1=0例如:,2.3.3 二进制数的运算规则,3.乘法规则00=001=010=011=1例如:,2.3.3 二进制数的运算规则,4.除法规则 与十进制除法类似,也由减法、上商等操作逐步完成。例如:,2.3.3 二进制数的运算规则,5.逻辑或运算规则(运算符号为)00=001=110=111=1逻辑运算是在对应的两个二进制位之间进行的,与相邻的高低位值无关。,2.3.3 二进制数的运算规则,6.逻辑与运算规则(运算符号为)00=001=010=011=1,2.3.3 二进制数的运算规则,8.逻辑异或运算规则(运算符为)逻辑

19、与、或、非操作是3种最基本的操作,用它们可以组合出任何逻辑功能。但在某些情况下,独立使用逻辑异或操作更方便些。,7.逻辑非运算规则(运算符为),0 0=00 1=11 0=11 1=0,2.3.4 二进制数在计算机内的表示,数值数据是用于表示数量的大小。讨论数值数据时,经常用到数值范围和数据精度两个概念。数值范围是指一种类型的数据所能表示的最大值;数据精度,通常用实数所能给出的有效数字的位数表示。这两个概念是不一样的。1.定点小数、整数与浮点数 二进制数,主要分成定点小数、整数与浮点数三类来加以讨论。先说明这三类二进制数的一般表示,再详细讨论其具体编码形式。1)定点小数的表示方法 定点小数是指

20、小数点准确固定在数据某个位置上的,2.3.4 二进制数在计算机内的表示,小数。从实用上看,都把小数点固定在最高数据位的左边,但这只是默认,并不占位;小数点前边再设一位符号位,0表示正号,1表示负号。按此规则,任何一个小数都可以被写成 N=NsN-1N-2N-m 这里用m+1个二进制位表示一个小数,最高一位表示符号,那么所能表示的二进制小数之值为:|N|1-2-m,2.3.4 二进制数在计算机内的表示,2)整数的表示方法 整数所表示的数据的最小单位为1,可以认为它是小数点定在数值最低位右边的一种数据。整数又被分为带符号和不带符号的两类。对带符号的整数来说,符号位被安排在最高位,任何一个带符号的整

21、数都可以被写成 N=NsNn-1N2N1N0 对于用n+1位二进制位(包括符号位)表示的带符号的二进制整数,其值的范围为|N|2n-1,2.3.4 二进制数在计算机内的表示,对不带符号的整数来说,所有的n+1个二进制位均被视为数值,此时数值的范围是 0N2n+1-1 3)浮点数的表示方法 浮点数是指小数点在数据中的位置可以左右移动的数据,它通常被表示成 N=MRE 这里的M被称为浮点数的尾数,R被称为阶的基数,E 被称为阶的阶码。计算机中一般规定R为2、8或16,是一个常数,不需要在浮点数中明确表示出来。因此,要表示浮点数,一是要给出尾数M,通常用定点小数形式表示,它决定了浮点数的表示,2.3

22、.4 二进制数在计算机内的表示,精度,即可以给出的有效数字的位数;二是要给出阶码,通常用整数形式表示,它指出的是小数点在数据中的位置,决定了浮点数的表示范围。浮点数也是有正、负的,因此也要有符号位。在计算机中,浮点数通常被表示成如下格式:,2.3.4 二进制数在计算机内的表示,合理地选择m和n的值是十分重要的,以便在总长度为1+m+n个二进制位表示的浮点数中,既保证有足够大的数值范围,又保证有所要求的数值精度。若不对浮点数的表示做出明确规定,同一个浮点数的表示就不是唯一的。为了提高数据的表示精度,也为了便于浮点数之间的运算与比较,规定计算机内浮点数的尾数部分用纯小数形式给出,而且当尾数的值不为

23、0时,其绝对值应大于或等于0.5,对于不符合这一规定的浮点数,要通过修改阶码并同时左右移尾数的办法使其变成满足这一要求的表示形式,这种表示方式被称为浮点数的规格化表示。,2.3.4 二进制数在计算机内的表示,当一个浮点数的尾数为0,不论其阶码为何值,该浮点数的值都为0。当阶码的值比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值,通常称其为机器0,此时浮点数的所有各位(包括阶码位和尾数位)都清为0值。按IEEE标准,常用的浮点数的格式如表2-2所示。,表2-2 浮点数格式的IEEE标准,2.3.4 二进制数在计算机内的表示,2.二进制数值数据的编码方案 二进制数值数据,包括

24、二进制表示的定点小数、整数和浮点数。这里讲的编码方法,主要是考虑如何能方便地表示正数、零和负数,并尽可能地有利于简化对它们实现算术运算用到的规则。很容易想到,数据的符号的正与负,可用一位二进制数的0和1两个状态加以表示。数据的数值用多位二进制数表示。最常用的编码方法有原码表示、补码表示和反码表示三种方法。为了讨论的方便,通常称表示一个数值数据的机内编码为机器数,而把它所代表的实际值称为机器数的真值。,2.3.4 二进制数在计算机内的表示,1)定点小数的编码方案 用定点小数引出数值的三种编码(原码、补码和反码)方法是最方便的。(1)原码表示法。用机器数的最高一位代表符号,以下各位给出数值的绝对值

25、的表示方法。其定义为,例如:X=+0.1011 X原=01011X=-0.1011 X原=11011,2.3.4 二进制数在计算机内的表示,原码具有如下性质。原码表示中,机器数的最高位是符号位,0代表正号,1代表负号,以下各位是数的绝对值,即X原=符号位+|X|,小数位置是默认的,故小数点并不表示出来。原码表示中,零有两种表示形式,即+0原=00000-0原=10000 原码表示方法的优点是,在数的真值和原码表示之间的对应关系很简单,缺点是用原码实现加减运算很不方便。,2.3.4 二进制数在计算机内的表示,(2)补码表示法。用机器数的最高一位代表符号,以下各位给出数值按2取模的结果的表示方法。

26、其定义为,例如:X=+0.1011 X补=01011X=-0.1011 X补=10101按补码的定义,当X=-0.1011时,X补=2+X=10.0000+(-0.1011)=10101。,2.3.4 二进制数在计算机内的表示,补码具有如下性质。在补码表示中,机器数的最高一位是符号位,0代表正号,1代表负号。机器数和它的真值的关系,是X补=2符号位+X。在补码表示中,0有唯一的编码,即+0补=-0补=00000 假定X=+0.0000,Y=-0.0000,依据补码的定义,则有 X补=X=00000 Y补=2+Y=10.0000+0.0000=10.0000=00000,2.3.4 二进制数在计

27、算机内的表示,补码表示的两个数在进行加法运算时,可以把符号位与数位同等处理,只要结果不超出机器能表示的数值范围,运算后的结果按2取模后,得到的新结果,就是本次加法运算的结果,即机器数的符号位与数值位都是正确的补码表示,即 X+Y补=X补+Y补 mod 2 这一结论极为重要。例如:X=+0.1010,Y=-0.0101 则 X补=01010,Y补=11011 求得:X补+Y补=01010+11011=100101,2.3.4 二进制数在计算机内的表示,按2取模后,符号位前边一位上的1不要,则最后结果为00101,其真值为+0.0101。符号位与数值位均正确。又如,X1=X2=-0.1000,则X

28、1补=X2补=11000,那么X1+X2补=X1补+X2补=11000+11000=110000,按2取模后得10000,它的真值为-1。由此看出,用补码表示定点小数时,它能表示-1的值。,2.3.4 二进制数在计算机内的表示,X补与其真值的关系。假定X补=X0X1X2Xn,则有X补=2X0+X,此关系对X为正、为零和为负都是正确的。X为正时,X0应为0,X补=20+X=X;X为负时,X0应为1,X补=21+X=2+X,均与补码的定义吻合。由此又可以得到从X补求X的关系:X=X补-2X0=X0.X1X2Xn-2X0=-X0+0.X1X2Xn当X为正数时,X0=0,真值X=X补;,2.3.4 二

29、进制数在计算机内的表示,当X为负数时,X0=1,真值X=-1+0.X1X2Xn=-(1-0.X1X2Xn)。对补码的数值部分求补,并加上符号即得真值。例如,X补=10110,则X的真值=-(1-0.0110)=-0.1010。补码的算术移位。将X补的符号位与数值位一起右移一次并保持原符号位的值不变,可实现除法功能(除以2),即,2.3.4 二进制数在计算机内的表示,现考虑X为正、负数两种情况。设X=0.0110,右移一位得0.0011,为X除以2的结果。设X=-0.0110,X补=11010,然后按以上公式计算X/2补=11101,再按下式求真值:X/2=-(1-0.1101)=-0.0011

30、,说明得到的确实是除以2的结果。,2.3.4 二进制数在计算机内的表示,为了得到一个数的补码表示,当然可以通过补码的定义求得,但更简单的办法可以这样做:当X0时,X补的符号位用0,数值位取X的各数值位上的值,显然,此时有X补=X原。当X0时,X补的符号位用1,将X的各数值位取反(0变1,1变0),再在最低位加1,以得到X补的各数值位上的值。(3)变形补码。为了判别结果是否溢出,某些机器采用了这种编码方法,又称模4补码的表示方法,其定义为,2.3.4 二进制数在计算机内的表示,也就是常说的双符号位的补码表示。例如:X=+0.1011 X补=001011 X=-0.1011 X补=110101 按

31、模4补码定义,当X=-0.1011时,X补=4+X=100.0000+(-0.1011)=110101。从上式的结果可以看出,模4补码的表示就是在模2补码表示的符号位之前增加与原符号同值的另一个符号位。模4补码具有如下性质。,2.3.4 二进制数在计算机内的表示,绝对值小于1的数或数值-1,补码的两个符号位相同,00表示正号,11表示负号,其数值位与其模2补码相同。当符号位为01或10时,表示数值溢出;为01时,表示两个正数相加之和1的情况,通称数值“上溢”;为10时,表示两个负数相加,其和小于机器所能表示的最小负数,通称数值“下溢”。最前面的一个符号位才是真正的符号位。在模4补码表示中,零有

32、唯一的编码,即+0补=-0补=000000。用模4补码能表示-1,即为110000,与模2补码的情况非常类似。,2.3.4 二进制数在计算机内的表示,(4)反码表示法。用机器数的最高一位代表符号,数值位是对负数值各位取反的表示方法。其定义为,例如:X=+0.1011 X反=01011X=-0.1011 X反=10100正数的反码与其原码、补码相同,负数的反码为补码最低位减1。反码具有以下性质。,2.3.4 二进制数在计算机内的表示,在反码表示中,机器数的最高位为符号位,0代表正号,1代表负号。其机器数和它的真值之间的关系为,用反码进行两数相加时,若最高位有进位,还必须把该进位值加到结果的最低位

33、,才能得到真正的结果,通称“循环进位”。例如,X=+0.1011,Y=-0.0100,则X反=01011,Y反=11011,X+Y反=X反+Y反=01011+11011=100110,最高位有进位,要加到结果的最低位,得00110+00001=00111,即+0.0111,2.3.4 二进制数在计算机内的表示,在反码表示中,零有两个编码,即+0反=00000-0反=111112)整数的编码方案 与定点小数的三种编码方法类似,整数也可以用原码、补码和反码三种不同的编码方法表示。区别主要表现在以下两个方面。(1)定点小数的小数点位置严格地设置在数的符号位与最高数值位之间,因此,数的表示范围和编码的

34、取模值与用多少位二进制表示一个数无关,该位数只影响数值的精度。整数可认为是小数点被设置在最低一位数值位的右边,机器数的最高位仍被用做数的符号位。数值的表示范围,以及整编码的取模值,都与表示一个数所用的二进制位数有关。,2.3.4 二进制数在计算机内的表示,(2)整数三种编码的定义、特性和相互间的变换方法,均与定点小数相应的三种表示方法类似,只是整数的取模值为2k+1或2k+2(对变形补码),这里的k为二进制整数数值位的位数。例如:X=+10101 X原=X补=X反=010101 X=-10101 X原=110101,X补=101011,X反=101010 以上两个数的变形补码分别为001010

35、1和1101011。这里的k均为5。,2.3.4 二进制数在计算机内的表示,3)浮点数常用的编码方法 前面已经说过,在计算机内,浮点数被表示为如下格式:,在多数计算机中,浮点数的阶码部分一般采用移码表示。对由1位符号位和n位数值位组成的二进制形式的阶码,其移码的定义为 X移=2n+X-2nX2n,2.3.4 二进制数在计算机内的表示,这表明,由X补得到X移的方法是变X补的符号为其反码。例如:X=+1011 X补=01011 X移=11011 X=-1011 X补=10101 X移=00101 移码具有如下性质:最高一位为符号位,但其取值与原码和补码都相反,1代表正号,0代表负号。移码用于表示浮

36、点数的阶码,通常只使用整数。对移码一般只执行加减运算,在对两个浮点数进行乘除运算时,是尾数实现乘除运算,阶码执行加减运算。对移码执行加减运算时,需要对得到的结果进行修正,修正量为2n,即对符号位的结果取反后,得到的才是移码形式的结果。,2.3.4 二进制数在计算机内的表示,在移码表示中,0有唯一的编码,即+0移=-0移=10000。而且机器零的形式为000000。即当浮点数的阶码-2n时,不管尾数值大小时,都属于浮点数下溢,被认为其值是0,此时,移码表示的阶码值正好是每一位都为0的形式,与补码0完全一致。这有利于机器中的判0线路。,2.3.5 十进制数的编码与运算,在计算机内只能表示二进制数,

37、但我们更熟悉十进制数和十进制数运算。为了表示1位十进制数,必须使用log210(取整数为4)位二进制数。但4位十进制数可以表示16个状态,只需取出其中的10个状态来表示1位十进制数可能的10个取值就可以了。要达到这个目的,有非常多的可行方案,下面介绍其中最常用的几种。1.十进制有权码 十进制有权码是指表示一个十进制数位的4位基2码的每一位有确定的位权。用得最普遍的是8421码,简称BCD或二-十进制。,2.3.5 十进制数的编码与运算,2.十进制无权码 十进制无权码是指表示一个十进制数位的4位基2码的每一位没有确定的位权。在采用的无权码的一些方案中,用得比较多的是余3码和格雷码,格雷码又称循环

38、码。3.数字串在计算机内的表示与存储1)字符串形式 一个字节存放一个十进制的数位或符号位。在主存中,这样的一个十进制数占用连续的多个字节,故为了指明这样一个数,需要给出该数在主存中的起始地址和位数(串的长度)。从对符号位的表示和对两个邻接的十进制数之间的分界方式来区分,又可进一步把十进制数串分为前分隔数字串和后嵌入数字串两种表示形式。,2.3.5 十进制数的编码与运算,(1)前分隔数字串,是让符号位占用单独一个字节,并把符号位放在数字位之前,用字符“+”表示正号,用字符“-”表示负号,每个数字位占用一个主存字节,存放的是09这10个数字符中相应一个字符的ASCII编码值。例如,+123在主存中

39、存储为2B、31、32、33四个字节;而-45678在主存中则存储为2D、34、35、36、37、38六个字节。,2.3.5 十进制数的编码与运算,(2)后嵌入数字串,是不再为符号位单独分配一个字节,而是把它嵌入到最低一位数字里边。其规则是,把负号变成十六进制的40,并将其与最低数字位的值相加。数字符09的ASCII码分别为十六进制的3039(十进制的4857),因此,一个负数最低位的编码值应为十六进制的7079中的一个。正数的符号不另外附加处理。例如,+123和-123的后嵌入的表示分别为31、32、33和31、32、73。要说明,对前分隔串或后嵌入串,都要给出它的头一个字符在主存中的地址和

40、串内数的长度。长度为0的数字串的值为0。,2.3.5 十进制数的编码与运算,2)压缩的十进制数串形式 一个字节存放两个十进制的数位,它比字符串形式节省存储空间,又便于直接完成十进制数的算术运算,是广泛采用的较为理想的方法。要指明一个压缩的十进制数串,也得给出它在主存中的首地址和数字位个数(不含符号位),又称位长,位长为0的数其值为0。十进制数串表示法的优点是位长可变,许多机器中该长度从031,有的甚至更长。,2.4 数据校验码,数据在计算机系统内形成、存取和传送的过程中可能产生错误。为减少和避免这类错误,一方面是精心设计各种电路,提高计算机硬件本身的可靠性;另一方面是在数据编码上找出路,即采用

41、带有某种特征能力的编码法,通过少量的附加电路,使之能发现某些错误,甚至能确定错误的性质和准确的出错位置,进而实现自动改错的能力。数据校验码就是一种常用的具备这种能力的数据编码方案。,2.4 数据校验码,2.4.1 数据校验码实现原理 2.4.2 奇偶校验码 2.4.3 海明校验码2.4.4 循环冗余校验码(CRC码),2.4.1 数据校验码实现原理,数据校验码的实现原理,是在合法的数据编码之间,加进一些不允许出现的(非法的)编码,使合法数据编码出现某些错误时,就成为非法编码,这样就可以通过检验编码的合法性来达到发现错误的目的。合理地安排非法编码数量和编码规则,就可以提高发现错误的能力,甚至达到

42、自动改正错误的目的。这里要用到一个码距的概念。码距是指任意两个合法码之间至少有几个二进制位不相同。仅有一位不同,称其码距为1。例如用4位二进制表示16种状态,则16种编码都用到了,此时码距为1。就是说,任何一个状态的4位码中的一位或几位出错,就变成了另一个合法码,此时无查错能力。,2.4.1 数据校验码实现原理,若用4个二进制位表示8个状态,就可以只用其中的8种编码,而把另8种编码作为非法编码,此时可使合法码的码距为2。一般来说,合理地增大合法码的码距,就能提高发现错误的能力,但表示一定数量的合法码所使用的二进制位数变多,增加了数据存储的容量,也增加了数据传输的数量。,2.4.2 奇偶校验码,

43、奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码,常用于存储器读写检查,或ASCII字符传送过程中的检查。它的实现原理,是使原来合法编码码距由1增加到2。若合法编码中有一个二进制位的值出错了,由1变成0,或由0变成1,这个码都将成为非法编码。实现的具体方法,通常是为一个字节补充一个二进制位,称为校验位,用设置校验位的值为0或1,使字节的8位和该校验位含有1值的个数为奇数或偶数。在使用奇数个1的方案进行校验时,称为奇校验;反之,称为偶校验。,2.4.2 奇偶校验码,根据8位的数据位中1值的个数确定校验位的值,是由专设的线路实现的。例如,当要把一个字节的值写进主存时,用此电路形成校验位

44、的值,然后将这9位的代码作为合法数据编码写进主存。当下一次读出这一代码时,再用相应线路检测读出的9位码的合法性。若在主存写或读的过程中,某一个二进制位上出现错误,得到的9位码就变成非法编码,从而发现一定是哪一位上出现了错误。这种方案只能发现一位错或奇数个位错,但不能确定是哪一位错,也不能发现偶数个位错。考虑到一位出错的几率比多位同时出错的几率高得多,该方案还是有很好的实用价值。,2.4.3 海明校验码,本章自学,课堂上不讲,2.4.4 循环冗余校验码(CRC码),二进制信息位串沿一条信号线逐位传送称为串行传送。CRC(Cyclic Redundancy Check)码可以发现并纠正信息存储或传

45、送过程中连续出现的多位错误,因此在磁介质存储和计算机通信方面得到广泛应用。CRC码一般是指k位信息码之后拼接r位校验码。应用CRC码的关键是如何从k位信息位简便地得到r位校验位(编码),以及如何从k+r位信息编码判断是否出错。此处仅就CRC码应用中的问题做简单介绍。1.模2运算 CRC编码要用到模2运算。所谓模2运算,就是指以按位模2相加为基础的四则运算,运算时不考虑进位和借位。,2.4.4 循环冗余校验码(CRC码),(1)模2加减。即按位加或减,不考虑进位或借位,可用异或逻辑实现。模2加与模2减的结果相同,即00=0、01=1、10=1、11=0。两个相同的数据的模2和为0。(2)模2乘。

46、即按模2加求部分积之和。例:,2.4.4 循环冗余校验码(CRC码),(3)模2除。即按模2减求部分余数。每求一位商应使部分余数减少一位。上商的原则是:当部分余数的首位为1时,商取1;当部分余数的首位为0时,商取0。当部分余数的位数小于除数的位数时,该余数即为最后余数。例:,2.4.4 循环冗余校验码(CRC码),2.CRC的编码方法 将待编码的k位有效信息位组表达为多项式M(x):,式中Ci为0或1。若将信息位组左移r位,则可表示为多项式M(x)xr。这样就可以空出r位,以便拼接r位校验位,即,信息位组 左移 r 位,2.4.4 循环冗余校验码(CRC码),CRC码是用多项式M(x)xr 除

47、以生成多项式G(x)(即产生校验码的多项式)所得余数作为校验位的。为了得到r 位余数(校验位),G(x)必须是r+1位的。设所得余数表达式为R(x),商为Q(x)。将余数拼接在信息位组左移r 位空出的r 位上,就构成这个有效信息的CRC码。这个CRC码可用多项式表示为 M(x)x r+R(x)=Q(x)G(x)+R(x)+R(x)=Q(x)G(x)+R(x)+R(x)=Q(x)G(x),2.4.4 循环冗余校验码(CRC码),因此所得CRC码是一个可以被G(x)表示的数码除尽的数码。例:对4位有效信息(1100)求循环校验编码,选择生成多项式(1011)。M(x)=x3+x2=1100(k=4

48、)M(x)x3=x6+x5=1100000(左移r=3位)G(x)=x3+x+1=1011(r+1=4位),模 2 除,M(x)x3+R(x)=1100000+010=1100010(模 2 加),2.4.4 循环冗余校验码(CRC码),将编好的循环校验码称为(7,4)码,即n=7,k=4。3.CRC的译码与纠错 将收到的循环校验码用约定的生成多项式G(x)去除,若码字无错则余数应为0;若有某一位出错,则余数不为0,不同位数出错余数不同。通过上例求出其出错模式,如表2-8所示。更换不同的待测码字可以证明:余数与出错位的对应关系是不变的,只与码字和生成多项式有关。因此表2-8给出的关系可以作为(

49、7,4)码的判别依据。对于其他码制或选用其他生成多项式,出错模式将发生变化。,表2-8(7,4)循环码的出错模式(生成多项式G(x)=1011),2.4.4 循环冗余校验码(CRC码),如果循环码有一位出错,用G(x)作模2除将得到一个不为0的余数。如果对余数补0继续除下去,将发现一个有趣的结果:各次余数将按表2-8顺序循环。例如第七位出错,余数将为001,补0后再除,第二次余数为010,以后依次为100、011、反复循环,这就是循环码名称的由来。这是一个有价值的特点。如果在求出余数不为0后,一边对余数补0继续做模2除,同时让被检测的校验码字循环左移。表2-8说明,当出现余数(101)时,出错

50、位也移到A1位置。可通过异或门将它纠正后,在下一次移位时送回A7。继续移满一个循环(对7,4码共移7次),就得到一个纠正后的码字。,2.4.4 循环冗余校验码(CRC码),4.关于生成多项式 并不是任何一个(r+1)位多项式都可以作为生成多项式的。从检错及纠错的要求出发,生成多项式应能满足下列条件:任何一位发生错误都应使余数不为0;不同位发生错误应当使余数不同;对余数继续做模2除,应使余数循环。将这些要求反映为数学关系是比较复杂的,对一个(n,k)码来说,可将(xn-1)分解为若干质因子(注意是模2运算),根据编码所要求的码距选取其中的因式或若干因式的乘积作为生成多项式。,2.4.4 循环冗余

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号