数据的表示和运算.ppt

上传人:小飞机 文档编号:5270458 上传时间:2023-06-21 格式:PPT 页数:199 大小:2.36MB
返回 下载 相关 举报
数据的表示和运算.ppt_第1页
第1页 / 共199页
数据的表示和运算.ppt_第2页
第2页 / 共199页
数据的表示和运算.ppt_第3页
第3页 / 共199页
数据的表示和运算.ppt_第4页
第4页 / 共199页
数据的表示和运算.ppt_第5页
第5页 / 共199页
点击查看更多>>
资源描述

《数据的表示和运算.ppt》由会员分享,可在线阅读,更多相关《数据的表示和运算.ppt(199页珍藏版)》请在三一办公上搜索。

1、2023/6/21,1,第2章 数据的表示和运算,2.1 数制与编码 2.2 定点数的表示和运算2.3 浮点数的表示和运算 2.4 算术逻辑单元ALU,2023/6/21,2,2.1 数制与编码 2.1.1 进位计数制及其相互转换当使用汇编语言或者高级语言编写程序时,一般都采用十进制形式;有时出于某种需要也采用十六进制形式或者二进制形式来表示。但是在计算机内部,数据的表示、存储和运算均采用二进制形式。进位计数制:又称为数制,即按进位制的原则进行计数。数制由两大要素组成:基数R和各数位的权W。基数R决定了数制中各数位上允许出现的数码个数,基数为R的数制称为R进制数。权W则表明该数位上的数码所表示

2、的单位数值的大小,权W与数位的位置有关。计算机中常用的进位计数制有二进制、八进制、十进制和十六进制。,2023/6/21,3,2.1 数制与编码 2.1.1 进位计数制及其相互转换假设 任意数值N 用 R进制数 来表示,表示形式为n+k个自左向右排列的符号来表示:N=(Dn-1Dn-2D0.D-1D-2D-k)R 式中Di(-kin-1)为该数制采用的基本符号,可取值0,1,2,R-1,小数点隐含在D0与D-1之间,整数部分有n位,小数部分有k位,数值N的实际值为:,2023/6/21,4,2.1 数制与编码 2.1.1 进位计数制及其相互转换十进制(Decimal):基数为10,允许使用的数

3、字有10个(0-9)。主要特点是逢十进一。任意一个十进制数可以表示为:,例如十进制数135.26可以表示为:,2023/6/21,5,2.1 数制与编码 2.1.1 进位计数制及其相互转换二进制(Binary):基数为2,可使用的数字只有0和1,逢二进一。任意一个二进制数可以表示为:,例如二进制数(1100.1011)2可以表示为:,2023/6/21,6,2.1 数制与编码 2.1.1 进位计数制及其相互转换计算机中数据主要以二进制数的形式存储,原因有以下几点:二进制数易于表示,比较容易找到具有二值状态的物理器件来表示数据和实现存储。比如脉冲有无、电压高低等。二进制数运算规则简单,运算过程中

4、的输入状态和输出状态较少,便于使用电子器件和线路加以实现。二进制数的0和1与逻辑推理中的“真”和“假”相对应,为实现逻辑运算和逻辑判断提供了便利。,2023/6/21,7,2.1 数制与编码 2.1.1 进位计数制及其相互转换八进制(Octal):基数为8,可使用的数字有0-7,逢八进一。任意一个八进制数可以表示为:,十六进制(Hexadecimal):基数为16,可使用的数码有0-9和A-F(代表10-15),逢十六进一。任意一个十六进制数可表示为:,2023/6/21,8,2.1 数制与编码 2.1.1 进位计数制及其相互转换非十进制转化为十进制:非十进制数转为十进制数时将非十进制数按权展

5、开,然后求和。【例2.1】将下列非十进制数转化为十进制。,(1207)8=183282081780=512+128+0+7=(647)10(A7)16=(10161+7160)10=(160+7)10=(167)10,2023/6/21,9,2.1 数制与编码 2.1.1 进位计数制及其相互转换十进制转化为非十进制:十进制数转换为非十进制数时需将十进制数整数部分和小数部分分别转换,再将结果写到一起。十进制整数转换为非十进制整数:除R取余法。十进制整数不断除以R,直至商为0。每除一次取一个余数,从低位排向高位。,例:208转换成十六进制数(208)10=(D0)1616 208 余 0 16 1

6、3 余 13=DH 0,2023/6/21,10,2.1 数制与编码 2.1.1 进位计数制及其相互转换十进小数转换为非十进制小数:乘R取整法。用转换进制的基数乘以小数部分,直至小数为0或达到转换精度要求的位数。每乘一次取一次整数,从最高位排到最低位。,例:0.625转换成二进制数 0.625 2 1.25 1(b-1)0.25 2 0.50 0(b-2)0.50 2 1.00 1(b-3),所以(0.625)10=(0.101)2,2023/6/21,11,2.1 数制与编码 2.1.1 进位计数制及其相互转换【例2.2】将(12.6875)10转化为二进制数。,整数部分(12)10=(11

7、00)2,2023/6/21,12,2.1 数制与编码 2.1.1 进位计数制及其相互转换【例2.2】将(12.6875)10转化为二进制数。,小数部分(0.6875)10=(0.1011)2.所以(12.6875)10=(1100.1011)2,2023/6/21,13,2.1 数制与编码 2.1.1 进位计数制及其相互转换【课堂练习】将(105.3125)10转化为二进制数。,(105.3125)10=(1101001.0101)2,2023/6/21,14,2.1 数制与编码 2.1.1 进位计数制及其相互转换二进制、八进制与十六进制的转换:3位二进制数组成1位八进制数,4位二进制数组成

8、1位十六进制数二进制转换为八进制:从小数点开始,向两边每3位为一组,整数部分不足3位在前面补“0”,小数部分不足3位在后面补“0”。八进制转换为二进制:过程相反,每一位八进制数转换为3位二进制编码。二进制转换为十六进制:从小数点开始,向两边每4位为一组,整数部分不足4位在前面补“0”,小数部分不足4位在后面补“0”。十六进制转换为二进制:只需将每一位十六进制数写成它的4位二进制编码即可。八进制与十六进制的转换先转换成二进制,然后再转换为所求的进制数,2023/6/21,15,2.1 数制与编码 2.1.1 进位计数制及其相互转换【例2.3】将(11011.11001)2转化为八进制、十六进制,

9、将(751)8转化为十六进制。,(11011.11001)2=(011 011.110 010)2=(33.62)8(11011.11001)2=(0001 1011.1100 1000)2=(1B.C8)16(751)8=(111 101 001)2=(0001 1110 1001)2=(1 E 9)16,2023/6/21,16,2.1 数制与编码 2.1.2 真值和机器数计算机中的数据可分两类:无符号数和有符号数。无符号数:即没有符号的数,在寄存器中的每一位均可存放数值。有符号数:即带有符号的数,存放时需要留出位置存放符号。符号“正”、“负”需要数字化,一般用“0”表示正号,用“1”表示

10、负号,并将它放在有效数字前面。机器数:符号“数字化”的数真 值:带“+”或“-”符号的数例如,真值是+0.11001,机器数为0.11001;真值为0.11001,机器数为1.11001,2023/6/21,17,2.1 数制与编码 2.1.3 BCD码BCD码:使用二进制数编码来表示十进制数的方法,又叫做二-十进制码。一般用4位二进制编码来表示一个十进制数。常用的BCD码分为有权码和无权码。有权码:每一位都有固定的权值,加权求和的值即为它所表示的十进制数。常用的有权码有8421码、2421码、5211码等,8421码的4位二进制数的权从高到低依次是8、4、2、1。一般提到的BCD码就是指84

11、21码。这种编码的优点是这4位二进制数之间满足二进制的进位规则。,2023/6/21,18,2.1 数制与编码 2.1.3 BCD码在计算机内部实现BCD码算术运算,要对运算结果进行修正。BCD码加法运算修正规则:如果两个一位BCD码相加之和小于或等于(1001)2,即(9)10,不需修正;如相加之和大于或等于(10)10,要进行加6修正,并向高位进位,进位可在首次相加或修正时产生。例如 1+8=9 4+9=13 7+9=16 0 0 0 1 0 1 0 0 0 1 1 1+1 0 0 0+1 0 0 1+1 0 0 1 1 0 0 1 1 1 0 1 1 0 1 1 0 不需修正 加6修正

12、加6修正,2023/6/21,19,2.1 数制与编码 2.1.3 BCD码其它几种有权码:2421、5211、4311码都采用4位有权的二进制码表示1个十进制数,但这4位二进制之间不符合二进制规则。这几种有权码有一特点:任何两个相加之和等于(9)10的二进制码互为反码。如2421码中,0(0000)与9(1111)、1(0001)与8(1110),互为反码。表 2.1给出了十进制数的几种常见的4位有权码。,2023/6/21,20,2.1 数制与编码 2.1.3 BCD码,表2.1 4位有权码,2023/6/21,21,2.1 数制与编码 2.1.3 BCD码无权码:4位二进制编码的每一位没

13、有固定的权。在采用的无权码的一些方案中,采用的比较多的是余3码,格雷码余3码:把原二进制的每个代码都加0011值得到的。优点是执行十进制数位相加时,能正确产生进位信号,还给减法运算带来了方便。余3码的执行加法运算的规则:当两个余3码相加不产生进位时,应从结果中减去0011;产生进位时,应将进位信号送入高位余3码,同时本位加0011的修正操作。格雷码:它的任何两个相邻的编码之间只有1个二进制位的状态不同,其余3个二进制位必须具有相同状态。优点:从一个编码变成下一个相邻编码时,只有1位的状态发生变化,有利于得到更好的译码波形,在模拟/数字转换的电路中得到更好的运行结果。,2023/6/21,22,

14、2.1 数制与编码 2.1.3 BCD码,表2.2 4位无权码,2023/6/21,23,2.1 数制与编码 2.1.4 字符和字符串字符:字母、数码、运算符号、标点符号等,汉字也属于字符。使用计算机的过程必然要涉及字符。由于计算机只能识别0和1两种数码,所以字符也应采用二进制编码。目前经常用的是美国国家信息交换标准字符码,简称ASCII(American Standard Code for Information Interchange)码。ASCII码:7位二进制代码表示一个字符,称为标准或基本ASCII码,如表 2.3所示。,2023/6/21,24,高位b6b5b4,低位b3b2b1b

15、0,7位ASCII码编码表,2023/6/21,25,2.1 数制与编码 2.1.4 字符和字符串标准ASCII码:有128种的组合,每种组合可代表一个字符。包括所有大写和小写字母,数字 0 到 9、标点符号,及在美式英语中使用的特殊控制字符。扩充ASCII码:在标准ASCII码前面增加一个二进制位,用8位二进制数来给字符编码。共有256种组合,可给256个字符编码。前128个字符的最高位为0,用于表示标准ASCII码。后128个字符的最高位为1,用于表示128种特殊符号,如制表符等。,2023/6/21,26,2.1 数制与编码 2.1.4 字符和字符串汉字编码:计算机的汉字处理技术必须解决

16、3个问题:汉字的输入、存储与交换和汉字的输出,它们分别对应于汉字的输入码、内码、交换码和字形码。汉字输入码:将汉字输入到计算机中多用的编码。数字输入法:对每个汉字采用一个数字串进行编码,例如区位码、国标码等。优点是无重复码,缺点是难以记忆。字形分解法:将汉字按其规则和笔画划分成若干部件,用字母或者数字进行编码。如五笔字型输入法、郑码输入法等。拼音输入法:是以汉字拼音为基础的输入方法。如全拼输入法、智能ABC输入法等。优点是无须记忆,缺点是重码率较高。音形输入法:利用拼音输入法和字形分解法的各自优点,兼顾汉字的音和形,将两者混合使用。如自然码输入法。,2023/6/21,27,2.1 数制与编码

17、 2.1.4 字符和字符串汉字内码:是计算机系统内部处理、存储汉字所使用的统一代码,一般采用两个字节表示一个汉字。汉字的输入码可以有多种,但内码在计算机中是唯一的。汉字交换码:不同的具有汉字处理功能的计算机系统之间在交换汉字信息时所用的代码标准。目前常用的是国标码,即国家标准化信息用汉字编码。国标汉字共有6763个,分两级,一级汉字为常用汉字,共3755个;二级汉字是非常用汉字,共3008个。每个汉字对应4位十六进制数(两个字节)。,2023/6/21,28,2.1 数制与编码 2.1.4 字符和字符串汉字字形码:目前的汉字处理系统中,字形信息的表示可以分为两大类:一类是用活字或文字版的母体字

18、形形式,另一类是用点阵表示法、矢量表示法等形式,其中最基本应用最广泛的是后者。,2023/6/21,29,2.1 数制与编码 2.1.4 字符和字符串字符串:连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字符。当主存字由2个或4个字节组成时,在同一个主存字中,既可以按从低位字节向高位字节的顺序存放字符串的内容,也可以按从高位字节向低位字节的次序顺序存放字符串的内容。这两种存放方式都是常用方式。如,1F AB THEN READ(C)就可有两种不同存放方式。假定每个主存字由4个字节组成,图 2.1(a)是按从高位字节向低位字符的次序存放,图 2.1(b)按从低位字节向高

19、位字节的次序存放。主存中每个字节存放的是相应字符的ASCII编码值。,2023/6/21,30,2.1 数制与编码 2.1.4 字符和字符串,(a)(b),2023/6/21,31,2.1 数制与编码 2.1.5 数据校验码 计算机系统中的数据,在读写、存取和传送的过程中可能产生错误(随机错误或突发错误)。为减少和避免这类错误,一方面精心设计各种电路,提高计算机硬件的可靠性;另一方面是在数据编码上找出路,即采用某种编码法,通过少量附加电路,使之能发现某些错误,甚至能确定出错位置,进而实现自动改错的能力。,2023/6/21,32,2.1 数制与编码 2.1.5 数据校验码 数据校验码是一种常用

20、的带有发现某些错误或自动改错能力的数据编码方法。实现原理:加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码。这样就可以通过检测编码的合法性来达到发现错误的目的。码距:一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit)数叫这两个码字的码距,而整个编码系统中任意两个码字的最小距离就是该编码系统的码距。,2023/6/21,33,2.1 数制与编码 2.1.5 数据校验码 图2.4所示编码系统,用三个bit表示8个码字。两个码字之间不同的bit数最少为1,故该系统码距为1。如任何码字中一位或多位被颠倒,这个码字不能与其它有效信息区分开。如传送信息001,而被误收为011,

21、因011仍是合法码字,接收机将认为011是正确信息。,图 2.4 用三个bit来表示8个码字,2023/6/21,34,2.1 数制与编码 2.1.5 数据校验码 图2.5所示编码系统,用4个bit表示8个码字,码字间的最小距离增加到2,码距为2。8个码字相互间最少有两bit的差异。如果任何信息的一个数位被颠倒,就成为一个非法码字。如信息是1001,误收为1011,接收机知道发生了一个差错,因为1011不是一个合法码字。但差错不能被纠正,偶数个差错也无法发现。,图 2.5 用4个bit来表示8个码字,2023/6/21,35,2.1 数制与编码 2.1.5 数据校验码 为使一个系统能检查和纠正

22、一个差错,码间最小距离必须至少是“3”。最小距离为3时,或能纠正一个错,或能检二个错,但不能同时纠一个错和检二个错。编码信息纠错和检错能力的进一步提高需要进一步增加码字间的最小距离。表2.6概括了最小距离为1至7的码的纠错和检错能力。常用的数据校验码:奇偶校验码、海明校验码、循环冗余校验码,2023/6/21,36,2.1 数制与编码 2.1.5 数据校验码-奇偶校验码奇偶校验码:奇偶检验码是一种最简单、最直观、应用最广泛的检错码,它的码距为2,因此它只能检出一位错。实现方法:由若干位有效信息(如1个字节),再加上1个二进制位(校验位)组成校验码。检验位的取值(0或1)将使整个校验码中“1”的

23、个数为奇数或偶数。当校验位的取值使整个校验码中“1”的个数为奇数时,称为奇校验;当“1”的个数为偶数时为偶校验。奇偶校验的编码和检验的电路:常见的有并行奇偶统计电路,如图2.2所示。,2023/6/21,37,PO=D1 D2 D3 D4 D5 D6 D7 D8,2.1 数制与编码 2.1.5 数据校验码-奇偶校验码,图 2.2 奇偶校验位的形成及检验电路,=,2023/6/21,38,2.1 数制与编码 2.1.5 数据校验码-奇偶校验码下面以奇校验为例说明对主存信息进行奇偶校验的全过程:校验位形成:当要把一个字节的代码D7D0写入主存时,就将它们送往奇偶校验逻辑电路,该电路产生的“奇形成”

24、信号就是校验位。它将与8位代码一起作为奇校验码写入主存。若D7D0中有偶数个“1”,则“奇形成”=1,若D7D0中有奇数个“1”,则“奇形成”=0。校验检测:校验检测是将读出的9位代码(8位信息位和1位校验位)同时送入奇偶校验电路检测。若读出代码没有错误,则“奇校验出错”=0;若读出代码中的某一位上出现错误,则“奇校验出错”=1,表示这个9位代码中一定有某一位出现了错误,但是具体的错误位置是不能确定的。,2023/6/21,39,2.1 数制与编码 2.1.5 数据校验码-奇偶校验码水平垂直奇偶校验码:实际工作中还经常采用纵横都加校验奇偶校验位的编码系统水平垂直奇偶校验码。考虑传输若干个长度为

25、m位的信息。如果把这些信息编成每组n个信息的分组,则在这些不同的信息间,也能够作奇偶校验。下图中n个信息的一个分组排列成矩阵式样,并以水平奇偶(HP)及垂直奇偶(VP)的形式编出奇偶校验位。,2023/6/21,40,2.1 数制与编码【例】(2001年程序员试题):由 6 个字符的 7 位 ASCII 编码排列,加上水平垂直奇偶校验位构成下列矩阵(最后一列为水平奇偶校验位,最后一行为垂直奇偶校验位),则:,X1 X2 X3 X4 处比特分别为?X5 X6 X7 X8 处比特分别为?X9 X10 XI1 X12 处比特分别为?Y1 和 Y2 处的字符分别为?,0,1,1,1,0,0,0,1,1

26、,1,1,0,2023/6/21,41,2.1 数制与编码【解】从ASCII码左起第5列可知垂直为偶校验。则:从第1列可知X4=0;从第3行可知水平也是偶校验。从第2行可知X3=1;从第7列可知X8=0;从第8列可知X12=1;从第6列可知X10=0;从第6行可知X9=1;从第2列可知X1=1;从第1行可知X2=1;从第3列可知X5=1;从第4行可知X6=0;从第4列(或第5行)可知X7=0;从第7行可知X11=1;整理一下:X1X2X3X4=1110,X5X6X7X8=1000X9X10X11X12=1011 由字符Y1的ASCII码1001001=49H知道,Y1即是“I”(由“D”的AS

27、CII码是1000100=44H推得)由字符Y2的ASCII码0110111=37H知道,Y2即是“7”(由“3”的ASCII码是0110011=33H推得)假如你能记住“0”的ASCII码是0110000=30H;“A”的ASCII码是1000001=41H,则解起来就更方便了,2023/6/21,42,2.1 数制与编码 2.1.5 数据校验码-海明校验码这是由Richard Hamming于1950年提出的、目前还被广泛采用在网络传输等领域。实现原理:在有效信息位中加入几个校验位形成海明码,使码距比较均匀的拉大,并把数据的每一个二进制位分配在几个奇偶校验组中。当某一位出错后,就会引起有关

28、的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了依据。,2023/6/21,43,2.1 数制与编码 2.1.5 数据校验码-海明校验码假设校验位的个数为r,则它能表示2r个信息,用其中的一个信息指出“没有错误”,其余的2r-1个信息指出错误发生在哪一位。然而错误也可能发生在校验位,因此只有k=2r-1-r个信息能用于纠正被传送数据的位数,也就是说要满足关系。2rk+r+1(2.10)如要能检测与自动校正一位错,并发现两位错,则应在前一条件下再增加1位总校验位,此时校验位的位数r和数据位的位数k应满足下述关系:2r-1k+r(2.11)。,2023/6/21

29、,44,2.1 数制与编码 2.1.5 数据校验码-海明校验码可计算出数据位k与校验位r的对应关系,如表2.7所示。,2023/6/21,45,2.1 数制与编码 2.1.5 数据校验码-海明校验码海明码的编码规律:数据位k位,校验位r位,假设海明码的最高位号为m,最低位号为1,即HmHm-1H2H1(1)校验位与数据位之和为m,每个校验位Pi在海明码中被分在位号2i-1的位置,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。(2)海明码的每一位码Hi(包括数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。以便校验的结果能正确反映出

30、出错位的位号。,2023/6/21,46,2.1 数制与编码 2.1.5 数据校验码-海明校验码例如:校验位r=5,用P1-P5表示,数据位k=8,用D1-D8表示,5个校验位P5P1对应的海明码位号应分别为H13,H8,H4,H2和H1。P5只能放在H13一位上,它已经是海明码的最高位了,其他4位满足Pi的位号等于2i-1的关系。其余为数据位Di,则有如下排列关系:P5D8D7D6D5P4D4D3D2P3D1P2P1 按照海明码的编码规律,每个海明码的位号要等于参与检验它的几个检验位的位号之和的关系,可以给出如表2.8所示的结果,2023/6/21,47,表2.8 出错的海明码位号和校验位位

31、号的关系,2023/6/21,48,2.1 数制与编码 2.1.5 数据校验码-海明校验码由有关数据位形成Pi值的偶校验的结果:P1=D1 D2 D4 D5 D7 P2=D1 D3 D4 D6 D7 P3=D2 D3 D4 D8 P4=D5 D6 D7 D8若要分清是两位出错还是一位出错,还要补充一位P5总校验位 P5=D1 D2 D3 D4 D5 D6 D7 D8 P4 P3 P2 P1 每一位数据位,都至少出现在3个Pi值的形成关系中。当任一位数据码发生变化时,必将引起3个或4个Pi值跟着变化,该海明码的码距为4。,2023/6/21,49,2.1 数制与编码 2.1.5 数据校验码-海明

32、校验码按如下关系对所得到的海明码实现偶校验:S1=P1 D1 D2 D4 D5 D7 S2=P2 D1 D3 D4 D6 D7 S3=P3 D2 D3 D4 D8 S4=P4 D5 D6 D7 D8 S5=P5 P4 P3 P2 P1 D1 D2 D3 D4 D5 D6 D7 D8校验得到的结果值S5 S1能反应13位海明码的出错情况任何奇数个数出错,S5一定为1任何偶数个数出错,S5一定为0图3.11是H=12,数据位k=8,校验位r=4的海明校验线路,记作(12,8)分组码。,2023/6/21,50,2.1 数制与编码 2.1.5 数据校验码-海明校验码图2.3是H=12,数据位k=8,

33、校验位r=4的海明校验线路,记作(12,8)分组码。图中,H12,H11,H1是被校验码,D8,D7,D1是纠正后的数据,S4,S3,S2,S1是用奇偶形成线路得到的。若S4 S1全0,说明代码无错;若为1100或1011,则分别表示H12 或 H11有错,通过相关译码线经异或电路纠正该位。,2023/6/21,51,2.1 数制与编码 2.1.5 数据校验码-海明校验码,图2.3(12,8)分组码海明校验线路,2023/6/21,52,2.1 数制与编码 2.1.5 数据校验码-海明校验码假如要进一步判别是1位错还是2位错,则再增加一个校验位。并用图2.4来取代图2.3虚框中的内容,此时增加

34、了一个奇偶形成线路S5。如为一位错,仍按图2.3来纠正数据位;如为两位错,则无法纠正错误。,图2.4 判1位/2位错的附加线路,2023/6/21,53,2.1 数制与编码 2.1.5 数据校验码-循环冗余校验码CRC(cyclic redundancy check)码可以发现并纠正信息存储或传送过程中连续出现的多位错误,在磁介质存储和计算机之间通信方面得到广泛应用;在数据存储和数据通讯领域,CRC应用广泛:著名通讯协议X.25的FCS(帧检错序列)采用CRC.CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都

35、用CRC作为检错手段。欧洲交换机都使用CRC4。,2023/6/21,54,2.1 数制与编码 2.1.5 数据校验码-循环冗余校验码CRC码是基于模2运算而建立编码规律的校验码;模2运算特点:运算不考虑进位和借位,规则如下:模2加和模2减规则相同,按位异或,相同得0,不同得1。即:00=0,01=1,10=1,11=0。模2乘时按模2加求部分积之和。模2除是按模2减求部分余数。每求一位商应使部分余数减少一位。上商规则是:当部分余数的首位为1时,商取1,当部分余数的首位为0时,商取0;当部分余数的位数小于除数位数时,该余数即为最后余数。,2023/6/21,55,2.1 数制与编码 2.1.5

36、 数据校验码-循环冗余校验码模2乘例子:模2除例子:,2023/6/21,56,2.1 数制与编码 2.1.5 数据校验码-循环冗余校验码CRC码基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式;CRC码的关键是如何从K位信息位简便地得到r位校验位(编码),及如何从K+R位信息码判断是否出错。,2023/6/21,57,2.1 数制与编码 2.1.5 数据校验码-循环冗余校验码CRC码的编

37、码方法:将待编码的k位有效信息位组表达为多项式M(x):M(x)=Ck-1xk-1+Ck-2xk-2+Cixi+C1x+C0将信息位组左移r位,则可表示为多项式M(x)xr。可空出r位,以便拼接r位校验位。CRC码用多项式M(x)xr除以G(x)(生成多项式)所得余数作为校验位。为了得到r位余数(校验位),G(x)必须是r+1位。设所得余数表达为R(x),商为Q(x)。将余数拼接在信息位组左移空出的r位上,构成有效信息的CRC码。多项式表达为: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),2023/6/21,58,2.1

38、数制与编码 2.1.5 数据校验码-循环冗余校验码CRC码的编码方法:因此所得CRC码可被G(x)表示的数码除尽。如果CRC码在传输过程中不出错,其余数必为0;如果传输过程中出错,则余数不为0,由余数指出哪一位出错,即可纠正。,2023/6/21,59,2.1 数制与编码 2.1.5 数据校验码-循环冗余校验码【例2.4】已知有效信息为011,试用生成多项式为G(x)=10111将其编码。解:有效信息M(x)=011=x+1,n=3由G(x)=10111=x4+x2+x+1 得k+1=5,k=4将有效信息左移4位后再被G(x)模2除,即M(x)x4=x5+x4对应的代码为0110000,用G(

39、x)的二进制编码10111来除,如下:所以,M(x)x4+R(x)=0110000+1001=0111001为CRC码。总信息位为7位,有效信息位为3位,上述0111001码称(7,3)码,2023/6/21,60,2.1 数制与编码 2.1.5 数据校验码-循环冗余校验码【课堂练习】对4位有效信息(1100)求循环校验编码,选择生成多项式(1011)。解:M(x)=x3+x2=1100(k=4)M(x)x3=x6+x5=1100000(左移r=3位)G(x)=x3+x+1=1011(r+1=4位)M(x)x3/G(x)=1100000/1011=1110+010/1011(模2除)M(x)x

40、3+R(x)=1100000+010=1100010(模2加)将编好的循环校验码称为(7,4)码,即n=7,k=4。,练习:假设使用的生成多项式是G(x)=x3+x+1。4位的原始报文为1010,求编码后的报文。(答案 A:1010011),2023/6/21,61,2.1 数制与编码 2.1.5 数据校验码-循环冗余校验码CRC码的译码与纠错:将收到的循环冗余码用生成多项式G(X)去除。若无错,则余数为0;若某位出错,余数不为0。不同出错位余数不同。表 2.9为(7,3)码对应G(X)=10111的出错模式。,2023/6/21,62,2.1 数制与编码 2.1.5 数据校验码-循环冗余校验

41、码从表 2.9可以看出,更换不同的待测码字,余数和出错位的对应关系不变,只与码制和生成多项式有关。余数的不同,可以确定出错位数。例如,CRC码字0111001在传输过程中若无差错,接收端用G(X)=10111去除,余数为0;如果在传输过程中有差错,在接收端变成了0111000,用G(X)=10111去除,余数不为0,等于0001,查表 2.9就可找出出错位为A7。,2023/6/21,63,2.1 数制与编码 2.1.5 数据校验码-循环冗余校验码如果循环码有一位出错,被G(x)模2除将得到一个不为0的余数。如果余数补0继续除下去,将发现各次所得余数将按表 2.9顺序循环。例如,第7位出错,余

42、数为0001,补0后继续模2除,第二次余数为0010,以后依次为0100,1000.反复循环,这就是“循环码”名称的由来。该特点便于对纠错电路的设计。即当出现不为零的余数后,一方面余数补0继续操作,另一方面将被检测的校验码字循环左移。,2023/6/21,64,2.1 数制与编码 2.1.5 数据校验码-循环冗余校验码由表2.9可知,当出现余数为1011时,出错位为A1,取反纠正A1,然后继续循环左移7次,即得到一个经过纠正的CRC码。需要指出的是,并不是任何一个(k+1)位多项式都可以作为生成多项式。从检错和纠错的要求出发,生成多项式应满足以下要求:任何一位发生错误,都应该使余数不为零。不同

43、位发生错误应使余数不同。对余数继续做模2除,应使余数循环,2023/6/21,65,2.1 数制与编码 2.1.5 数据校验码-循环冗余校验码常用生成多项式:名称 生成多项式 标准引用 CRC-4 x4+x+1 ITU G.704(国际电信联盟)CRC-4 x4+x2+x+1 CRC-8 x8+x5+x4+1 CRC-8 x8+x2+x1+1 CRC-8 x8+x6+x4+x3+x2+x1 CRC-12 x12+x11+x3+x+1 CRC-16 x16+x15+x2+1 IBM SDLC CRC16-CCITT x16+x12+x5+1 ISO HDLC,ITU X.25,V.34/V.41

44、/V.42,PPP-FCS CRC-32 x32+x26+x23+.+x2+x+1 DB7 ZIP,RAR,IEEE 802 LAN/FDDI,IEEE 1394,PPP-FCS,2023/6/21,66,2.2 定点数的表示和运算 定点数的表示 计算机进行算术运算时,需要指出小数点的位置。在计算机中根据小数点的位置是否固定可以分为定点数和浮点数两种数据格式。在定点数中小数点的位置固定不变。通常,把小数点固定在数位的最前面或末尾,所以定点数可以分为定点小数和定点整数两类。根据符号的有无,定点数又分为无符号数和有符号数两类。,2023/6/21,67,2.2 定点数的表示和运算 定点数的表示无符

45、号数:没有符号的数,数值的每一位均用来存放数值。有符号数:带有符号的数,存储时需留出位置存放符号。在机器字长相同时,无符号数与有符号数所对应的数值范围是不同。以机器字长为16位为例,无符号数的表示范围为065535,而有符号数的表示范围为-32768+32767(用补码表示)。,2023/6/21,68,2.2 定点数的表示和运算 定点数的表示有符号数的表示:在计算机中,常采用机器数来表示数据。常用的有原码、反码、补码、移码等。(1)原码表示法:是一种比较直观的表示方法,其符号位表示该数的符号,“+”用“0”表示,“-”用“1”表示,而数值部分仍保留着其真值的特征。,2023/6/21,69,

46、2.2 定点数的表示和运算 定点数的表示(1)原码表示法:定点小数的原码形式为x0.x1x2xn,原码定义是:,式中x是真值【例2.5】x=+0.1001,则x原=0.1001 x=-0.1001,则x原=1-(-0.1001)=1+0.1001=1.1001,2023/6/21,70,2.2 定点数的表示和运算 定点数的表示(1)原码表示法:定点整数的原码形式为x0 x1x2xn,原码定义是:,式中x是真值,n是整数位数【例2.6】x=+1001,则x原=01001 x=-1001,则x原=24-(-1001)=24+1001=11001,2023/6/21,71,2.2 定点数的表示和运算

47、 定点数的表示(1)原码表示法:原码表示法有两个特点:(1)零的表示有“+0”和“-0”之分,故有两种形式:+0原=0.000;-0原=1.000(2)符号位 x0的取值由下式决定:其中x是真值。,2023/6/21,72,2.2 定点数的表示和运算 定点数的表示(1)原码表示法:原码表示法的优点:比较直观、简单易懂;最大缺点:加减法运算复杂。例如,当两数相加时,先要判别两数的符号,如果两数是同号,则相加;两数是异号,则相减。而进行减法运算又要先比较两数绝对值的大小,再用大绝对值减去小绝对值,最后还要确定运算结果的正负号。符号位不能直接参与运算!后面介绍的补码可解决原码的缺点。,2023/6/

48、21,73,2.2 定点数的表示和运算 定点数的表示(2)补码表示法:定点小数的补码形式为x0.x1x2xn,则补码定义:,【例2.7】x=+0.1001,则x补=0.1001 x=-0.1001,则x补=10.0000+(-0.1001)=1.0111 x=0,则+0.0000补=0.0000-0.0000补=2+(-0.0000)=10.00000-0.0000=0.0000,式中x是真值,补码中的“零”只有一种表示形式,2023/6/21,74,2.2 定点数的表示和运算 定点数的表示(2)补码表示法:对于小数,若x=-1,则根据小数补码定义,有 x补=2+X=10.0000-1.000

49、0=1.0000。可见,-1本不属于小数范围,但却有-1补存在.这是由于补码中的零只有一种表示形式,故它比 原码能多表示一个“-1”,2023/6/21,75,2.2 定点数的表示和运算 定点数的表示(2)补码表示法:定点整数x0 x1x2xn,则补码定义:,【例2.8】x=+1001,则x补01001 x=-1001,则 x补25+(-1001)100000-1001=10111,式中x是真值,n是整数位数,2023/6/21,76,2.2 定点数的表示和运算 定点数的表示(2)补码表示法:补码表示法进行减法运算要比采用原码形式简单。对于补码来说,无论是正数还是负数,机器总是做加法运算。根据

50、补码定义,求负数的补码时要做一次减法运算。从下面介绍的反码表示法中可以获得求负数补码的简便方法,解决负数的求补问题。,2023/6/21,77,2.2 定点数的表示和运算 定点数的表示(3)反码表示法:反码表示法中,符号的表示法与原码相同。正数的反码与正数的原码形式相同;负数的反码符号位为1,数值部分通过将负数原码的数值部分各位取反(0变1,1变0)得到。,2023/6/21,78,2.2 定点数的表示和运算 定点数的表示(3)反码表示法:定点小数的反码形式为x0.x1x2xn,反码定义是:,式中x是真值,n是小数位数,【例2.9】x=+0.0110,x反=0.0110 x=-0.0110,x

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号