《数据的表示方法与数据校验.ppt》由会员分享,可在线阅读,更多相关《数据的表示方法与数据校验.ppt(110页珍藏版)》请在三一办公上搜索。
1、数据的表示方法和数据校验,数据的表示方法及其转换,数据的表示方法及其转换,数据的表示方法及其转换,数 制 计算机中常用的几种进位数制,数 制,基 数,进位方法,基本符号,二进制 2 逢 2 进 1 0,1 八进制 8 逢 8 进 1 0,1,2,7 十进制 10 逢 10 进 1 0,1,2,9 十六进制 16 逢 16 进 1 0,1,9,A,B,F,数据的表示方法及其转换,计算机中采用二进制的原因 电路简单 工作可靠 简化运算 逻辑性强 可有效实现二值逻辑运算,数据的表示方法及其转换,不同数制间的数据转换 二进制数、八进制数与十六进制数之间的转换 将二进制数转换为十进制数 十进制数转换为二
2、进制数 十进制数转换成八进制数、十六进制数,数据的表示方法及其转换,数据符号的表示 数据的“真值”用“+”/“-”作为数符后跟数据的绝对值的数据表示形式 数据的“机器数”将数据的数符数字化形成的计算机内部的数据表示形式,与数值数据的编码方法紧密关联 在计算机中表示数符的一种方法是用一个二进制位来表示数符,通常取:0“+”1“”数据在计算机中表示时,不能省略数符,数据的表示方法及其转换,十进制数位的编码与运算 人们所习惯使用的数值数据是十进制形式的,而计算机中保存、处理数值数据所用的是二进制 在计算机中,整数是精确表达的,运算也不会必然地造成精度损失;而实数则不然,相应地,有:实数在计算机中执行
3、近似运算 采用相对精度制 十进制实数不能精确转换成二进制形式 这使得虽然一般应用问题中的“计算”不会产生不良影响,但对于要求按绝对精度进行实数“计算”的应用问题(如财务数据、工程数据)就难以适应 在现代计算机中,对数值数据的处理提供两种方式的系统机制:一种是直接二进制运算,另一种是为基于二进制运算器直接进行十进制运算提供基础性的支持,数据的表示方法及其转换,十进制数位的编码与运算 也就是说,如果应用问题中的“计算”要求与计算机中的处理一致,则计算机系统的硬件对之提供全面地系统支持;如果应用问题中的“计算”要求与计算机中的处理不一致,则硬件为相应要求的实现提供基础性支持,在此基础上通过软件的作用
4、可使问题要求得以满足 这样,十进制形式的数值数据在计算上进行处理时,硬件提供了两条途径:人们可将十进制数转换为二进制形式,在计算机内部存储、处理、传送,当要输出时,再将相应二进制结果转换为十进制,这是一般的做法 人们也可将十进制数在计算机内部以某种方式直接存储、处理、传送 应当注意的是,计算机是基于二进制实现数据处理的,数据的表示方法及其转换,十进制数位的编码与运算 为了达到上述目的,必须解决两个问题:十进制数的数位(数字)表示问题 一个完整的十进制数(包含任意个数位、可能带有数符、遵循十进制计数规则)的表示问题 十进制数位的编码与运算问题 如何在只能识别与处理二进制的计算机中有效地表示构成十
5、进制数的数位,使得相关的各种处理要求都能被高效可靠地实现 十进制数值的表示与存储问题 如何有效地解决十进制数值的数符表示与数值表示,使得相关的各种处理要求都能被高效可靠地实现用基 2 码表示一个十进制数位的问题 由于 23 10,因此,至少需要用 4 位基 2 码来编码一个十进制数位。当然,也可以用多于 4 位的基 2 码来编码一个十进制数位。通常采用的是 4 位基2 码编码方案,数据的表示方法及其转换,十进制数位的编码与运算 由于 4 位基 2 码可有16 中不同的组合,因此,要从中选出10 种来表示十进制数位的 09,有多种方案可供选择 有权码 表示一位十进制数的基 2 码的每一位有确定的
6、权。一般用8421码,其4个基2 码的权从高到低分别为 8、4、2、和 1 用0000,0001,1001分别表示0,1,9,每个数位内部满足二进制规则,故称这种编码为“以二进制编码的十进制(Binary Coded Decimal,简称BCD)码”,数据的表示方法及其转换,十进制数位的编码与运算 在计算机内部实现 BCD 码算术运算,要对运算结果进行修正,对加法运算的修正规则是:如果两个BCD码相加之和小于或等于(1001)2,即(9)10,不需要修正 若相加之和大于或等于(10)10,要进行加 6 修正,并向高位进位 另外几种有权码,如2421,5211,4311码(见表2.1),也是用4
7、位基2码表示一个十进制数位,但4位二进制码之间不符合二进制规则。这几种码有一个特点,即任何两个相加之和等于(9)10 的二进制码互为反码 例如,在2421码中,0(0000)与9(1111)、1(0001)与8(1110)、,互为反码,数据的表示方法及其转换,十进制数位的编码与运算,数据的表示方法及其转换,数据的表示方法及其转换,十进制数位的编码与运算 格雷码的编码规则:任何两个相邻编码只有一个二进制位不同,而其余三个二进制位相同。其优点是从一个编码变到下一个相邻编码时,只有一位发生变化,用它构成计数器时可得到更好的译码波形。格雷码的编码方案有多种,表2.2 给出两种常用的编码值,数据的表示方
8、法及其转换,数据的表示方法及其转换,十进制数位的编码与运算 也有用多于 4 位基 2 码,如用 5 位、7 位,甚至 10 位基 2 码,来表示一个十进制数位的方案。有些属于无权码,有些属于有权码 五中取二码(2 out of-5 code)用 5 位基 2 码,并且每个代码必须包含 2 个“1”和 3 个“0”,因此提供了一位(或奇数位)的校错能力 蠕变码(Creeping Code)也用 5 位基 2 码,是由一个“1”逐次移位扩展和紧缩而形成的,符合格雷码的编码规则 二元五进制码(Biquinary Code)用 7 位基 2 码,其位权从高向低分别为5043210,每个码包含 2 个“
9、1”和 5 个“0”,是有一位校错能力的有权码,数据的表示方法及其转换,数据的表示方法及其转换,数字串在计算机内的表示与存储 一个十进制数通常包含多位数字,由于不能硬性规定十进制数的长度,因而只能将其抽象为“数字串”在实践中,十进制数值可同时包含整数部分和小数部分,然而,这里仅考虑整数问题 十进制数串在计算机内主要有两种表示形式:字符串形式和压缩十进制数串 字符串形式 一个字节存放一个十进制数位或符号位,存放的是0 9 十个数字和正负号的ASCII编码值。在主存中,这样的一个十进制数占用连续的多个字节。因此,为了指明这样一个数,需要给出:该数在主存中的起始地址 数据所含符号个数(“串长”),数
10、据的表示方法及其转换,数字串在计算机内的表示与存储 十进制数可以是无符号的,也可以是带符号的。对于字符串形式的带符号十进制数,根据其数符处理方式的不同,可进一步划分其为“前分隔数字串”和“后嵌入数字串”前分隔数字串 让符号位占用单独一个字节并放在数字串的最前面。用字符“”(ASCII 码值为 2BH)表示正号,用字符“”(ASCII码值为2DH)表示负号。如+123 和 123 的存储表示分别为:,数据的表示方法及其转换,数字串在计算机内的表示与存储 后嵌入数字串 符号位不单独占用存储空间,而是把它嵌入到最低一位数字里边。其规则是,把负号变成十六进制的 40 并将其与最低数字位的值相加。如 1
11、23 和 123 的存储表示分别为:,注意:对前分隔或后嵌入数字串,都要给出它的首字符的主存地址和长度。长度为 0 的数字串的值为 0。对这两种方式表示的数进行算术运算是很不方便的,因为每个数字符占用一个字节,其低四位的值表示数值,而高四位的值在进行算术运算时不具有数值的意义,数据的表示方法及其转换,数字串在计算机内的表示与存储 压缩的十进制数字串形式 一个字节存放两个十进制的数位,它比字符串形式节省存储空间,又便于直接完成十进制数的加减运算 用压缩的十进制数串表示一个数,要占用主存连续的多个字节,每个数位占用半个字节(即 4 个二进制位),其值可用 BCD 码或数字符的ASCII 码的低 4
12、 位表示,符号位也占半个字节并放在最低数字位之后,其值选用四位编码中的六种冗余状态中的有关值,如用 12 表示正号,用 13 表示负号。在这种表示中,规定数位加符号位之和必须为偶数,当其不为偶数时,应在最高数字位之前补一个 0。例如:,无符号数和有符号数,无符号数 在计算机中,参与运算的数有两大类:无符号数和有符号数 数据一般存放在计算机的寄存器中,通常,寄存器的位数与机器字长一致 在存放无符号数时,寄存器中的每一位都被用来表示数据的值 若用16位的寄存器来保存数据值,则有:当用来存放无符号数值时,其表示范围为065535 当用来存放有符号数值时,则其最大表示范围为-32768+32767,无
13、符号数和有符号数,无符号数和有符号数,无符号数和有符号数,无符号数和有符号数,无符号数和有符号数,有符号数及其编码 补码表示法 关于补码表示法,先讨论补码的导出及基本性质下面全面分析一下原码表示法进行加减运算的各种情况,无符号数和有符号数,有符号数及其编码 补码表示法 从上表可以看出,由于操作数用原码表示,使得在两操作数符号相异时,应作加运算时实际上却被改为减运算;本应作减运算实际上改为加运算 倘若能找到一种机器数的表示法,对它所表示的正负数,要求做加法就作加法,且结果为正确的机器数表示;对于做减法,减去一个负数等于加上与这个负数值对应的正数,减去一个正数,等于加上与这个正数值相等的负数。所以
14、如能解决这种机器数表示法所能表示的正负数之间的转换,那么减法也能转变为加法。另外,在运算中使符号位与数值部分一起参与运算从而简化了运算规则。这对于简化机器结构大有好处 人们引入数的补码表示,有效地解决了上述有关的机器执行有符号数加减法的复杂性问题,无符号数和有符号数,有符号数及其编码 补码表示法 先看两个十进制数的运算:如果假定使用两位十进制数运算器来机械性地完成上述加法运算,则在做时,多余的100 将会因为超出了运算器的位数和范围而被自动丢掉,结果变成了41。与的结果相同。在数学上可以用同余式表示:79(38)7962 41(mod 100)进一步地,可定义:38 62(mod 100)此时
15、称38 的补码(对模100 而言)是62。也就是说,一个负数用其补码代替,同样可得到正确的运算结果。即负数用补码表示时,可以把减法转化为加法,无符号数和有符号数,无符号数和有符号数,有符号数及其编码 补码表示法 整数补码的定义 对于n 位整数,其补码的定义为:,下面以小数为例,对补码的运算作些简要讨论,有关讨论同样也适应于整数:若X,Y,则 X 补=X,Y 补=Y,2 X+Y 0,相应地,有:若 1 X+Y 0,则根据定义,有:X+Y 补=X+Y=X 补+Y 补 若 2 X+Y 1,由于超出了小数的范围,我们说,加法运算产生了“正溢出”,无符号数和有符号数,有符号数及其编码 补码表示法 若 1
16、X,0Y-1(0X-1,Y 类似),则 X 补=X,Y 补=2+Y,1 X+Y-1,相应地,有:若 1 X+Y 0,则有:X+Y 补=X+Y=2+X+Y=X 补+Y 补 若 0 X+Y-1,则有:X+Y 补=X+Y=2+X+Y=X 补+Y 补 若 0X-1,0Y-1,则 X 补=2+X,Y 补=2+Y,0 X+Y-2,相应地,有:若0 X+Y-1,则有:X+Y 补=2+X+Y=2+X+2+Y=X 补+Y 补(mod 2),无符号数和有符号数,有符号数及其编码 补码表示法 若 1 X+Y-2,由于其绝对值超出了小数的范围,我们说,加法运算产生了“负溢出”综合以上讨论,我们可以得出结论:在无溢出(
17、正溢出/负溢出)的情况下:X+Y 补=X 补+Y 补(mod 2)数据的原码和补码间的转换 在已知一个有符号数的原码而想要将其转换为补码表示时,可行途径有:根据定义进行转换 原码 真值 补码 基于两者间的关联直接进行转换 数据原码与补码间的关联 由原码和补码的定义,有:若 1 X 0,则有 X 原=X 补=X,无符号数和有符号数,有符号数及其编码 补码表示法 若 0 X 1,设 X 原=1.X1X2 Xn,则有:X=0.X1X2 Xn,由补码的定义可知 X 补=2+(0.X1X2 Xn)=1+0.111 0.X1X2 Xn+0.00 01令 X=X1X2 Xn,NOT X 为X1X2 Xn 按
18、位对应取反(即10,0 1)所得数据,则 NOT X=0.111 0.X1X2 Xn X 补=1+0.NOT X+0.00 01=1.NOT X+0.00 01,由此可知,对于正数,原码与补码是相同的;对于负数,原码与补码之间的转换规则为:符号位不变,数值部分求反加(加在最低位),无符号数和有符号数,有符号数及其编码 补码表示法 在已知 X 补 的情况下,直接求取 X 补 假设有 X补=X0.X1X2 Xn,X0 为补码数的符号位,则有:若 1 X 0,则X0=0,所以X=X补=0.X1X2 Xn 0X=0.X1X2 Xn 0X 补=2+(0.X1X2 Xn)=1.NOT X+0.00 01=
19、NOT X0.NOT X+0.00 01其中,NOT X0 是补码数的符号位X0 的反。这就是说,当 X大于或等于 0 时,已知X补,要求 X补 时,只需将X补 连同符号位一起取反,再加 1(加在最低位)即可。,无符号数和有符号数,有符号数及其编码 补码表示法 若 0 X 1,则X0=1,X 补=2+X,故有:X=X 补 2=1.X1X2 Xn 2=0.X1X2 Xn 1X=1 0.X1X2 Xn=0.NOT X+0.00 01=NOT X0.NOT X+0.00 01 0X 补=NOT X0.NOT X+0.00 01,综合以上分析,可得知:已知 X 补 求X 补 的方法是:将 X 补 逐位
20、取反后,在最低位加1 X 补 被称为 X 补 的机器负数,无符号数和有符号数,有符号数及其编码 补码表示法 在已知 X 补 和 Y 补 时,求 X Y 补 的方法是:X Y 补=X+(Y)补=X 补+Y 补=X 补 Y 补 这就是说,在补码情况下,减法运算可基于加法运算部件简单实现 补码具有以下基本性质:性质1:0 的补码是唯一的+0 补=0.000 0 补=1.111+0.001=0.000(mod 2),无符号数和有符号数,有符号数及其编码 补码表示法 性质2:X 补 与 X 补 是等价的基于性质1,有 X X补=X 补+X 补=0,有:X 补=X 补 性质3:已知 X 补 求 X 的一般
21、规则是:X=X 补 2X0,其中X0 是 X 补 的数符位设 X 补=X0.X1X2 Xn 若 1 X 0,则 X 补=X 0,X0=0;若 0 X 1,则 2 X 补=2+X 1,X0=1;因此,X 补=2 X0+X X=X 补 2X0=X0.X1X2 Xn 2X0=0.X1X2 Xn X0,无符号数和有符号数,有符号数及其编码 补码表示法 性质4:已知 X 补 求 X/2 补 的一般规则是:结果的数符与操作数 X 补 的数符一致,结果的数值部分为操作数 X 补 的数值连同符号位一起右移一位的结果 由性质3可知,已知 X 补,X=0.X1X2 Xn X0 因此,X/2=0.X1X2 Xn/2
22、 X0/2=0.X1X2 Xn/2+X0 2X0=(0.X1X2 Xn+X0)/2X0=0.0 X1X2 Xn+X0/2X0=0.X0 X1X2 XnX0 比较性质3中的X 和性质4 中的X/2 可得 X/2 补=X0.X0 X1X2 Xn,无符号数和有符号数,无符号数和有符号数,无符号数和有符号数,有符号数及其编码 模4 补码(变形补码)模4补码除了模数(及与模数紧密关联的特性)与模2补码不同外,是没有什么区别的。因此,前面讲过的模2补码性质及码制之间转换均可用于模4补码 可以看出,模补码的真值范围是模补码的一倍,假若仍表示X的真值,小数点左边就一定相同。基于此可以说,模4补码是有两个符号位
23、的补码 称为变形补码 由于模补码在表示时,两个符号位一定相同,而当两个同号数相加,且结果或者结果时(但仍在之间),两个符号位就一定不相同。利用这个特点可判断定点数加减运算中的溢出 应注意,在计算机中存储和传送数据时用一位符号位,而在运算时数据采用两位符号位表示,无符号数和有符号数,无符号数和有符号数,无符号数和有符号数,有符号数及其编码 反码、补码转换为原码 将反码表示的数据转换成原码 转换方法:符号位保持不变,正数的数值部分不变,负数的数值部分取反例:设 X 反=0.1010,则 X 原=0.1010,X=+0.1010 设 X 反=1.1010,则 X 原=1.0101,X=0.0101
24、将补码表示的数据转换成原码 转换方法:符号位保持不变,正数的数值部分不变,负数的数值部分取反后在最低位加1例:设 X 补=0.1010,则 X 原=0.1010,X=+0.1010 设 X 补=1.1010,则 X 原=1.0110,X=0.0110,无符号数和有符号数,有符号数及其编码 移码表示法 移码的定义 如果整数X 的字长为n+1位(包括1位符号位),则其移码的定义为:X 移=2n+X 2nX2n(mod 2n+1)(2.9)例:设 n=7,则有:X 移=128+X 128X128(mod 128)此时的移码实质上是余128码,无符号数和有符号数,无符号数和有符号数,有符号数及其编码
25、移码表示法 移码的性质 移码表示法具有下列主要性质:性质1:移码数符位的特殊性 移码的数符与原码、补码的数符相反。对于同一个数据X,X 移 与 X 原、X 补 的数符位的值相反 性质2:移码与补码的关系 对于同一个数,若将其补码表示的数符位取反,即得到其移码表示,反之亦然。即若有 X 移=Xn.Xn-1Xn-2 X0,则相应地有 X 补=NOT Xn.Xn-1Xn-2 X0 性质3:移码加减法运算需要对结果进行修正 已知两个n+1 位(含1位符号位)的数X、Y 得移码表示分别为 X 移 和 Y 移,相应地,有:X+Y 移=X 移+Y 移+2n X Y 移=X 移 Y 移+2n,无符号数和有符号
26、数,有符号数及其编码 移码表示法 性质4:X=0 的移码和 X 移=0 相应地,有:0 的移码是唯一性的 对于n+1位移码(含1位符号位),有:+0 移=2n+000=1 000 0移=2n+000=1 000 对于 X 移=0,X 的值是可取的最小值 对于n+1位移码(含1位符号位),有:若 X 移=0,即 2n+X=0,X=2n,定点数和浮点数,数的定点表示 所谓“定点数”,在逻辑上讲,就是固定或约定小数点位置的数据表示方法。这样一来,“小数点”就可以不再使用明确的记号给出,由此可使机器的设计简化 在计算机中,通常硬件的处理策略是以“定点数”来记录整数和纯小数。这样,一个实数可被分成两个部
27、分保存。基于这样的机器要执行实数运算可通过软件的作用来实现(软件也可约定小数点在一个确定的位置上)定点数是硬件可识别的各种数值数据类型中最简单、最基本的一种数据表示,它用以表示二进制形式具有固定比例换算的量。按小数点的位置,可分为:定点小数和定点整数。按数有无符号,可分为带符号的或不带符号的数 在定点数的机器表示中,对于有符号数,通常的做法是将数符放置在最高位(对于整数和纯小数都是这样),定点数和浮点数,定点数和浮点数,数的定点表示 进行算术运算时,通常使用带符号的数,一般以最左边(最高)位为符号位;数据可用原码、补码或反码表示。表示逻辑量或某些特征值时,应当使用无符号的数 关于定点数,应当注
28、意:小数点在机器中是无法表示的,是人们在编程时的一种约定 对于计算机来说,符号位与其它位没有什么区别,这也只是人们的一种约定只有定点数表示的计算机称为定点计算机,定点数可由寄存器或存储单元来表示,机器指令引用的操作数只能是定点数,而其它数据类型在定点机中不能由硬件直接表示,也不能由机器指令直接引用。但并不是说定点机不能处理浮点数据,它们可以通过软件的方法将其变换为等效的定点数据表示,然后再加工处理,定点数和浮点数,数的定点表示 早期计算机中,定点数的长度(位数)是固定的,一般取机器字长,参与运算的操作数长度也是固定的,通常称作“定长运算”或“定长操作”。在实际使用中发现,固定字长存在明显缺点。
29、如有的用户问题,其数据范围和精度要求只需较少的位数就可满足,但在定长数据表示中,多余的位只能填入(真值),使运算器和存储器设备的利用率降低 为了克服固定长度的缺点,在现代计算机中,通常采用多种定长数据表示,对每种字长的操作仍然是定长操作。如 X86 系列机,有三种定长数据:8 位,16 位,32 位。每种定长数据可以单独存储和单独运算处理。当然,这使相应计算机硬件结构比之于采用单一定长格式的机器在设计上要复杂一些,也会在一定程度上降低机器的性能价格比,定点数和浮点数,数的定点表示下面再对计算机中的定点数及其计算机内部处理的几个基础性问题作一简单讨论。这些问题是:定点数的表示范围问题 以字节数据
30、为例,下面将对定点数的表示范围问题作一简单讨论 在按字节编址的机器中,16位、32位、64位字长的地址如何确定 在现代,计算机系统的主存通常以字节作为独立编址单位,处理相关的操作数的长度通常为字节的整数倍,而机器从主存读取(或向主存写入)操作数通常是以“主存字”为单位进行的。同时,长度不同的数据可能要存放在主存的连续地址空间中 采用多种字长数据表示的机器,如何确定操作数的类型 计算机内部在对数据进行自动处理时,如何知道当前处理的操作数的长度?,定点数和浮点数,数的定点表示 操作数类型与处理操作的相关性问题 作为机械性装置,计算机对各种数据都按统一模式进行处理?定点数的表示范围问题涉及:数据字长
31、 整数的表示范围因数据字长的不同而不同(小数则因数据字长的不同而精度不同)数据是无符号数还是有符号数 编码方法的不同将使定点数的表示范围有所不同(略有差异)字节定点数据的表示范围(真值)如下表所列 类似地,可得到16位字长、32位字长、64位字长的十进制数范围和二进制数形式的表示范围,定点数和浮点数,定点数和浮点数,定点数和浮点数,数的定点表示 一般地,对于16 位字,要求地址 A 为偶数;对于32位字,要求地址 A 模 4 为 0;对于 64 位字,要求地址 A 模 8 为 0(称为按“存储字”的“边界对齐”)。但也有些机器中无此要求 采用多种数据字长的机器,确认当前操作数的数据类型的基本原
32、则是:总的原则是由“指令”的内容(指令的操作码部分当把一条机器指令抽象为由“操作码”和“地址码”两部分组成时)确定当前操作数是8位、16位、32位还是64位中的哪一种数据类型。也就是说,实际上,计算机的CPU 是把它们作为多条指令来识别。以“加法”指令为例,CPU 认为有一条8位的加法指令、一条16位的加法指令、一条32位的加法指令和一条64位的加法指令。具体实现有下述两种策略,定点数和浮点数,数的定点表示 在一些机器中,通过给出不同的“操作码”编码来区分操作数的数据类型。也就是说,针对“加法”运算,给出4个操作码分别对应于8位加法操作、16位加法操作、32位加法操作和64位加法操作 在另一些
33、机器中,在指令格式中设置相对独立的“操作数类型”字段来区分操作数的数据类型,例如,设置一个两位的“操作数类型码段”,使“00”对应于8位加法、“01”对应于16位加法、“10”对应于32位加法、“11”对应于64位加法 操作数类型与处理操作的相关性问题 当机器中允许存在多种类型的数据时,并非所有的操作都适用各种不同的数据类型。通常的做法是:使某些操作适用于所有的数据类型,而某些操作只适用于其中的几种数据类型,定点数和浮点数,定点数和浮点数,定点数和浮点数,数的浮点表示 若不对浮点数的表示作出进一步明确的规定,同一个浮点数的表示形式就不是唯一的。例如:电子质量0.9 10-270.09 10-2
34、6=为了提高数据表示的精度,使尾数的有效数字尽可能占满已有的位数,同时也使计算机实现浮点运算时有一个统一的标准形式,人们引入了浮点数的规格化形式浮点数的规格化形式对尾数M 提出了限制要求:1/R M 1(具体到等号有所不同)一般浮点数都是以规格化形式存储和运算的 对于,如果 M 用原码表示,其表示形式为:正数0.1XXXX 负数1.1XXXX如果用补码表示,其表示形式为:正数0.1XXXX 负数 1.0XXXX,定点数和浮点数,数的浮点表示 在进行浮点数运算时,其结果尾数的有效数字可能超过最高位,为使其规格化,需要进行右规。右规时,尾数向右移一位,阶码加1。若运算结果的尾数有效数字不在最高有效
35、位,为使其规格化需要进行左规。左规时,尾数向左移一位,阶码减 1 例如,浮点运算使得尾数的结果为 00.01001,此时,就要进行结果的左规,左规后,尾数变为00.1001,结果的阶码被减1。又如,浮点运算使得尾数的结果为 01.1001,此时,就要进行结果的右规,右规后,尾数变为00.11001,结果的阶码被加1。浮点数的精度由尾数 M 的位数决定,浮点数的表示范围由 R 和 E 决定,定点数和浮点数,数的浮点表示 浮点数据表示也从固定字长发展成了多种字长数据表示。按IEEE 标准,常用的浮点数的格式为:符号位阶码尾数总位数短浮点数 1 8 2 3 3 2长浮点数 1 1 1 5 2 6 4
36、临时浮点数 1 1 5 6 4 8 0 对短浮点数和长浮点数,尾数不为零时,其最高一位上的不必明确给出,称为隐藏位。对临时浮点数,不采用隐藏位方案。浮点数的表示范围 以短浮点数为例,假定R=2,其表示范围给出如下:十进制形式表示 二进制形式表示,定点数和浮点数,正数 负数非规格化数原码Max 0 01111111 1111 11111111 0001 23个1 22个0 0Min 0 11111111 0001 1 01111111 111 22个0 23个1补码Max0 01111111 1111 10000000 1111 23个1 23个10Min0 10000000 0001 1 01
37、111111 000 22个0 23个0,定点数和浮点数,非数值数据的表示方法,数字化信息编码的概念 计算机的最重要的功能是处理信息,如数值、文字、符号、语言、图形和图像等。在计算机内部,各种信息都必须采用数字化编码的形式被传送、存储和加工。因此掌握信息编码的概念与技术是至关重要的 所谓编码,就是用少量简单的基本符号,选用一定的组合规则,以表示出大量复杂多样的信息。基本符号的种类和这些符号的组合规则是一切信息编码的两大要素。如用10 个阿拉伯数码表示数值等。注意在编码中不能有重码 当基本符号数量很多时,往往还要采取措施,以能使用更少量而简单的基本符号来表示那些量大而复杂的基本符号,这就构成了多
38、重编码 在计算机中,广泛采用的是仅用“”和“”两个基本符号组成的基码,或称为二进制码。称为码制的基,非数值数据的表示方法,字符的表示方法 现代计算机不仅要处理数值数据的计算问题,而且要实现对大量非数值数据的系统处理 这些非数值数据包括字符、字符串、图形符号和汉字等在内,鉴于它们是基于一个确定符号集合的,且与字符(拼音字母、数字符号、标点符号等)关联密切,因此称其为“字符数据”在字符数据中,“字符”是其基本元素,因此,字符的表示是字符数据计算机系统表示的基本问题 在计算机中,为每一个字符指定一个确定的编码,作为识别与使用这些字符、以至由此识别各种字符数据的依据。这些编码的值,是用一定位数的基2码
39、的两个基本符号“1”和“0”进行重编码给出的 使用最多的、最普遍的是ASCII 字符编码,即American Standard Code for Information Interchange,如表2.5 所示,非数值数据的表示方法,非数值数据的表示方法,字符的表示方法 从表2.5 可以看出:每个字符用7 位基 2 码编码,代码的排列次序为 b6 b5 b4 b3 b2 b1 b0,其高位部分是 b6 b5 b4,低位部分是b3 b2 b1 b0。在计算机内,每个字符实际用 8 位表示(一个字节)。通常,最高位 d7 被置为“0”。在需要奇偶校验时,这一位可用于存放奇偶校验的值,此时称这一位为
40、校验位 ASCII 是128个字符组成的字符集。其中编码值0 31不对应任何可印刷(或称有字形)字符,通常称它们为控制字符,用于通信中的通信控制或对计算机设备的功能控制。编码值为32 的是空格字符SP,编码值为127 的是删除控制DEL 码。其余的94个字符称为可印刷字符,有人把空格也计入可印刷字符,称有95个可印刷字符,非数值数据的表示方法,字符的表示方法 注意,这种字符编码中有如下两个规律:字符0 9 高3位编码为011,低4 位为00001001。当去掉高 3 位的值时,低 4 位正好是二进制形式的09(这也符合十进制数位编码的BCD 码规则)。这既满足正常的排序关系,又有利于完成数字
41、ASCII 码与二进制码之间的转换 英文字母的编码值满足正常的字母排序关系,且大、小写英文字母编码的对应关系相当简便,差别仅表现在b5 一位的值为0 或1(b5 一位的值为0,表示相应的字母伟大写字母;b5 一位的值为1,对应的字母为小写字母),这样,有利于大、小写字母之间的编码变换(已知一个字母的大写形式的编码,只要将其b5 一位的值由0 改变为 1,就得到了对应的小写字母的编码,反之亦然),非数值数据的表示方法,字符串的表示 随着计算机在文字处理与管理信息系统(MIS)中的广泛应用,字符串已成为最常用的数据类型之一,许多计算机中都提供字符串操作功能,一些计算机(例如,X86系列微机)还给出
42、了系列面向字符串操作的机器指令 字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字符。当主存字由2个或4个字节组成时,在同一个主存字中,既有按从低位字节向高位字节的顺序存放字符串内容的,也有按从高位字节向低位字节的次序顺序存放字符串内容的 这两种存放方式都是常用方式,不同的计算机可以选用其中任何一种。例如 IF A B THEN READ(C)就可以有两种不同的存放方式,如下图所示,非数值数据的表示方法,字符串的表示 字符串的两种存储方式(存储字的字长:32位),非数值数据的表示方法,汉字的表示方法 使计算机识别汉字信息是十分必要的 汉字信息计算机系统保存与处
43、理的基础是计算机能够有效地识别汉字。汉字信息在数据类型上属于“字符数据”;汉字也是通过编码使计算机得以识别的。鉴于汉字的数量很大,目前使用16位二进制码来编码一个汉字。汉字集合、每个汉字所对应的二进制代码是通过“标准化”予以规定的 由于汉字的集合大、汉字又是一种象形文字,这使得汉字的输入问题不能简单处理,由此引出了汉字的“输入方法”问题。人们对之的处理策略是:引入确定的“输入方法”、在输入法程序的支持下将人们的输入转换为汉字的计算机系统编码。汉字输入问题的复杂性导致了多种“输入方法”的出现,不同的输入方法对应于不同的“输入法程序”,非数值数据的表示方法,非数值数据的表示方法,汉字的表示方法 汉
44、字的输入编码 目前汉字输入方案有数百种,基本上是直接利用西文键盘进行汉字输入,每一种汉字输入法都各自提供相应的键盘码与汉字机内码(略)汉字机内码(略)汉字的输出码(略),非数值数据的表示方法,逻辑数据的表示 逻辑数据是用来表示二值逻辑中的“是”与“非”、或称“真”与“假”两个状态的数据。很容易想到,用计算机中的基2码的两个状态“1”和“0”恰好能表示逻辑数据的两个状态。例如用“1”表示真,则“0”就表示假。请注意,这里的1和0没有了数值和大小的概念,只有逻辑上的意义。对逻辑数据只能进行逻辑运算,产生逻辑数据结果,以表达事物内部的逻辑关系。逻辑数据在计算机内可以用一位基2码表示,就是说,8个逻辑
45、数据可以存放在1个字节中,用其中的每个bit(位)表示一个逻辑数据,非数值数据的表示方法,其他信息的表示 图像的表示(略)声音的表示(略),数据校验,概述 在计算机系统中,数据在存取和传递过程中可能会产生错误。为减少和避免错误,一方面是要精心设计各种电路,提高计算机硬件的可靠性,另一方面是在数据编码上找出路,即采用带有某种特殊能力的编码法,通过少量的附加电路,使之能发现某些错误,甚至能确定错误的性质和准确的出错位置,进而实现自动改错功能 数据校验码就是一些具有发现某些错误或带有自动改错能力的数据编码方法,其编码分别称为检错码(能够发现某些错误的数据编码)和纠错码(不仅能够发现某些错误,而且具有
46、确定的错误自动纠正能力的数据编码)。它们的实现原理是在合法的数据编码之间,加进一些不允许出现的(非法的)编码,使合法数据编码出错时,就成为非法编码。这样就可以通过检测编码的合法性来达到发现错误(和/或自动纠正错误)的目的,数据校验,概述 合理安排非法编码数量和编码规则,就可以提高发现错误的能力,甚至达到自动改正错误的目的。这里用到一个码距的概念。码距是指任意两个合法码之间至少有几个二进制位不同,仅有一位不同称其码距为1,例如用四位二进制表示16 种状态,则16 种编码都用到了,此时码距为1,即任何一个状态的四位码中的一位或几位出错,就变成了另一个合法码,此时无查错能力。若用四位二进制表示 8
47、个状态,就可以只用其中八种编码,而把另8 种编码作为非法编码,此时可使合法码的码距为2。一般来说,合理地增大合法码的码距,就能提高发现错误的能力,但由此将会使得表示一定数量的合法码所使用的二进制位数增多,增加了数据存储的容量或数据传送的数量(硬件)常用的数据校验码是奇偶校验码、海明校验码和循环冗余校验码(CRC),数据校验,奇偶校验 奇偶校验是最简单、应用最广泛且开销最小的一种校验方式 奇偶校验码的实现原理是使原来合法编码码距由增加到。实现的具体方法是为一个信息补充一个二进制位,称为奇偶校验位,用该位的值为或,使信息和该校验位一起含有值的个数为奇数(称为奇校验)或偶数(称为偶校验)。形成奇偶校
48、验位的值和进行校验,是由专设的硬件线路实现的(何种门电路?)奇偶校验又分为垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验三种 垂直(纵向)奇偶校验 针对一个数据对象增设一个奇偶校验位(使得n 位长的数据字被加长到n+1 位)。例如,用七单位ASCII 码表示的数字09在增设一个奇偶校验位后形成的垂直奇偶校验码如表一所示,数据校验,奇偶校验,数据校验,奇偶校验 水平奇偶校验 对于数据传送来说,成组传送是一种高效的数据传输方式。在数据的成组传送中,被传送的数据具有相同的数据类型。为了有效地检测数据成组传送过程中可能出现的数据错误,可以考虑针对这一组数的每一位(而不是每个数据)设置一个奇偶校验位(如果
49、每个数据含10个二进制位,就设置10个奇偶校验位,而不管这组数据包含多少个元素),由此形成的校验方式即是“水平奇偶校验”设被传送的数据是由七位ASCII字符组成的数据组,每次传送10个数据,按照水平奇偶校验的方式形成数据的校验码 基于水平奇偶校验的校验码形成方式,可设7个校验位,相应示例数据及其校验码如表二所示,数据校验,数据校验,奇偶校验 水平垂直奇偶校验 同时进行水平和垂直奇偶校验的方式称为水平垂直奇偶校验 水平垂直奇偶校验通常用在成组数据传送时的数据校验上。它在两个方向上对数据进行校验:对成组传送的数据的每一个数据元素按垂直奇偶校验方法形成一个校验位 对各数据的同一位按水平奇偶校验方法形
50、成一个校验位 设被传送的数据是由七位ASCII字符组成的数据组,每次传送10个数据,相应校验码示于表三 水平奇偶校验码和垂直奇偶校验码只能发现奇数个错,不能发现偶数个错。水平垂直奇偶校验码具有较强的检错能力,它不但能发现所有一位、二位和三位错误,而且能改正一位错误,数据校验,数据校验,海明校验码 海明校验码 其实现原理是在数据中加入几个校验位,将数据代码的码距较均匀地拉大,并把数据的每一个二进制位分配在几个奇偶校验组中。当某一位出错后,就会引起有关几个奇偶校验位的值发生变化,这不但可以发现错误,还能指出是哪一位出错,为进一步自动纠错提供了依据 为了简单起见,在此仅介绍能够自动纠正一位错误的海明