1.28k likes | 1.44k Views
第二章 数据的表示和运算. * 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
E N D
*R进制数表示:(N)R=(kn-1…k1k0.k-1k-2…k-m)R= 其中,ki∈{0,1,…(R-1)} §2.1 数据的编码 一、数制及其转换 1、进位计数制 *进位计数制:又称进制或数制,是用一组固定的符号和统一的规则来表示数值的方法。有数码、基数和位权3个基本参数 *常用的4种进制:
余数 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—
整数部分 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=?
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
新的编码方法 二、机器数及其编码 *数值数据:组成—由[符号+]数值[+小数点]构成; 运算—符号与数值分开运算,加减法先比较大小 *机器数:计算机内部编码表示的数值数据; 真值—数学上带+/-号的数值数据 *机器数的符号编码:用数字(0/1)表示符号(+/-) 如(+101)2→(0101)2、(-0.101)2→(-.101)2→(1.101)2 *机器数的编码方法: 运算方法分析—①采用手工运算方法,硬件实现困难; ☆②采用新运算方法,以便于硬件实现 编码方法—原码、补码、反码、移码等
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=?
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]原 ②运算方法—符号与数值分开运算(与手工运算一致) └→适合于乘除法,加减法较复杂
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), 即减去一个数等价于加上这个数的补数 └→可将减法运算转化为加法运算
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 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个
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
②设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 纯小数真值与补码的关系—上述方法同样适用(自行推导)
△ 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
△ [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
设[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=?
练习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
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
原码 无 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]补,补码比原码、反码多表示一个负数
补码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]补符号位取反、其余各位不变
三、十进制数编码 *BCD码(Binary Coded Decimal):又称二-十进制编码,是指用4位二进制编码表示1位十进制数位的编码方式 *BCD码种类:分有权码和无权码两种,最常用的是8421码 ◇BCD码缺省时指8421码(特殊声明除外)! *十进制数的编码方法: ①对各数位按序用BCD码编码,符号编码放在最后; ②用特定编码表示符号(如1100和1101表示正和负)。 例— +427表示为0100 0010 0111 1100 -123表示为0001 0010 0011 1101
交换码 输入码 内 码 内 码 键盘 转换 字符 数据 内 码 处理 传送 传送 字符 字模库 字模码 交换码 交换码 显示器 计算机A 计算机B MEM 四、字符及字符串编码 1、字符编码 *字符编码:字符在字符集中惟一的数字化代码, 表示字符在字符集中的序号或特征号 *字符编码的类型:有输入码、内码、交换码、字模码4种 与输入法、字符集大小有关 字符存储时的编码(数据表示), 与字符集大小、存储器字长有关 与字体、字号大小有关 字符传送时的编码(序号), 仅与字符集大小有关
*有关字符编码的习惯叫法: 字符编码—均指交换码的编码! 字符数据—均指内码的编码! *常见字符编码(交换码)种类:
2、字符串编码 *字符串特性: ①由多个字符构成 ②所含字符数不固定 *字符串编码方法: ①由各个字符编码组成 ②通过特定编码标志字符串的结束,结束编码放在最后 └→字符集必须包含该字符(如ASCII码中编码为0的字符) 例—字符串“am”的ASCII编码为1100001 1101101 0000000 作业一:P78~79—2~7
存储器 或 传输 线路 输出方 状态 M 纠正器 M P” M’ 函数f 比较器 P P’ 函数f 输入方 五、校验码 *冗余校验思想: ①用待发数据(M)形成校验信息(P),M与P一起传送 ②用接收数据(M’)形成新校验信息(P”),检错并纠错 *术语:校验码—由数据位和校验位组成的信息编码 检错(检验)—检查数据在传送过程中有/无错误 纠错(校正)—根据错误位置纠正数据(取反) *常见校验码:奇偶校验码、海明校验码;循环冗余校验码
预先约定为奇数/偶数个 *校验码编码:(设数据信息为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—
*校验方法: 故障字S— S=P’ P”,其中P’是接收的、P”是形成的 检错— 若S=0无错误,若S=1有错误 纠错— 无此能力 (∵无法获得错误位置) 25 例2— *校验能力:只能检测奇数个错误,无纠错能力 例3—下列接收的校验码①01001、②10100、③10011中,只有一个有奇数位错,请问发送时采用的是奇校验还是偶校验码? *应用:广泛应用于I/O传输的数据校验
故障字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个奇偶检验组)
*校验位位数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值=错误位置”规则排列信息
错误位置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存储等方面的校验
根据检验位编码规则,得 (偶校验方式) 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
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位错!
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
数据位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
不同值表示错误位置不同(不是错误位置) 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)可表明出错位置 适用于串行设备 纠错成本低(避免了海明校验码的译码器电路)
34 例8—续例7,CRC码1位错误时的余数特性如下表: 例9—续例8,CRC纠正1位错时的原理如下表:(共循环4次)
*对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传送、网络通信等方面
无符号数--自然数 有符号数--整数、纯小数、实数等 数值数据 数据 逻辑数 字符(串)--含汉字 图形 其它--声音、图像等 非数值数据 实际应用 需要的 数据类型 计算机语言 支持的 数据类型 计算机硬件 支持的 数据类型 程序员 编译程序 §2.2 数据的表示 ◇计算机用编码表示数据: ◇计算机只支持最常用(最基本)的数据类型: 数据表示—计算机硬件能够直接识别和引用的数据类型 数据转换(应用→表示)—程序员及编译程序完成
1、数值数据的数学特征 ①进制可有多种; ②符号为“+”或“-”,可以没有符号; ③小数点为“.”,可隐含表示,小数点位置可任意变化; ④数码长度可任意变化; ⑤不会产生运算溢出 运算会产生溢出! 一、数值数据的表示方法 2、冯·诺依曼模型计算机的硬件特征 ①指令和数据用二进制表示,采用二进制运算; ②二进制中只有0和1,无法表示符号和小数点; ③机器字长固定,CPU内部全部采用定长方式处理
机器数本身无法区分数据类型,须用操作类型区分机器数本身无法区分数据类型,须用操作类型区分 定点格式 浮点格式 机器数本身无法区分数据类型 3、数值数据的表示方法 *进制问题处理:支持二进制,可支持二-十进制 *符号问题处理: 有符号数—符号用数字表示, 无符号数—符号位置为数值 *小数点问题处理: ①点的表示—用隐含方式表示; ②位置表示— 约定不同数据类型的位置不同
表示格式(小数点表示) 编码方式(符号及数值表示) 数码长度(数值范围表示) 定点与浮点表示 数据的表示 机器数编码 数据处理 运算方式 溢出处理 数据的操作 39 *数码长度问题处理: ①同一数据类型—只有一种长度(定长); ←定长处理所需 ②同一操作集的数—常支持几种长度(几种数据类型) *运算问题处理: ①运算类型—指令操作码指明运算类型及数据类型; ②运算方法—按数据表示(格式/编码/长度)实现相应运算; ③溢出处理—硬件检测并发出通知,软件决定是否处理 ◇数值数据的处理方法:包括数据的表示和数据的操作方法 系统结构确定 组成逻辑实现
Sn-1Sn-2…S0 SfSn-2…S0 SfS-1…S-(n-1) 数值 数符 数值 数符 数值 无符号整数 有符号整数 纯小数 二、数的定点表示 1、定点表示方法 指约定数据中隐含的小数点位置固定不变 *定点表示格式: 2、定点数的表示 *定点数的表示范围:(设数码长度为n位)
补码概率≈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的、补码编码的有符号整数
1 e 1 m SM SEE SMM SEE M 或 阶符 阶值 数符 尾数值 三、数的浮点表示 1、浮点表示方法 指约定数据中隐含的小数点位置是可变的 概念:尾数--±M,阶(指数)—±E,尾数的基—RM,阶的基—RE *浮点表示格式:由定点格式的尾数和阶组成 格式— 表示—尾数用定点纯小数表示,阶用定点纯整数表示
负上溢区 (-∞) 下溢区 正上溢区 (+∞) 机器零 负数区 正数区 绝对零 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
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
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 *规格化的操作: 左规—尾数左移一位,阶码减一 右规—尾数右移一位,阶码加一 应用—非规格化数→规格化数,可能需多次规格化操作
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 补码尾数—最高数值位与符号相反←便于硬件实现
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为移码编码的定点整数(改进了移码值)
*阶的码制:采用的是余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位