1 / 128

第二章 数据的表示和运算

第二章 数据的表示和运算. * R 进制数表示: ( N ) R =( k n -1 … k 1 k 0 . k -1 k -2 … k - m ) R = 其中, k i ∈{0,1,…( R -1)}. §2.1 数据的编码. 一、数制及其转换. 1 、进位计数制 *进位计数制: 又称进制或数制,是用一组固定的符号和统一的规则来表示数值的方法。有 数码 、 基数 和 位权 3 个基本参数. * 常用的 4 种进制:. 余数 8 19 3 ( 最低位 ) 8 2 2 ( 最高位 ) 0

Download Presentation

第二章 数据的表示和运算

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章 数据的表示和运算

  2. *R进制数表示:(N)R=(kn-1…k1k0.k-1k-2…k-m)R= 其中,ki∈{0,1,…(R-1)} §2.1 数据的编码 一、数制及其转换 1、进位计数制 *进位计数制:又称进制或数制,是用一组固定的符号和统一的规则来表示数值的方法。有数码、基数和位权3个基本参数 *常用的4种进制:

  3. 余数 8 19 3 (最低位) 8 2 2 (最高位) 0 (19)10=(23)8 余数 2 19 1 (最低位) 2 9 1 2 4 0 2 2 0 2 1 1 (最高位) 0 (19)10=(10011)2 2、R进制数转换成十进制数 *转换规则:按位权展开 例1—(101.01)2=(1×22+1×20+1×2-2)10=(5.25)10 (3A.C)16 =(3×161+10×160+12×16-1)10=(58.75)10 3、十进制数转换成R进制数 (1)十进制数整数转换成R进制数整数 *整数转换规则:除基取余、上右下左 例2—

  4. 整数部分 0.6875×2 = 1.375 1 (最高位) 0.375 ×2 = 0.75 0 0.75 ×2 = 1.5 1 0.5 ×2 = 1.0 1 (最低位) (0.6875)10= (0.1011)2 (2)十进制数小数转换成R进制数小数 *小数转换规则:乘基取整、上左下右 例3—将(0.6875)10分别转换成二、八进制数 整数部分 0.6875×8 = 5.5 5 (最高位) 0.5 ×8 = 4.0 4(最低位) (0.6875)10= (0.54)8 (3)十进制数转换成R进制数 *转换规则:整数部分、小数部分分别转换后再合并 练习1—(19.6875)10=(X)2=(Y)8,X=?Y=?

  5. 4、二、八、十六进制数相互转换 *隐含规律:2=21,8=23,16=24 (1)二进制、八进制数相互转换 *转换规则:①从小数点向两边分别转换; ②3个二进制数位(不够时补零)等价于1个八进制数位 例4—(13.724)8=(001011.111010100)2=(1011.1110101)2 (10011.01)2=(010011.010)2=(23.2)8 (2)二进制、十六进制数相互转换 *转换规则:①从小数点向两边分别转换; ②4个二进制数位(不够时补零)等价于1个十六进制数位 例5—(2B.E)16=(00101011.1110)2=(101011.111)2 (11001.11)2=(00011001.1100)2=(19.C)16

  6. 新的编码方法 二、机器数及其编码 *数值数据:组成—由[符号+]数值[+小数点]构成; 运算—符号与数值分开运算,加减法先比较大小 *机器数:计算机内部编码表示的数值数据; 真值—数学上带+/-号的数值数据 *机器数的符号编码:用数字(0/1)表示符号(+/-) 如(+101)2→(0101)2、(-0.101)2→(-.101)2→(1.101)2 *机器数的编码方法: 运算方法分析—①采用手工运算方法,硬件实现困难; ☆②采用新运算方法,以便于硬件实现 编码方法—原码、补码、反码、移码等

  7. X 0≤X<2n-1 2n-1-X=2n-1+|X| -2n-1<X≤0 [X]原= 1、原码表示法(原码编码方法) *基本思想:符号(+/-)用0/1表示,数值位为真值的绝对值 *整数原码定义: 设X=±xn-2…x0,则[X]原=xn-1xn-2…x0, 例1—[+1101]原=01101;[-1101]原=11101 例2—设[X]原=1101,则X=-101 例3—设[+X]原=0110,则[-X]原=1110; [+X]原=0000,则[-X]原=1000,即[+0]原≠[-0]原 练习1—若X=-01000,[X]原=? 若[X]原=101010,X=?

  8. X 0≤X<1 1-X=1+|X| -1<X≤0 [X]原= *小数原码定义: 设X=±0.x-1…x-(n-1),则[X]原=x0.x-1…x-(n-1) 例4—[+0.1001]原=0.1001;[-0.1001]原=1.1001 例5—[X]原=1.01,则X=-0.01 *原码的特性: ①X与[X]原关系— ·[X]原与X表示值的范围相同, ·[+0]原≠[-0]原 ②运算方法—符号与数值分开运算(与手工运算一致) └→适合于乘除法,加减法较复杂

  9. 2、补码表示法 *目标:实现符号与数值一起运算 (1)有模运算与补数 示例—时针从10点拨向7点:①10-3=7;②10+9=7+12=7 *有模运算:运算只计量小于“模”的部分,多余部分被丢弃 模—计量系统的计数范围 同余—若A、B、M满足A=B+kM (k为有符号整数), 则记A≡B (modM),称B和A为模M的同余 *补数:若a、b、M满足a+b=M,称a、b互为模M的补数 运算特征—c-a=c-(M-b)=c+b(mod M), 即减去一个数等价于加上这个数的补数 └→可将减法运算转化为加法运算

  10. X 0≤X<2n-1 2n+X=2n-|X| -2n-1≤X<0 [X]补=2n+X (mod 2n)= *数据的编码思路:目标是消除减法运算 ①负数用其正补数表示,即模加负数的结果 示例— -4≡8 (mod 12),即8=12+(-4) ②正数用其本身表示,即模加正数的同余数 示例—+8≡8 (mod 12),即8=12+8 (mod 12) (2)补码定义 *基本思想:机器数最高位表示X的符号(0/1表示+/-), 其余位表示|X|或|X|的正补数 *整数补码定义: 设X=±xn-2…x0,则模为2n,[X]补=x’n-1x’n-2…x’0,即 说明—为实现“负数的x’n-1=1”,模须为2n(不是2n-1)

  11. 原码 无 11…11 10…01 10…00 00…00 00…01 01…11 补码10…00 10…01 11…11 00…00 00…01 01…11 真值-2n-1 -(2n-1-1) -1 0 +1 +(2n-1-1) 例6—[+0001]补=00001,[-0001]补=100000-0001=11111 [+1111]补=01111,[-1111]补=100000-1111=10001 ※正数补码最高位(符号位)为0,负数补码最高位为1 [+0000]补=[-0000]补=00000 ※数0的补码惟一 练习2—若X=-01000、Y=+01000,[X]补=?[Y]补=? 例7—n=5、X≥0时,最大[X]补=01111,Xmax=24-1=+15 X<0时,最小[X]补=10000,Xmin=-24 =-16 ※补码表示数的个数比原码多1个

  12. X 0≤X<1 2+X=2-|X| -1≤X<0 [X]补=2+X (mod 2)= 10 *小数补码定义: 设X=±0.x-1…x-(n-1),则[X]补=x’0.x’-1…x’-(n-1) 说明—模为2(不是1)为实现“负数的x’0=1” 例8—[+0.1011]补=0.1011 [-0.1011]补=2-0.1011=10.0000-0.1011=1.0101

  13. ②设X=-xn-2…x0,[Y]补=1yn-2…y0,xi及yi=0或1 则[X]补=2n+X=[2n-1+(2n-1-1)+1]+X = 1 0…0 + 1…1+1 = 1 0 …0 + 1 -xn-2…x0 +xn-2…x0 =1xn-2…x0+1 Y=[Y]补-2n=1yn-2…y0-[2n-1+(2n-1-1)+1] =2n-1-2n-1-(1…1-yn-2…y0+1) =-(yn-2…y0+1) (3)补码的特性 *X与[X]补的关系: ①设X=+xn-2…x0,[Y]补=0yn-2…y0,xi及yi=0或1 则[X]补=X=0xn-2…x0 Y=[Y]补=+yn-2…y0 纯小数真值与补码的关系—上述方法同样适用(自行推导)

  14. △ X→[X]补— 若X为正数,改符号位为0,其余各位不变; 若X为负数,改符号位为1,其余各位取反、末位加1 11011 X=-0101,[X]补= 00101; 例9—X=+0101,[X]补= △ [X]补→X— 若[X]补最高位为0,改其为正号,其余各位不变; 若[X]补最高位为1,改其为负号,其余各位取反、末位加1 例10—[X]补=00101,X=+0101; [X]补=11011,X= -0101

  15. △ [X]原→[X]补— 若[X]原最高位为0,[X]补=[X]原; 若[X]原最高位为1,[X]补=[X]原各数值位取反、末位加1 例11— [X]原=00101,[X]补= 00101; [X]原=10101,[X]补= 11011 △ [X]补→[X]原— 若[X]补最高位为0,[X]原=[X]补; 若[X]补最高位为1,[X]原=[X]补各数值位取反、末位加1 例12— [X]补=00101,[X]原= 00101; [X]补=10101,[X]原= 11011

  16. 设[X]补=xn-1xn-2…x0,则 当X≥0时,X=[X]补,其中xn-1=0, [-X]补=1xn-2…x0+1=xn-1xn-2…x0+1 *[X]补与[-X]补的关系: 当X<0时,[X]补=2n-|X|,其中xn-1=1, [-X]补=|X|=2n-[X]补=11…1-[X]补+1=xn-1xn-2…x0+1 △[X]补→[-X]补—[X]补的各位取反(含符号位)、末位加1 [-X]补→[X]补—[-X]补的各位取反(含符号位)、末位加1 例13—[X]补=10110,[-X]补=01001+1 =01010 练习3—若X=-01001,[-X]补=? 若[X]补=101010,[-X]补=?-X=?

  17. 练习4— ①若X=+01001,[X]原= ,[X]补= ; ②若X=-01010,[X]原= ,[X]补= ; ③若[X]原=001010,X= ,[X]补= ; ④若[X]原=101110,X= ,[X]补= ; ⑤若[X]补=001110,X= ,[-X]补= ; ⑥若[X]补=101110,X= ,[-X]补= ; ⑦若[-X]补=101011,[X]补= ,[X]原= ; ⑧若[-X]补=001001,[X]补= ,[X]原= 14 7 001001 001001 101010 110110 +01010 001010 -01110 110010 +01110 110010 -10010 010010 010101 010101 110111 101001

  18. X 0≤X<2n-1 (2n-1)+X -2n-1<X≤0 [X]反=(2n-1)+X (mod 2n-1)= [X]反=(2-2-(n-1))+X (mod 2-2-(n-1)) = X 0≤X<1 (2-2-(n-1))+X -1<X≤0 10 3、反码表示法 *目标:作为原码与补码相互转换时的一种过渡编码 *整数反码定义: 设X=±xn-2…x0,取模=2n-1,则 例14—[+1101]反=01101,[-1101]反=10010 *小数反码定义: 设X=±0.x-1…x-(n-1),模=2-2-(n-1),则 例15—[+0.1101]反=0.1101,[-0.1101]反=1.0010

  19. 原码 无 11…11 10…01 10…00 00…00 00…01 01…11 反码 无10…00 11…10 11…11 00…00 00…01 01…11 补码 10…00 10…01 11…11 00…00 00…01 01…11 真值-2n-1 -(2n-1-1) -1 0 +1 +(2n-1-1) 11 *反码与补码关系: 若X为正数,[X]补=[X]反;若X为负数,[X]补=[X]反+1 ◇原码、补码、反码比较: ①机器数的最高位均为符号位(0/1表示正/负); ②若真值X为正数,[X]原=[X]补=[X]反; ③若真值X为负数,[X]补=[X]反+1, [X]反=[X]原除符号位外各位求反; ④[+0]补=[-0]补,补码比原码、反码多表示一个负数

  20. 补码10…00 10…01 11…11 00…00 00…01 01…11 移码00…00 00…01 01…11 10…00 10…01 11…11 真值-2n-1 -(2n-1-1) -1 0 +1 +(2n-1-1) 4、移码表示法 *目标:实现符号与数值一起编码←数连续时编码连续 *整数移码定义: 设X=±xn-2…x0,取模=2n、偏移量=2n-1,则 [X]移=2n-1+X (mod 2n)=2n-1+X -2n-1≤X<2n-1 例16—[-111]移=0001,[-001]移=0111,[±000]移=1000, [+001]移=1001,[+111]移=1111,[-1000]移=0000 *移码的特性: ①数在数轴上为连续编码(无符号数),便于比较大小; ②[X]移=[X]补符号位取反、其余各位不变

  21. 三、十进制数编码 *BCD码(Binary Coded Decimal):又称二-十进制编码,是指用4位二进制编码表示1位十进制数位的编码方式 *BCD码种类:分有权码和无权码两种,最常用的是8421码 ◇BCD码缺省时指8421码(特殊声明除外)! *十进制数的编码方法: ①对各数位按序用BCD码编码,符号编码放在最后; ②用特定编码表示符号(如1100和1101表示正和负)。 例— +427表示为0100 0010 0111 1100 -123表示为0001 0010 0011 1101

  22. 交换码 输入码 内 码 内 码 键盘 转换 字符 数据 内 码 处理 传送 传送 字符 字模库 字模码 交换码 交换码 显示器 计算机A 计算机B MEM 四、字符及字符串编码 1、字符编码 *字符编码:字符在字符集中惟一的数字化代码, 表示字符在字符集中的序号或特征号 *字符编码的类型:有输入码、内码、交换码、字模码4种 与输入法、字符集大小有关 字符存储时的编码(数据表示), 与字符集大小、存储器字长有关 与字体、字号大小有关 字符传送时的编码(序号), 仅与字符集大小有关

  23. *有关字符编码的习惯叫法: 字符编码—均指交换码的编码! 字符数据—均指内码的编码! *常见字符编码(交换码)种类:

  24. 2、字符串编码 *字符串特性: ①由多个字符构成 ②所含字符数不固定 *字符串编码方法: ①由各个字符编码组成 ②通过特定编码标志字符串的结束,结束编码放在最后 └→字符集必须包含该字符(如ASCII码中编码为0的字符) 例—字符串“am”的ASCII编码为1100001 1101101 0000000 作业一:P78~79—2~7

  25. 存储器 或 传输 线路 输出方 状态 M 纠正器 M P” M’ 函数f 比较器 P P’ 函数f 输入方 五、校验码 *冗余校验思想: ①用待发数据(M)形成校验信息(P),M与P一起传送 ②用接收数据(M’)形成新校验信息(P”),检错并纠错 *术语:校验码—由数据位和校验位组成的信息编码 检错(检验)—检查数据在传送过程中有/无错误 纠错(校正)—根据错误位置纠正数据(取反) *常见校验码:奇偶校验码、海明校验码;循环冗余校验码

  26. 预先约定为奇数/偶数个 *校验码编码:(设数据信息为mnmn-1…m1) 校验码组成—共n+1位, 数据mnmn-1…m1 校验位p1 异或与模2加—X Y = X+Y (mod 2) 校验位编码—奇校验:P=p1=mn+mn-1+…+m1+1 (mod 2) 偶校验:P=p1=mn+mn-1+…+m1 (mod 2) 1、奇偶校验码 *编码原理:采用1位校验位,使数据位及校验位中“1”的位数为奇数或偶数个 *校验原理:检测校验码中“1”的个数变化,确定是否有错 有奇校验/偶校验2种方法 例1—

  27. *校验方法: 故障字S— S=P’ P”,其中P’是接收的、P”是形成的 检错— 若S=0无错误,若S=1有错误 纠错— 无此能力 (∵无法获得错误位置) 25 例2— *校验能力:只能检测奇数个错误,无纠错能力 例3—下列接收的校验码①01001、②10100、③10011中,只有一个有奇数位错,请问发送时采用的是奇校验还是偶校验码? *应用:广泛应用于I/O传输的数据校验

  28. 故障字S— S=sk…s1,si=pi’ pi”=pi’ +pi” (mod 2) 检错— 若S=0无错误,S≠0有错误 纠错— S值表示错误位置(共有n+k种),该位信息取反 校验码的编码规则? k的长度? 26 2、海明校验码 *编码原理:将数据分成k个有重叠的组, 每个组有一个奇偶校验位(共k个校验位) *校验原理:多重奇偶校验,即某位错误导致多个校验位变化,从而实现检错与纠错(定位) 对应的校验码称为单纠错码SEC *校验能力目标:能检测并纠正1位错误 *校验方法: (能力目标→方法推导) 设数据M=mn…m1,校验位P=pk…p1(即有k个奇偶检验组)

  29. *校验位位数k的确定: 校验能力目标要求— 2k-1≥n+k,其中n+k表示1位错误种类 k的取值— *校验码编码规则:(以4个校验组为例) 故障字S值的约定—S≠0时表示错误位置,S值有n+k+1种 无 错 误: 0000 (→校验码位置序号从1开始编号) 校验位错: 0001(p1)、0010(p2)、0100(p3)、1000(p4) 数据位错: S的其余码值(≥2个si位为“1”) 校验码的组成规则—按“S值=错误位置”规则排列信息

  30. 错误位置sk…s1,si=1即第i校验组有错 28 信息加入校验组规则— 排列位置hk…h1上的信息,分别加入第i校验组(hi=1时) 检验位的编码规则—(以偶校验为例) p4=m11+m10+m9+m8+m7+m6+m5(mod 2) p3=m11+m10+m9+m8+m4+m3+m2(mod 2) p2=m11+m10+m7+m6+m4+m3+m1(mod 2) p1=m11+m9+m7+m5+m4 +m2+m1 (mod 2) *应用:常应用于I/O传输、RAID存储等方面的校验

  31. 根据检验位编码规则,得 (偶校验方式) p4=m7 m6 m5 =0 p3=m4 m3 m2=1 p2=m7 m6m4 m3 m1=0 p1=m7m5 m4 m2 m1=0 29 例4—若数据有16位,则海明校验码的校验位最少为多少位? 解:2k-1≥16+k,k最小为5位(24-1<20、25-1>21)。 例5—求字符b的ASCII码(m7…m1=1100010)的海明偶校验码。 解:∵23-1<7+3、24-1>7+4 ∴校验位位数=4位; 根据故障字约定,校验码排列m7m6m5p4m4m3m2p3m1p2p1 故偶校验码=m7m6m5p4m4m3m2p3m1p2p1=11000011000

  32. 30 例6—续例5,请分析下列接收的海明偶校验码是否有错?错误时的位置?①11000011010、②11000001000、③11001001000 解:①接收的M’=1100010、P’=0110,可求得P”=0100, S=P’+P”(mod 2),即无进位的模2加,得S=0010, ∴有错误,位置2错误(p2位错),数据M=1100010 ②接收的M’=1100000、P’=0100,可求得P”=0001, S=P’+P”(mod 2),得S=0101, ∴有错误,位置5错误(数据位m2错),数据M=1100010 ③接收的M’=1101000、P’=0100,可求得P”=0110, S=P’+P”(mod 2),得S=0010, ∴有错误,p2错?实际是m4及m2位错(M’=1101000)! *校验能力:SEC能检测并纠正1位错,最多只可发现2位错!

  33. 1 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 ……余数(比除数少1位) 3、循环冗余校验码—CRC(Cyclic Redundancy Check)码 *基本概念: 模2乘—与手工乘法类似,乘积各位求和时采用模2加法 模2除—上商规则,部分余数的首位即为位商; 求余规则,按位模2减(即模2加) 1 0 1 0 × 1 0 1 1 0 1 0 0 0 0 0 1 0 1 0 _ 1 0 0 0 1 0 编码与多项式—可用多项式mn-1Xn-1+…+m1X+m0=M(X)来表示信息编码mn-1…m1m0,mi=0或1时称M(X)为二进制多项式; M(X)左移k位相当于M(X)·Xk

  34. 数据位mn-1…m1 校验位rk…r1 *编码原理:CRC码由数据位M(X)及校验位R(X)拼接组成;而 R(X)为M(X)左移k位后、模2除以k+1位生成多项式G(X)的余数 即 [M(X)·Xk]/G(X)=Q(X)……R(X) (模2除) CRC码=M(X)·Xk-R(X)=M(X)·Xk+R(X) (模2加减) CRC码特点—模2除以G(X)时余数为零,即 [M(X)·Xk+R(X)]/G(X) (模2除) ={Q(X)G(X)+R(X)+R(X)}/G(X) (模2除) =[Q(X)G(X)]/G(X)=Q(X)……0 (模2除) 例7—已知M(X)=1100,G(X)=X3+X+1,求其CRC码 解:G(X)=X3+X+1,即1011 →校验位R(X)为3位 M(X)·X3/G(X)=1100000/1011=1110……010(模2除) CRC码=1100000+010=1100010

  35. 不同值表示错误位置不同(不是错误位置) R”(X)具有的特性: 第i位错误时为R”i(X), 第i+1位错误时为R”i+1(X),有[ R”i(X)·X]/G(X)= …R”i+1(X) 第i+2位错误时为R”i+2(X),有[R”i+1(X)·X]/G(X)= …R”i+2(X) …… …… …… M’(X)串行移位 循环码[与M’(X)无关] 最低位有错时校正 28 *校验原理: --设接收的CRC码=M’(X)·Xk+R’(X) ①用接收的CRC码模2除以G(X),求得余数R”(X); ②若R”(X)=0,表示M’(X)正确; 否则,R”(X)可表明出错位置 适用于串行设备 纠错成本低(避免了海明校验码的译码器电路)

  36. 34 例8—续例7,CRC码1位错误时的余数特性如下表: 例9—续例8,CRC纠正1位错时的原理如下表:(共循环4次)

  37. *对G(X)选择的要求: ①发生校验能力范围内错误时,使R”(X)均不为零; ②发生不同位置错误时,使R”(X)应该均不同; ③连续作R”(X)补0并模2除时,使新R”(X)是循环变化的 *常用的G(X): 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 *校验能力:CRC码检测及纠正错误的能力随n及G(X)而不同; CRC码检错能力较强、纠错能力较弱 *应用:广泛应用于MEM传送、网络通信等方面

  38. 无符号数--自然数 有符号数--整数、纯小数、实数等 数值数据 数据 逻辑数 字符(串)--含汉字 图形 其它--声音、图像等 非数值数据 实际应用 需要的 数据类型 计算机语言 支持的 数据类型 计算机硬件 支持的 数据类型 程序员 编译程序 §2.2 数据的表示 ◇计算机用编码表示数据: ◇计算机只支持最常用(最基本)的数据类型: 数据表示—计算机硬件能够直接识别和引用的数据类型 数据转换(应用→表示)—程序员及编译程序完成

  39. 1、数值数据的数学特征 ①进制可有多种; ②符号为“+”或“-”,可以没有符号; ③小数点为“.”,可隐含表示,小数点位置可任意变化; ④数码长度可任意变化; ⑤不会产生运算溢出 运算会产生溢出! 一、数值数据的表示方法 2、冯·诺依曼模型计算机的硬件特征 ①指令和数据用二进制表示,采用二进制运算;    ②二进制中只有0和1,无法表示符号和小数点; ③机器字长固定,CPU内部全部采用定长方式处理

  40. 机器数本身无法区分数据类型,须用操作类型区分机器数本身无法区分数据类型,须用操作类型区分 定点格式 浮点格式 机器数本身无法区分数据类型 3、数值数据的表示方法 *进制问题处理:支持二进制,可支持二-十进制 *符号问题处理: 有符号数—符号用数字表示, 无符号数—符号位置为数值 *小数点问题处理: ①点的表示—用隐含方式表示; ②位置表示— 约定不同数据类型的位置不同

  41. 表示格式(小数点表示) 编码方式(符号及数值表示) 数码长度(数值范围表示) 定点与浮点表示 数据的表示 机器数编码 数据处理 运算方式 溢出处理 数据的操作 39 *数码长度问题处理: ①同一数据类型—只有一种长度(定长); ←定长处理所需 ②同一操作集的数—常支持几种长度(几种数据类型) *运算问题处理: ①运算类型—指令操作码指明运算类型及数据类型; ②运算方法—按数据表示(格式/编码/长度)实现相应运算; ③溢出处理—硬件检测并发出通知,软件决定是否处理 ◇数值数据的处理方法:包括数据的表示和数据的操作方法 系统结构确定 组成逻辑实现

  42. Sn-1Sn-2…S0 SfSn-2…S0 SfS-1…S-(n-1) 数值 数符 数值 数符 数值 无符号整数 有符号整数 纯小数 二、数的定点表示 1、定点表示方法 指约定数据中隐含的小数点位置固定不变 *定点表示格式: 2、定点数的表示 *定点数的表示范围:(设数码长度为n位)

  43. 补码概率≈100% 默认为补码方式 *机器中用定点数表示的数据类型(数据表示): 无符号整数--无符号编码方式、m种长度;←m种数据表示 有符号整数—某种编码方式、m种长度 ←m种数据表示 ※说明:纯小数通常划入实数范畴,用浮点数表示 示例1—C语言中的6种整数类型: short [int] unsigned short [int] int unsigned int long [int] unsigned long [int] 示例2—IA32支持的整数的6种数据表示: 8b/16b/32b的、无符号编码的无符号整数, 8b/16b/32b的、补码编码的有符号整数

  44. 1 e 1 m SM SEE SMM SEE M 或 阶符 阶值 数符 尾数值 三、数的浮点表示 1、浮点表示方法 指约定数据中隐含的小数点位置是可变的 概念:尾数--±M,阶(指数)—±E,尾数的基—RM,阶的基—RE *浮点表示格式:由定点格式的尾数和阶组成 格式— 表示—尾数用定点纯小数表示,阶用定点纯整数表示

  45. 负上溢区 (-∞) 下溢区 正上溢区 (+∞) 机器零 负数区 正数区 绝对零 N负min N负max N正min N正max 2、浮点数的表示 *浮点数的表示范围与精度: 假设尾数及阶的基RM =RE =2,数值长度分别为m位及e位 影响因素—e决定了范围、m决定了精度 例1—若浮点表示格式中m=10、e=4,尾数及阶均为补码编码方式,写出(-54)10的机器码 解:(-54)10=(-110110)2=-0.11011×2+110, 浮点数机器码为 0011010010100000

  46. 20 例2—若浮点表示格式中尾数为8位(含1位符号位)、阶为5位(含1位符号位),写出下列实数的浮点数或机器码 1 0010 1 1011100 -0.1011010×2-110 0 1110 0 1011100 1 0101 1 0101001 +0.1011100×2-1011 -0.0011000×2+1101 *机器中用浮点数表示的数据类型(数据表示): 实数(及纯小数)—IEEE 754标准,有2种浮点格式 示例—C语言中的2种浮点数类型:float,double

  47. 0 011 0 101 0 100 0 010 0 101 0 001 *规格化数的要求:尾数真值的最高位为1,即 ≤|M|<1 45 3、浮点数的规格化 *目的:对既有浮点数表示格式,使浮点数的表示精度最大 例3—若浮点表示格式中m=3、e=3、尾数和阶均为原码编码方式,不同表示方法的浮点数精度不同: +101.1=0.1011×23=0.01011×24=0.001011×25 *规格化的操作: 左规—尾数左移一位,阶码减一 右规—尾数右移一位,阶码加一 应用—非规格化数→规格化数,可能需多次规格化操作

  48. 100…00 100…01 … 101…11 110…00 110…01 … 111…11 补码 真值 -1.00…00 -0.11…11 … -0.10…01 -0.10…00 -0.01…11 … -0.00…01 45 例4—若浮点数尾数及阶的基均为2,回答下列问题: 左规3次 -0.10000×2-001 右规4次 +0.10111×2+110 *规格化数的表示范围及数码特征: 1111 110000 0111 111111 1111 0000 0000 1111 101111 100000 原码尾数—最高数值位为1 补码尾数—最高数值位与符号相反←便于硬件实现

  49. 32 64 23 1 8 1 52 11 数符S 阶E 尾数M 数符S 阶E 尾数M 单精度浮点表示格式 双精度浮点表示格式 4、IEEE 754标准 *表示格式(及数码长度): 有单精度、双精度两种格式(长度分别为32位及64位) *编码方式: ①数制—M和E均采用二进制方式(即RM =RE =2) ②码制—M为原码编码的定点纯小数(改进了定点位置), E为移码编码的定点整数(改进了移码值)

  50. *阶的码制:采用的是余127码和余1023码 余X码—偏移值为X的移码称为余X码, 标准移码:真值=E-28-1=E-128, ←余128码 余127码: 真值=E-(28-1-1)=E-127 阶的范围—1≤E≤254,而0和255另作他用, 即-126≤阶的真值≤127 *尾数的码制:(以单精度格式为例) 支持非规格化尾数和规格化尾数两种方式 非规格化尾数—尾数真值=±0.m-1…m-23, 机器码M=m-1…m-23,尾数精度=23位 规 格 化尾数—规格化的尾数真值=±1.m-2…m-24, 机器码M=m-2…m-24,尾数精度=24位

More Related