版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章计算机的数据表示
计算机组成原理电子教案
2.1字符数据的表示2.2逻辑数据的表示2.3校验码
2.3.1
码距与校验位的概念
2.3.2
奇偶校验码
2.3.3海明校验码
2.3.4
循环冗余校验码2.4数值数据的表示
2.4.1数的二进制真值表示
2.4.2用BCD码表示十进制数
2.4.3
定点数的表示
2.4.4浮点数的表示2.1字符数据的表示字符在计算机中的二进制编码称为字符代码。目前,计算机中普遍使用的字符代码是长度为7位的ASCII码(美国信息交换标准代码)。ASCII码在存储器中存放时,需要占用存储器的一个字节(8位),其中的最高位(b7)置为0或用作奇偶校验位。字符串被看作是一种数据结构,它是若干字符组成的一个序列,属于线性结构。字符串在计算机中的存储一般采用顺序存储结构,串中每个字符都用ASCII码表示,占用一个字节
。2.2逻辑数据的表示逻辑数据用于描述某种关系是否成立、某种条件是否满足、某种状态是否出现、某种控制是否有效等。逻辑数据所描述的结果总是只有两种可能:成立或不成立,满足或不满足,出现或未出现、有效或无效等。逻辑数据的两种值被分别称为“真”和“假”。“真”代表关系成立、条件满足、状态出现、控制有效等,“假”则反之。计算机中只需用一位二进制数字的0和1两种状态,就能满足逻辑数据表示的需要:1表示“真”,0表示“假”。2.3校验码数据校验码是一类能够发现甚至自动纠正某些数据错误的数据编码方法。通常,将正确的数据编码称为合法编码,而将错误的数据编码称为非法编码。校验码的设计原则:当一个合法编码中的数据位发生错误时,就变为一个非法编码,而不是变为另一个合法编码。这样,只要检测到非法编码,就能发现数据错误。2.3.1
码距与校验位的概念一个二进制编码系统中,当两个不同的合法编码进行对应位的比较时,会有一些位上的取值不同,这些取值不同的位的位数称为这两个编码的码距,也称海明距离。一个编码系统中任意两个合法编码的码距的最小值,称为这个编码系统的最小码距。一个编码系统不仅要编出全部合法编码,还应能编出一定数量的非法编码。这样,在合法编码出错时,才有可能变成非法编码而被检出。2.3.2
奇偶校验码奇偶校验码是在基本编码之上增加一个校验位——奇偶校验位而形成的。奇偶校验分为奇校验和偶校验两种实现方案。奇校验是通过校验位的调节,使整个编码中包含的二进制1的位数为奇数。偶校验是通过校验位的调节,使整个编码中包含的二进制1的位数为偶数。5位偶校验码表(最高位为校验位)
原始数据编码(4位)偶校验编码(5位)原始数据编码(4位)偶校验编码(5位)000000000100011000000110001100101001001010010101001010001100011101111011010010100110001100010100101110111101011000110111011110011110111111101111增加一个校验位后,最小码距从1变为2。
表中未列出的另16种5位编码就是本编码系统的冗余码,也就是非法编码。任一非法编码均与表中某个合法编码的码距为1,且合法编码出错的位数为奇数(1、3或5)时,均会变成非法编码。奇偶校验码能够发现奇数个编码位的错误,但无法确定出错位的位置,故不能实现自动纠错。2.3.3海明校验码海明校验码具有发现2位错误并纠正1位错误的能力,是一种广泛使用的校验码。海明校验码的设计原理:将几个校验位编入到数据码的特定位置,全部数据位被分成几个奇偶校验组,每个数据位被按一定的规则分配到其中几个组中,各校验位分别作为各组的奇偶校验(一般为偶校验)位。当某个数据位出错时,将会导致含有该数据位的几个校验组的校验结果出错。根据出错校验组的不同组合,就能确定是哪个数据位发生错误,进而自动纠正这个错误。海明码数据位数k与校验位数r的对应关系表
k值最小的r值1~45~1112~2627~5758~12045678设校验位的位数为r,数据位的位数为k,若要能够发现2位错误并纠正1位错误,则需满足设m=k+r,则海明码是一个m位编码,设其一般表示形式为HmHm-1…H2H1,则此海明码的编码规则是:⑴各校验位Pi(i=1,2,…,r)被安排在编码的第2i-1位的位置,编码中的其余位为数据位。如校验位P3在海明码中位于第4(23-1)位,即编码中的H4。⑵海明码的每个位被分配到几个奇偶校验组中,所以,每个位均由几个校验位来校验。各被校验位与相关的校验位之间的关系是:被校验位的位号是相关各校验位的位号之和(这里的位号是指其在海明码中的位号)。海明码的编码位与相关校验位之间的关系海明码位号数据位/校验位相关的校验位位号H1P11(1=1)H2P22(2=2)H3D11,2(3=1+2)H4P34(4=4)H5D21,4(5=1+4)H6D32,4(6=2+4)H7D41,2,4(7=1+2+4)H8P48(8=8)可见,P1要对数据位D1、D2、D4进行校验,P2要对数据位D1、D3、D4进行校验,P3要对数据位D2、D3、D4进行校验。如选择偶校验,有对应的三个校验式为编码位出错与校验式结果之间的关系
当不同的编码位(包括数据位和校验位)发生错误时,3个校验式的值组成的二进制序列S3S2S1就会不同。出错的编码位校验式结果S3S2S1海明码位号P1001(1)H1P2010(2)H2D1011(3)H3P3100(4)H4D2101(5)H5D3110(6)H6D4111(7)H7无出错位000(0)无2.3.4循环冗余校验码循环冗余校验(CRC)码因其纠错能力强,且在信息量较大的情况下,编码与解码所需的硬件代价小等优点,被广泛用于串行传送过程中的检错与纠错。CRC码也称为(n,k)码,它是在k位信息位之后拼接r位校验位而形成的n位编码(n=k+r)。
1.模2四则运算CRC码的编码及校验过程均需要用到模2四则运算。模2运算是按位运算,位与位之间不产生进位或借位。⑴模2加/减运算:模2加与模2减是两种等效的运算,均等同于逻辑异或运算,即⑵模2乘运算:在对部分积求和时按模2加进行。例如1010×110110100000101010101110010⑶模2除运算:上商时,如果上一次部分余数的最高位为1,则本次上商为1,否则上商为0;求部分余数时,按模2减进行;将每次求得的部分余数的最高位(总是0)去掉,使部分余数每次减少一位,当部分余数的位数少于除数位数时,即为最终的余数。例如
101
商10110010被除数也是最初的部分余数
101部分余数最高位为1,上商为1
0
0110去掉部分余数最高位的0,部分余数减少一位000部分余数最高位为0,上商为0
0
110去掉部分余数最高位的0,部分余数减少一位101部分余数最高位为1,上商为1
011去掉部分余数最高位的0,得最终余数11上式中,G(x)被称为生成多项式,是一个r阶多项式;Q(x)为商多项式;R(x)是余数多项式。将R(x)拼接在M(x)之后,即得到完整的CRC码,其多项式表示形式为M(x)×xr+R(x)(模2加)。CRC码M(x)×xr+R(x)可被其生成多项式G(x)整除(模2除),即余数为r位全0。因为M(x)×xr+R(x)=[Q(x)×G(x)+R(x)]+R(x)=Q(x)×G(x)+[R(x)+R(x)]=Q(x)×G(x)
(模2运算)
【例2.1】按(7,4)CRC码的编码规则,求4位信息码1100的CRC码,生成多项式选择G(x)=x3+x+1。解:由(7,4)码可知r=7-4=3,即校验位有3位。根据4位信息码1100得M(x)=x3+x2;M(x)左移r位后得M(x)×xr
=(x3+x2)×x3=x6+x5=1100000G(x)=x3+x+1=1011。下面按模2除求3位校验位所以,R(x)=010。由此可得CRC码为M(x)×xr+R(x)=1100000+010=1100010(模2加)CRC码还有一个重要特点:在一个不为0的余数的最低位补1个0后再除以G(x)(模2除),所得的余数就是出错模式表中的下一个余数;如此继续下去,各次产生的余数将按出错模式表中的顺序循环变化。对一个(n,k)码,在某位出错时,从对应的余数开始,按上述方法产生余数的循环变化,同时每次使整个CRC码循环左移1位,当余数变到对应于An出错的余数时,出错位也被移到An的位置,此时将An取反实现纠错,然后继续做余数的循环变化和CRC码的循环左移,直到做满一个循环(n次),就得到了一个纠正后的CRC码。利用CRC码来纠错,不必针对每个不为0的余数来设计对应编码位的纠错电路,能有效降低校验电路的硬件代价。
4.生成多项式简介生成多项式应能满足下列要求:⑴CRC码的任何一位出错,均使余数不为0;⑵CRC码的不同位出错时,余数也应不同;⑶对不为0的余数最低位补0后继续作模2除,应能使余数循环。⑷若要求余数为r位,则生成多项式应为r阶。生成多项式的求取方法:对一个(n,k)码来说,可将(xn
-1)按模2运算规则分解为若干质因子,根据编码所要求的码距选取其中的因式或若干因式的乘积作为生成多项式。
【例2.2】设n=7,则按模2运算规则,有选择G(x)=x+1=11,可构成(7,6)码,只能判1位错。选择G(x)=x3+x+1=1011或G(x)=x3+x2+1=1101,可构成(7,4)码,能判2位错或纠1位错。选择G(x)=(x+1)(x3+x+1)=11101,可构成(7,3)码,能判2位错并纠1位错。部分(n,k)码的生成多项式G(x)
nk码距dG(x)多项式G(x)二进制码743G1(x)=(x3+x+1)或(x3+x2+1)1011或110134G2(x)=G1(x)(x+1)=(x3+x+1)(x+1)或(x3+x2+1)(x+1)11101或1011115113G1(x)=(x4+x+1)1001175G2(x)=(x4+x+1)(x4+x3+x2+x+1)11101000131263G1(x)=(x5+x2+1)100101215G2(x)=(x5+x2+1)(x5+x4+x3+x2+x+1)1110110100163573G1(x)=(x6+x+1)515G2(x)=(x6+x+1)(x6+x4+x+1)1110411025G(x)=(x16+x15+x2+1)1101012.4数值数据的表示
数值数据是计算机中用于各种算术运算的数据。计算机中表示数值数据要解决有效数字、小数点及符号的表示,还要便于数据的运算。2.4.1数的二进制真值表示所谓数的“真值”表示,是相对于数在计算机中的编码表示而言的,也就是人们平时所习惯的数的书面表示形式。如+10000100和-1111011.01。在计算机中,无论是“+”号、“-”号还是小数点“.”,都属于字符,需要用ASCII码来表示。如果计算机中也采用真值表示数据的话,就会大大增加信息的存储量,同时也会给运算带来很大的麻烦。计算机中的数值数据采用特殊的二进制编码形式表示,称为机器数。2.4.2用BCD码表示十进制数BCD(binarycodeddecimal)码的完整意义是“用二进制编码的十进制码”,它采用4位二进制编码表示1位十进制数。BCD码分有权码与无权码两类。有权码如8421码、2421码等;无权码如余3码、格雷码等。采用8421码可以进行十进制算术运算,但运算结果可能需要修正。典型BCD码
十进制数有权码无权码8421码2421码余3码格雷码000000000001100001000100010100000120010001001010011300110011011000104010001000111011050101101110001110601101100100110107011111011010100081000111010111100910011111110001002.4.3定点数的表示计算机中实际用于数值计算的数据表示方法主要有定点数表示法和浮点数表示法两种;定点数表示法也是浮点数表示法的基础。所谓定点数表示,是指小数点被固定在数据中某个特定位置上的数据表示方法。定点整数:定点小数:其中,xs是数的符号。定点数中,小数点的位置可以看作是默认的,因此,小数点不用表示出来。符号的表示是定点数表示必须要解决的问题。带符号的定点数在计算机中有原码、补码、反码和移码等四种编码表示方法。
1.原码表示法原码以0表示正号,以1表示负号,直接置于数的最左端(即最高位位置);而数的数字部分与其绝对值一致。
【例2.3】⑴若x=+0.1011,则[x]原=0.1011;⑵若x=-0.1011,则[x]原=1.1011;⑶若x=+1011,则[x]原=01011;⑷若x=-1011,则[x]原=11011。设符号位用xs表示,各数据位用xi(i=0,1,2,…,n–1)表示,则原码的一般表示形式为[x]原=xsxn–1
xn–2…x1
x0用原码表示时,[+0]原与[-0]原是不同的:[+0]原=000…00[-0]原=100…00原码比较适合于乘除运算。原码不适合于加减运算。
2.补码表示法计算机中,因为用来存储数据的存储单元或寄存器有一定的位数限制,进行数据运算的运算器也有一定的位数限制,所以,数据在计算机中表示的位数也是受限制的。当数据超过规定位数时,其处于高位的超出部分将被丢弃。以定点整数为例,设一个寄存器的位数为n,则超出该寄存器存储能力的最小正整数是2n,它在该寄存器中的存储结果与0的存储结果是一样的。一般地,设x为正整数,且0≤x<2n,则x与2n
+x在n位寄存器中的存储结果是一样的,均为x。这种现象在数学中称为“同余”,即x除以2n与2n
+x除以2n的余数相同,用数学公式表示为x=2n
+x(mod2n)在同余的概念下,设x<0且|x|<2n,则同样有x=2n
+x(mod2n)式中,x<0而2n
+x>0。它说明:在mod2n的前提下,一个负数x可以用一个正数2n
+x来表示;也就是说,一个负数x与一个正数2n
+x在n位寄存器中的存储结果是一样的。在mod2n的前提下,设|x|<2n,我们把x的同余数2n
+x称为x的补码,即[x]补=2n
+x(mod2n)在一个n位寄存器中存放补码时,要把最高位留作符号位,数字部分为n–1位。故x的实际取值范围是-2n–1≤x≤2n–1
-1对定点小数,由于符号位占据了n位寄存器的最高位,相当于占据了20位,故模数应该是21。由此可得定点小数x的补码为[x]补=21
+x(mod21)x的实际取值范围是-1≤x≤1-2-(n–1)
【例2.4】设寄存器位数为8位,可以存放一个8位补码(1位符号,7位数值)。设x=+1001011,求[x]补。解:[x]补=28+x(mod28)=28+(+1001011)(mod28)=01001011(mod28)其中,最高位上的0被看作符号位。由本例可知:一个正数的补码与其原码是一致的。
【例2.5】设寄存器位数为8位,x=-1001011,求[x]补。解:[x]补=28+x(mod28)=28+(-1001011)(mod28)=10110101(mod28)其中,最高位上的1被看作符号位。由本例可知:一个负数的补码,其符号位为1。显然,负数的补码与其原码是不同的。
【例2.6】设寄存器位数为8位,x=+0.1001011,求[x]补。解:[x]补=21+x(mod21)=21+(+0.1001011)(mod21)=0.1001011(mod21)最高位上的0被看作符号位。
【例2.7】设寄存器位数为8位,x=-0.1001011,求[x]补。解:[x]补=21+x(mod21)=21+(-0.1001011)(mod21)=1.0110101(mod21)最高位上的1被看作符号位。
与原码不同,补码的符号位(正为0,负为1)不是人为规定的,而是在求补码的运算中求出的,实际上就是运算结果的最高有效数字位。因此,在用补码进行加减运算时,符号位可以象数字位一样参加运算,给计算机的加减运算带来很大方便。3.反码表示法一个数的反码可通过其原码求得,方法是:正数的反码与其原码一致;负数的反码与其原码符号位相同,数字位按位取反。反码一般不用于计算,但可用来作为原码转换为补码时的中间代码。原码转换为补码的方法是:⑴正数的原码、补码及反码均相同,无需转换;⑵对负数,先从原码求其反码,再将反码加1,即得其补码。补码到原码的转换也使用同样的方法。【例2.8】设寄存器位数为8位,x=-1001011,则[x]原=11001011,[x]反=10110100,[x]补=[x]反+1=10110100+1=1
【例2.9】在例2.8的基础上,将[x]补转换为[x]原的过程如下:[x]补=10110101→符号位不变,数字位每位取反,得11001010→加1,得11001011=[x]原。4.移码表示法移码只用于表示带符号定点整数。设x是一个n位二进制整数,则其移码定义为[x]移=2n+x,2n
>x≥-2n[x]移是一个n+1位的编码,最高位被看作符号。
【例2.10】设x=+1001011,为7位数,则[x]移=27+x=27+(+1001011)=1
【例2.11】设x=-1001011,为7位数,则[x]移=27+x=27+(-1001011)=0移码正数的符号为1,而负数的符号为0。移码的符号能够直接参与加减运算。移码之间的大小关系可以直接反映数据真值之间的大小关系。2.4.4浮点数的表示浮点数是指小数点位置未经人为约定的一般的数,其小数点可以出现在数中任意位置。一个浮点数N可以表示成N=Re
×m浮点数的三个构成要素:指数e;基数R;有效数字m。浮点数表示的基本思想:将浮点数的三个要素分别表示出来。在计算机中,指数是一个整数,可用定点整数表示;基数默认为2,不用表示出来;有效数字部分被规定为一个纯小数,可用定点小数表示。指数的机器数编码称为“阶码”,有效数字的机器数编码称为“尾数”,尾数的符号就是浮点数的符号。浮点数在计算机中的一般编码表示格式为:尾数M一般用补码或原码表示;阶码E一般用移码或补码表示;数符S是浮点数的符号,也就是尾数的符号(故M不含符号位)。浮点数的表示范围取决于阶码的位数,而浮点数的表示精度则取决于尾数的位数。在浮点数表示中,除了要求尾数为纯小数外,还进一步规定:当尾数的绝对值不为0时,尾数绝对值(或真值)的最高有效数字必须为1;这称为浮点数的规格化表示。如:+110.0101的规格化表示形式是23×0.1100101而不能是24×0.01100101浮点数的规格化表示既消除了浮点数表示的不确定性,又可以尽量减少其精度损失。浮点数表示中的一些特殊情况:⑴当尾数为0时,浮点数的值为零,称为机器零。⑵当阶码小于可表示的最小数(即绝对值最大的负数)时,浮点数的值也被看作机器零。⑶当阶码大于可表示的最大数时,称为浮点数“溢出”,通常要作为异常情况处理(报警或中止程序执行等)。IEEE754标准的32位(单精度)和64位(双精度)浮点数的标准格式:其中,S为数符,0表示正数,1表示负数;E为阶码,用移码表示;M是尾数,用原码表示。IEEE754格式浮点数的真值x计算公式:
单精度:x=(-1)S
×(1.M)×2E–127,e=E–127
双精度:x=(-1)S
×(1.M)×2E–1023,e=E–1023其中,S、E、M即为标准格式中的数符、阶码、尾数,e是指数的真值。IEEE754标准浮点数的规格化尾数实际为1.M,其中的整数位1是默认的,没有表示出来,只在计算时由运算电路自动提供。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 驻马店地区上蔡县2025-2026学年第二学期五年级语文第五单元测试卷(部编版含答案)
- 潜江市2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 六盘水市六枝特区2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 昆明市官渡区2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 菏泽地区鄄城县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 池州市贵池区2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 绵阳市游仙区2025-2026学年第二学期五年级语文第四单元测试卷(部编版含答案)
- 南宁市隆安县2025-2026学年第二学期二年级语文第四单元测试卷(部编版含答案)
- 鸡西市虎林市2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 唐山市玉田县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 2026上半年安徽黄山市休宁城乡建设投资集团有限公司及权属子公司招聘18人备考题库参考答案详解
- 2026年度春季江铜集团江铜国际贸易有限公司校园招聘2人备考题库含完整答案详解【历年真题】
- 2026西咸某国有企业电力设计人员招聘(23人)笔试参考题库及答案解析
- 2026广西贺州市从“五方面人员”中选拔乡镇领导班子成员67人笔试备考题库及答案解析
- 学校内部控制六大业务工作职责及岗位职责说明书
- 2025年7月浙江省普通高中学业水平考试历史试卷(含答案)
- 计算机网络性能指标
- SAS课件-第5讲-SAS的假设检验
- 《汽车专业英语图解教程》高职配套教学课件
- 尿素装置流程简述
- 增演易筋洗髓内功图说(校对勘误版)
评论
0/150
提交评论