计算机组成原理徐福培,徐福培计算机组成原理(第2章).ppt

《徐福培计算机组成原理(第2章).ppt》由会员分享,可在线阅读,更多相关《徐福培计算机组成原理(第2章).ppt(80页珍藏版)》请在装配图网上搜索。

1、第2章 数据的表示,本章学习导读: (1)计算机中如何来表示数据,包括数值数据和非数值数据。 (2)数值数据的编码表示:包括数制,原码、反码、补码,以及定点与浮点数。 (3)非数值数据(文字、图形、图像、声音、视频)的简单表示法。,本章讨论在计算机内部各类基本数据 的表示方法及其相互间的等值转换。,21 数据、信息和媒体,数据是对事实、概念或指令的一种特殊表达形式,这种特殊的表达形式可以用人工的方式或者用自动化的装置进行通信、翻译转换或者进行加工处理 。,在计算机系统中所指的数据均是以二进制编码形式出现的。,计算机内部由硬件实现的基本数据区分为数值型数据和非数值型数据。,2.1.1 数据,信息。

2、是对人有用的数据,这些数据可能影响到人们的行为和决策。,媒体又称媒介、媒质,是指承载信息的载体。,2.1.2 信息,计算机信息处理,实质上就是由计算机进行数据处理的过程。,信息是对数据的解释,数据是信息的载体。,2.1.3 媒体,与计算机信息处理有关的媒体有5种:,感觉媒体 表示媒体 存储媒体 表现媒体 传输媒体,图 2.1 计算机外部信息与内部数据的转换,22 数字化信息编码,所谓编码,就是用少量简单的基本符号,对 大量复杂多样的信息进行一定规律的组合。,在计算机系统中,凡是要进行处理(包括计算、查找、排序、分类、统计、合并等)、存储和传输的信息,都是用二进制进行编码的。,计算机内部采用二进。

3、制表示的原因: 1)二进制只有两种状态,在数字电路中很容易实现。 2)二进制编码、运算规则非常简单。 3)二进制的“0”、“1”与二值逻辑一致,很容易实现 逻辑运算。,2.3 数值数据的编码表示,数值数据是表示数量多少和数值大小的数据。,在计算机内部,数值数据的表示方法有两大类:第一 种是直接用二进制数表示;另一种是采用二进制编码的 十进制数(Binary Coded Decimal Number,简称BCD) 表示。,表示一个数值数据要确定三个要素:进位计数制、 定浮点表示和数的编码表示。,2.3.1 进位计数制及其各进位制数之间的转换,在某个数字系统中,若采用R个基本符号(0,1, 2,R。

4、-1)表示各位上的数字,则称其为基R 数制,或称R进制数字系统,R被称为该数字系统的基, 采用“逢R进一”的运算规则,对于每一个数位i,其该 位上的权为R i。,在计算机系统中,常用的几种进位计数制 有下列几种: 二进制 R=2, 基本符号为 0和1 八进制 R=8, 基本符号为 0,1,2,3,4,5,6,7 十六进制 R=16, 基本符号为 0,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,例:十进制数2585.62代表的实际值是 2x103+5x102+8x101+5x100+6x10-1+2x10-。

5、2,例:二进制数(100101.01)2代表的实际值是: (100101.01)2 = 1x25 + 0 x24+ 0 x23 + 1x22 + 0 x21 + 1x20+ 0 x2-1 + 1x2-2=(37.25)10,1.R进制数转换成十进制数,任何一个R进制数转换成十进制数时,只要 “按权展开”即可。,例1 二进制数转换成十进制数。 (10101.01)2=(124+023+122+021+120+ 0 2-1+12-2)10=(21.25)10,例2 八进制数转换成十进制数。 (307.6)8=(382+780+68-1) 10=(199.75) 10,例3 十六进制数转换成十进制数。

6、。 (3A.C)=(3161+10160+1216-1) 10 =(58.75) 10,2. 十进制数转换成R进制数,任何一个十进制数转换成R进制数时,要将 整数和小数部分分别进行转换。,(1)整数部分的转换 整数部分的转换方法是“除基取余,上右下左”。,例1 将十进制整数835分别转换成二、八进制数。,0,余数 低位,3,0,5,1,(835) 10=(1503) 8,高位,(835) 10=(1101000011) 2,(2)小数部分的转换,小数部分的转换方法是 “乘基取整,上左下右”。,例2 将十进制小数0.6875分别转换成二、八进制数。,0.68752=1.375 1,整数部分,0.。

7、3752=0.75 0,0.752=1.5 1,0.52=1.0 1,(0.6875) 10=(0.1011) 2,整数部分,0.68758=5.5 5,0.58=4.0 4,(0.6875) 10=(0.54) 8,例3 将十进制小数0.63转换成二进制数。,整数部分,0.632=1.26 1,0.262=0.52 0,0.522=1.04 1,0.042=0.08 0,(0.63) 10=(0.1010) 2 (近似值),(3)含整数、小数部分的数的转换,只要将整数、小数部分分别进行转换,得 到转换后的整数和小数部分,然后再这两 部分组合起来得到一个完整的数。,例 4 将十进制数835.6。

8、875转换成二、八进制数。 (835.6875) 10=(1101000011.1011) 2=(1503.54) 8,3. 二、八、十六进制数的相互转换,(1)八进制数转换成二进制数,例1 将(13.724) 8转换成二进制数 (13.724) 8=( 001 011 . 111 010 100 )2 =(1011.1110101) 2,(2)十六进制数转换成二进制数,例2 将十六进制数2B.5E转换成二进制数 (2B.5E)16 = ( 0010 1011 . 0101 1110 ) 2 = (101011.0101111) 2,(3)二进制数转换成八进制数,(10011.01) 2 = 。

9、( 010 011 . 010 ) 2 = (23.2) 8,(4)二进制数转换成十六进制数,(11001.11) 2 = ( 0001 1001 . 1100 ) 2 = ( 19.C ) 16,2.3.2 定点与浮点表示,1定点表示,所谓定点表示是约定计算机中所有数据的小数点 位置是固定不变的。该位置在计算机设计时已被隐含地 规定,因此勿需再用任何硬件设备状态来明显表示小数点。,利用定点表示进行计算,须将所有数据之 值按一定比例予以缩小(或放大)后送入 计算机,同时须将计算结果以同一比例增 大(或缩小)后才能得正确结果值。,由于采用定点数表示数的范围较小,因此运算很容易 产生溢出,另外选择。

10、适当的比例因子有时也很困难。,2浮点表示,在计算机中所表示的数,其小数点位置是可变的,这 种数称为浮点数。,对于任意一个二进制数X,可以表示成 如下形式: X= MRE 其中:M为尾数,常用定点纯小数表示;E为阶,一般 用定点整数表示;R为基数,隐含为2,也可以为2q, q可取2,3,4等正整数。,浮点表示法的最大特点是它可以表示 很大的数据范围以及较高的数据精度。,2.3.3 编码系统,确定一个数值数据的三要素是:进位计数制、 定点/浮点表示和编码表示。它们分别用来解决数值 数据的基本表示符号、小数点位置和数的正负号表示。,符号数字化:0表示正号,1表示负号。,机器数:数值数据在计算机内部编。

11、码表示的数。 真值:机器数真正的值(即:原来带有正负号的数)。,机器数X的真值为: XT = X1Xn2X1X0 (当X为定点整数时) XT = 0 . X1X 2X(n 1)X n (当X为定点小数时) 数字化编码后的机器数X表示为: X = Xn X n -1 X n -2 X 1 X 0,常用的编码表示方式有三种:原码、补码和反码。 对于这三种编码:正数的所有编码表示都是相同的。 其结果总是:符号位取值为0,数值部分保持不变。 负数的所有编码表示,其符号位总是为1,而数值 部分对于不同的编码则有不同的取值。,1原码表示法,原码表示的机器数由符号位后直接跟上 真值的数值构成。,定点整数:,。

12、例: +1101原=01101 -1101原=11101,原码表示的优点是与真值的对应关系直观、方便, 因此与真值的转换简单,并且用原码实现乘除运算 比较简便,但其加/减法运算规则复杂。,2补码表示法,(1) 模运算,“对一个多于n位的数丢弃高位而保留低n位数” 这样一种处理,实际上等价于“将这个多于n位的数去 除以2n,然后丢去商保留其余数”的操作。这样一种操 作运算就是“模运算”。,在模运算中,若A,B,M满足下列关系:A=B+KM (K为整数), 则记为: AB(mod M)。 即:A、B各除以M后的余数相同,故称B和为模同 余。,假定现在钟表时针指向10点,要将它拨向 点,则有两种拨法。

13、:, 倒拨4格:10-4=6 顺拨8格:10+8186(mod 12),所以在模12系统中:10-410+8(mod 12) 即: -48 (mod 12) 我们称8是-4对模12的补码。同样有 -39(mod 12);-57(mod 12)等等。,结论: “对于某一确定的模,某数减去小于模的另一 数,总可以用该数加上模与另一数绝对值之差来代替”。 因此,补码可以用加法实现减法运算。,例1“钟表”模运算系统 10-410+(12-4) 10+86 (mod 12),例2“4位十进制数” 模运算系统(相当于只 有四档的算盘) 9828-19289828+(104-1928) 9828+8072 。

14、7900 (mod 104),(2)补码的定义,定点整数:,补码0的表示是唯一的: +0补=0 0.0 -0补= 2 n -0=1 00.0=0 0.0 (mod 2 n),对于整数补码有:-1补= 2 n 1=11.1 (n个1) 对于小数补码有:-1补=2-1=1.00.0 (n-1个0),例设补码的位数为6,求负数-0.10110 的补码表示。 -0.10110补=2-0.10110 =10.00000-0.10110 =1.01010,求负数补码的简单方法:“符号位固定为1,其余各位 由真值中相应各位取反后,末尾加1所得。”,由补码求真值的简便方法:“若符号位为1,则真值的符 号为负,。

15、其数值部分的各位由补码中相应各位取反后, 末尾加1所得。”,求一个补码“取负”后的补码表示方法: “只要对该已知补码各位取反,末尾加1即可。”,由x求 x的方法:将xn的符号位和数值位 一起向右移动一位,符号位移走后还保持原来的值不变。,例1已知:XT =-0.1011010,求XT补 。 XT补=1. 0100101+0. 0000001 =1. 0100110,例2已知:XT补 = 1 011010,求XT 。 XT = -100101+1= -100110,例3已知:XT补=1 011010,求-XT补 -XT补=0 100101+1=0 100110,例4.设x补=1.0101000,。

16、则,补=1.1010100,补=1.1110101,补=1.1101010,(3)变形补码,为了便于判断运算结果是否溢出,某些计算机 中还采用了一种双符号位的补码表示方式,称为变形补码。,例:设x=0.11010,y=-0.11010,则 x补=0.11010;y补=1.00110 x变补=00.11010;y变补=11.00110,当进行运算时,结果的变形补码最左边两位为“01” 或“10”时,则表示发生溢出。“01”为正溢出,“10” 为负溢出。,3. 反码表示法,负数反码的定义就是在相应的补码表示中 再末尾减1。,正数的反码和原码、补码相同,负数的反码定义如下: 定点负整数:X T反=(。

17、2 n 1)- |XT| (-2 n-1 XT0,mod 2n-1) 定点负小数:XT补=(2-2 (n-1) )- |XT| (-1XT0,mod 2-2 (n-1)),反码表示的零有两种: +0反=0 0.0 -0反=1 1.1,对反码而言,模数不是2而是(2-2 (n-1) ) , 这意味着若运算中如果最高位有进位,就 必须把它加到末位上去。这叫“循环进位”。,例:设a=+0.1011,b=-0.1001,试用反码计算(a+b)。,a反=0.1011,b反=1.0110,0.0010 正确结果,4.三种编码的比较,三种编码都是为了解决负数在机器中的 表示而提出的。对于正数,它们的符号 都。

18、是0,其数值部分都是真值的数值部分本身;而对 于负数,符号位均为“1”,数值位则各有不同的表示: 原码:同真值的数值位。 补码:真值的数值位各位取反,末位加1。 反码:真值的数值位各位取反。 由编码求真值,则是完全相反的过程。只要将符号位 “1”转换成“负号”即可。,(2) 原码和反码都有+0和-0两种零的表示,而补码可 唯一表示零。,(3) 补码和反码的符号位可作为数值的一部分 看待,可以和数值位一起参加运算。而原码的 符号位必须和代表绝对值的数值位分开处理。,(4) 原码和反码能表示的正数和负数的范围相对零来说是 对称的。补码的表示范围不对称,负数表示的范围较正数 宽,能多表示一个最小负数。

19、:-2n 或-1,(5) 各种编码采用不同的方法进行移位处理,对于带符号的定点数,应采用算术移位方式,也就是说 只对数值部分移位,而符号位不动。右移一位,意味着原 数缩小一倍,即移位后的结果为原数的1/2;左移一位, 意味着原数扩大一倍,即移位后的结果为原数的2倍。,各种编码的数值部分的移位规则如下: 原码 左移:高位移出,末位补0。移出非零时, 发生溢出。 右移:高位补0,低位移出。移出时进行舍入操作。 补码 左移:高位移出,末位补0。移出的位不同于符号位时 ,发生溢出。 右移:高位补符,低位移出。移出时进行舍入操作。 反码 左移:高位移出,末位补符。移出的位不同于符号位 时,发生溢出。 右。

20、移:高位补符,低位移出。移出时进行舍入操作。,(6) 各种编码采用不同的方法进行填充处理:,对于定点小数,填充处理在低位进行;而 对于定点整数,则在符号位后的数值高位进行。, 原码 定点小数:在原数的末位后面补足0。 定点整数:符号位不变,在原数的符号位后补足0。, 补码 定点小数:在原数的末位后面补足0。 定点整数:符号位不变,在原数的符号位后用数符 补足所需的位数。,2.3.4 无符号数的表示,当一个编码的所有二进位都用来表示数值时, 该编码表示的就是无符号数。,一般在全部是正数运算且不出现负值结果的场合下,可 以省略符号位,使用无符号数表示。,无符号整数 无符号小数,2.3.5 浮点数的。

21、编码表示,1编码表示,用浮点数表示一个数值数据时,实际上是用 两个定点数来表示的。一个定点小数用来表示 浮点数的尾数,一个定点整数用来表示浮点数的阶。,一般浮点数的阶都是用一种称之为“移码”的编码方 式表示的。 对每个阶都加上一个正的常数(称为偏置常数), 使所有阶都转化为正整数,这就是阶的移码表示。,移码的定义如下: 设E为阶,所取移码位数为n,则: E移=2n-1+E (2n-1为偏置常数),注:1)假定:-2n-1E2n-1-1, 则0E移2n-1, 即:移码表示总是大于0。因而可将移码看成 无符号数。 2)移码“0”的真值为-2n-1。即:-2 n-1移=000 3)零的移码表示是唯一。

22、的。即:+0 移=-0 移 =2 n-1=100 (n-1个0) 4)若将移码第一位看成是符号位,则移码和补码 仅符号位不同。,为了在浮点数运算过程中,尽可能多地保留 有效数字的位数,使有效数字尽量占满尾数 数位,必须在运算过程中经常对浮点数进行 “规格化”操作。,一般机器规定,若基为2并用补码表示尾数,则规格 化数的标志为:“尾数的符号位和数值部分最高位具 有不同的代码”。,规格化操作有两种:“左规”和“右规”。,若采用变形补码表示尾数,则当结果的尾数出现 11.1xx.x或00.0 xx.x的形式时,需将尾数左移, 阶减1,直到尾数为规格化数形式为止。这个过程称 为“左规”,当浮点运算结果。

23、的尾数出现01.xx.x或 10.xx.x的形式时,并不一定溢出,应 先将它右移1位,阶码加1,然后再判断阶 是否溢出,这个过程称为“右规”。,例1将十进制数65798 转换为下述IBM370的短浮点数 格式(32位)。 IBM370的短浮点数格式说明如下: 0 1 7 8 31,数符 阶码 尾数,0位:数符S 1-7位:7位移码表示的阶码E(偏置常数=64) 8-31位:6位16进制原码小数表示的尾数M (尾数之基R=16,所以阶码变化等于尾数移动位), (65798)10 = (10106)16= (0.101060)16x165 数符S=0, 阶码E=(64+5)10=(69)10 =(。

24、1000101)2 浮点数形式表示为: 0 1000101 0001 0000 0001 0000 0110 0000,例2将十进制数65798 转换为下述典型的32位浮点数 格式。 0 1 8 9 31,数符 阶码 尾数,0位:数的符号 1-8位:8位移码表示的阶码(偏置常数为128),9-31位:24位二进制原码小数表示的尾数。 规格化尾数的第一位总是1,故 不保存。即虽只有23位,但可 表示24位数据。, (65798)10 = (10106)16= (1 0000 0001 0000 011)2 = (0.1000 0000 1000 0011)2 216 数符S=0, 阶码E=(12。

25、8+16)10=(144)10=(10010000)2 故用该浮点数形式表示为:,0 10010000 0000 0000 1000 0011 0000 0000,图2.3 浮点数的密度,定点数分布是等距且紧密的,而浮点数分布 是不等距且稀疏的,越远离原点越稀疏。 在浮点数总位数不变的情况下,其阶码位数 越多,则尾数位数(有效位数)越少。,单精度和双精度两种浮点数格式。,2IEEE754浮点数标准,图2.4 IEEE754浮点数格式,2.3.6 十进制数的二进制编码表示 BCD码(Binary Coded Decimal),十进制有权码 十进制有权码是指表示每个十进制数位 的四个二进制数位(称。

26、为基2码)都有一个确定的权。,2. 十进制无权码,十进制无权码是指表示每个十进制数位 的四个基2码没有确定的权。,0 0000 0000 0000 0000 0000 1 0001 0001 0001 0111 0001 2 0010 0010 0011 0110 0011 3 0011 0011 0101 0101 0100 4 0100 0100 0111 0100 1000 5 0101 1011 1000 1011 0111 6 0110 1100 1010 1010 1011 7 0111 1101 1100 1001 1100 8 1000 1110 1110 1000 1110 。

27、9 1001 1111 1111 1111 1111,十进制数 8421码 2421码5211码 84-2-1码 4311码,表2.5 四位有权码,表2.6 四位无权码 十进制数 余3码 格雷码(1) 格雷码(2) 0 0011 0000 0000 1 0100 0001 0100 2 0101 0011 0110 3 0110 0010 0010 4 0111 0110 1010 5 1000 1110 1011 6 1001 1010 0011 7 1010 1000 0001 8 1011 1100 1001 9 1100 0100 1000,2.4 非数值数据的编码表示,2.4.1 逻。

28、辑数据,将一个n位数据看成是由n个1位项组成, 每项取值为0或1。当数据以这种方式看待时,就被认 为是逻辑数据。,n位二进制数可表示n个逻辑数据,逻辑数据只能参加 逻辑运算,按位进行,如按位“与”、按位“或”、逻辑 左移、逻辑右移等。,逻辑数据和数值数据在形式上无任何差异,都是一串 0/1序列,因此机器本身不能识别是逻辑数据还是数 值数据,是靠指令的操作码类型来识别的。,2.4.2 西文字符,西文是由拉丁字母、数字、标点符号及一些 特殊符号所组成的,它们统称为“字符”(character)。 所有字符的集合叫做“字符集”。,字符不能直接在计算机内部进行处理,因而也必须对 其进行数字化编码,字符。

29、集中每一个字符都有一个代 码(二进制编码的0/1序列),这些代码具有唯一性,互 相区别,构成了该字符集的代码表,简称码表。,ASCII码,即美国标准信息交换码(American Standard Cord for Information Interchange) EBCDIC码(Extended Binary Coded Decimal Interchange Code),2.4.3 汉字字符,汉字系统必须处理以下几种汉字代码: 输入码内码字模点阵码。,1汉字的输入码 对每个汉字用相应的按键进行的编码表示就称为汉字 的“输入码”,又称外码。,汉字输入编码方法大体分成四类: (1)数字编码:用一。

30、串数字来表示汉字的编码。 (2)字音编码:基于汉语拼音的编码。 (3)字形编码:将汉字的字形分解归类而给出的编码。 (4)形音编码:将汉字读音和形状结合起来考虑的编码。,2.字符集与汉字内码,对于汉字内码的选择,我们必须考虑以下 几个因素: (1)不能有二义性,即不能和ASCII码有相同的编码。 (2)要与汉字在字库中的位置有关系,以便于汉字 的处理、查找。 (3)编码应尽量短。,国标码 :信息交换用汉字编码字符集基本集 (GB231280)。,3汉字的字模点阵码和轮廓描述,一套汉字(例如GB2312国标汉字字符集)的 所有字符的形状描述信息集合在一起称为字形信息库, 简称字库(font)。,。

31、汉字的字形主要有两种描述的方法:字模点阵描述和 轮廓描述。 两类国际标准:Adobe Type1和True Type。,2.4.4 多媒体信息,1. 图的编码表示,计算机内部有两种表示方式:一种称为“图象”(image) 方式,另一种称为“图形”(graphics)方式。,2.声音的编码表示,计算机处理的声音可以分为以下三种: 语音,即人的说话声; 音乐,即各种乐器演奏出的声音; 效果声,如掌声、打雷、爆炸等声音。,在计算机内部可以用波形法和合成法两种方法来表示 声音。所有的声音都可用波形法来表示,但是,一般 对于语音和效果声,大多采用波形法来表示;而对于 音乐声,则用合成法来表示;有些效果声。

32、也可用合成 法来表示。,计算机要能够对声音进行处理,必须将声波 波形转换成二进制表示形式,这个转换过程 称为声音的“数字化编码”。,声音的数字化编码过程分为三步: (1)首先以固定的时间间隔对声音波形进行采样,使 连续的声音波形变成一个个离散的采样信号(即: 样本值),每秒钟采样的次数被称为采样频率。,(2)对得到的每个样本值进行模数转换(称为A/D转 换),将每个样本值用一个二进制数字量来表示。 这个过程即是所谓的量化处理。,(3)最后对产生的二进制数据进行编码(有时还需进行 数据压缩),以按照规定的统一格式进行表示。,表2.8 几种不同参数的数字化声音信息,声音的另一种表示方法是合成法,它。

33、主要适用 于音乐在计算机内部的表示。它把音乐乐谱、 弹奏的乐器类型、击键力度等用符号进行记录。 目前广为采用的一种标准称为MIDI(Musical Instrument Digital Interface)。,与波形表示方法相比,采用合成法的MIDI表示,其数 据量要少得多(相差2-3个数量级),编辑修改也较容 易。但它主要适用于表现各种乐器所演奏的乐曲,不 能用来表示语音等其它声音。,为了处理上述两类数字声音信息,计算机内 都有一个相应的声音处理硬件(如:声卡), 它用来完成对各种声音输入设备输入的声音 进行数字化编码处理,并将处理后的数字波形声音还 原为模拟信号声音,经功率放大后输出。,3。

34、视频信息的编码表示,计算机通过在内部安装一个视频获取设备(如:视频 卡),将各类视频源(如:电视机、摄像机、VCD机或 放像机等)输入的视频信号进行相应的处理,转化为 计算机内部可以表示的二进制数字信息。,视频获取设备将视频信号转换为计算机内部表示的二 进制数字信息的过程被称为视频信息的 “数字化”。,视频信息的数字化过程比声音更复杂一些, 它是以一幅幅彩色画面为单位进行的。每幅 彩色画面有亮度(Y)和色差(U,V)三个 分量,对Y、U、V三个分量需分别进行采样和 量化,得到一幅数字图象。,数字视频信息的数据量非常大,必须对 数字视频信息再进行压缩编码处理。 在获取数字视频的同时就立即进行压缩。

35、 编码的处理,称为实时压缩。,25 二进制信息的计量单位,计算机内部任何信息都被表示成二进制数据形式。 “比特”(bit):比特是计算机中处理、存储、传输信 息的最小单位。 “字节”(byte):也称“位组”。一个字节等于8个比特。 “字”(word):不同的计算机,字的长度和组成不完 全相同,有2个字节组成,有的由4个、8个甚至16个 字节组成。,“字长”:是指数据通路的宽度。通俗地讲 可以认为用于单字运算的寄存器的宽度就 是字长。一般来讲,字长决定CPU内部总线 的宽度、运算器的位数、通用寄存器的宽度等。,存储二进制信息时的度量单位要比字节或字大得多, 经常使用的单位有: “千字节”(KB。

36、),1KB=210字节=1024B “兆字节”(MB),1MB=220字节=1024KB “千兆字节”(GB),1GB=230字节=1024MB “兆兆字节”(TB),1TB=240字节=1024GB,在描述计算机通信中的带宽时,度量单位为: “千字节”(KB),1KB=103字节=1000B “兆字节”(MB),1MB=106字节=1000KB “千兆字节”(GB),1GB=109字节=1000MB “兆兆字节”(TB),1TB=1012字节=1000GB,26 数据校验码,“冗余校验”:即除原数据信息外,还增加若干位编码, 这些新增的代码被称为校验位。,图2.6 数据校验过程示意图,“码字。

37、”:由若干位代码组成的一个字。 “距离”:将两个码字逐位比较,具有不同代码 的位的个数。 “码距”:各码字间的最小距离,例:“8421”编码中,2(0010)和3(0011)之间距离 为1,所以“8421”码制的码距为1,记作d=1。,在数据校验码中,一个码字是指数据位和校验位按照 某种规律排列得到的代码。 码距与检错、纠错能力的关系为: 如果码距d为奇数,则能发现d-1位错,或者能纠正 (d-1)/2位错。 如果码距d为偶数,则能发现d /2位错,并能纠正 (d /2-1)位错。,2.6.1 奇偶校验码,奇偶校验法的基本思想是通过在原数据信息中 增加一位奇校验位(或偶校验位),然后将原数据和。

38、 得到的奇(偶)校验位一起进行存取或传送,对存取 后或在传送的终部件得到的相应数据和奇(偶)校验 位,再进行一次编码,求出新的奇校验位(或偶校验 位),最后根据得到的这个新的校验位的值,确定是 否发生了错误。,第一步:在源部件求出奇(偶)校验位P。 若采用奇校验位,则P=bn-1bn-2 .b1b01。 若采用偶校验位,则P=bn-1bn-2 .b1b0。,第二步:在终部件求出奇(偶)校验位P。 若采用奇校验位,则 P= bn-1bn- 2.b1b01。 若采用偶校验位,则 P=bn-1bn-2 .b1b0。,第三步:计算最终的校验位P*,并根据其值判断有无 奇偶错。 假定P在终部件接受到的值。

39、为P,则采用异或操作P*= PP”,对P和P”进行下列比较,确定有无奇偶错: 若P*=1,则表示终部件接受的数据有奇数位错。 若P*=0,则表示终部件接受的数据正确或有偶数 个错。,任意两个码字之间至少有两位不同,所以 码距d=2。因而只能发现奇数位出错,不能 发现偶数位出错,而且也不能确定发生错误 的位置,因而不具有纠错能力。,奇偶校验法所用的开销小,它常被用于存储器读写检 查或按字节传输过程中的数据校验。 奇偶校验码用于校验一字节长的代码还是有效的 。,2.6.2 海明校验码 主要用于存储器中数据存取校验。 海明校验码实质上就是一种多重奇偶校验码。 故障字(syndrome word)。,。

40、1. 校验位的位数的确定,假定该数据的位数为n,校验位为k位,则 故障字的位数也为k位。n和k必须满足下列关系: 2K1+n+k, 即:2K-1n+k,2分组方式的确定 如果故障字各位全部是0,则表示没有发生错误。 如果故障字中有且仅有一位为1,则表示校验位 中有一位出错,不需要纠正。 如果故障字中多位为1,则表示有一个数据位出错,其 在码字中的出错位置由故障字的数值来确定。纠正时 只要将出错位取反即可。,假定一个8位数据M= M8M7M6M5M4M3M2M1,其相应的4位校 验位为P=P4P3P2P1。码字的排列为: M8M7M6M5P4M4M3M2P3M1P2P1,表2.11 故障字和出错。

41、情况的对应关系,3校验位的生成和检错、纠错,假定采用偶校验(即取校验位Pi,使对应组中 有偶数个1),则得到校验位与数据位之间存在 如下关系: P1 = M1M2M4M5M7 P2 = M1M3M4M6M7 P3 = M2M3M4M8 P4 = M5M6M7M8,例:假定一个8位数据M为: M8M7M6M5M4M3M2M1= 01101010,根据上述公式求出相 应的校验位为:,P1 = M1M2M4M5M7 =01101=1 P2 = M1M3M4M6M7 =00111=1 P3 = M2M3M4M8=1010=0 P4 = M5M6M7M8=0110=0,数据位M=M=01101010,校。

42、验位P=P=0011,即: 所有位都无错。这种情况下,因为M=M,所以P= P, 因此S = PP=PP=0000。,(2) 数据位M= 01111010,校验位P=P=0011,即: 数据位第5位(M5)错。 这种情况下,对M生成新的校验位P为: P1= M1M2M4M5M7=01111=0 P2 = M1M3M4M6M7 =00111=1,P3= M2M3M4M8=1010=0 P4 = M5M6M7M8=1110=1 故障字S为: S1= P1 P1= 01=1 S2= P2 P2=11=0 S3= P3 P3=00=0 S4= P4 P4=10=1,(3) 数据位M=M=0110101。

43、0,校验位P= 1011,即: 校验位第4位(P4)错。 这种情况下,因为M=M,所以P= P,因此故障位S为: S1= P1 P1= 11=0 S2= P2 P2=11=0,S3= P3 P3=00=0 S4= P4 P4=01=1 对单个位出错进行定位和纠错。这种码 称为单纠错码(SEC)。,2.6.3 循环冗余校验码 循环冗余校验码(Cyclic Redundancy Check), 简称CRC码。通过某种数学运算来建立数据和校验位 之间的约定关系。 循环冗余校验码常用于外存储器的数据校验以及计算 机通信中。,1. CRC码的检错方法,假设要进行校验的数据信息M(x)为一个n位的 二进制。

44、数据,将M(x)左移k位后,用一个约定 的“生成多项式”G(x)相除,G(x)是一个k+1位 的二进制数,相除后得到的k位余数就是校验位。这 些校验位拼接到M(x)的n位数据后面,形成一个n+k位 的代码,称这个代码为循环冗余校验(CRC)码,也 称(n+k,n)码。,2. 校验位的生成,假设:要传送的数据信息为:100011,即报文 多项式为:M(x)= x5 + x + 1;约定的生成多 项式为:G(x)= x3+ 1, 则数据信息位数n=6,生成多项式位数为4位,所以校 验位位数k=3。 生成校验位时,用x3.M(x)去除以G(x),相除时采用 “模运算”的多项式除法。,利用“模”多项式。

45、除法计算x3.M(x)G(x)的过程。,X3.M(x)G(x)(x8+ x4 + x3)(x3 + 1)x2+x+1,校验位为111,CRC码为100011 111。,如果要校验CRC码,则可将CRC码用同一个 多项式相除,若余数为,则说明无错; 若余数不为,则说明有错。,例如:若在接收方的CRC码与发送方一致,即为 100011 111时,用同一个多项式相除后余数为; 若在接收方的CRC码有一位出错而变为101011 111时, 用同一个多项式相除后余数不为。,3. CRC码的纠错,在接收方将收到的CRC码用约定的生成多项式 G(x)去除,如果码字没有错误,则余数为0,若有一 位出错,则余数。

46、不为0,而且不同的出错位置其余数 不同。 更换不同的码字,余数和出错位的关系不变。 只和码制与生成多项式有关。,如果CRC码中有一位出错,用特定的G(x)作模2除, 则会得到一个不为0的余数。若对余数补0后继续除 下去,则会出现一个有趣的现象:各次余数将会按 照一个特定的顺序循环。,4. 生成多项式的选取,从查错和纠错的要求来看,选取的一个 生成多项式应满足以下几个条件: 任何一位发生错误时,都应使余数不为0。 不同位发生错误时,余数应该不同。 对余数作模2 除时,应使余数循环。,下面是几种常用的生成多项式: CRC-CCITT: G(x)=x16+x12+x5+1 CRC-16: G(x)=x16+x15+x2+1 CRC-12: G(x)=x12+x11+x3+x2+x+1 CRC-32: G(x)=x32+x26+x23+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值