您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 第3章-2.定点数和浮点数
13.2.3定点数和浮点数计算机中的两种表示方式数值范围:一种数据类型所能表示的最大值和最小值数据精度:实数所能表示的有效数字位数。数值范围和数据精度均与使用多少位二进制位数以及编码方式有关。计算机用数字表示正负,隐含规定小数点。采用“定点”、“浮点”两种表示形式。21.数的定点表示方法(1).定点整数——小数点位置固定在数的最低位之后如:Dn-1Dn-2••••••D1D0.范围:2n-1-1~-2n-1(采用字长n=16位补码时其值为32767~-32768)(2).定点小数——小数点位置固定在数的符号位之后、数值最高位之前。如:D0.D-1••••••D-(n-2)D-(n-1)范围:1-2-(n-1)~-1(采用字长n=16位时其值为32767/32768~-1)其中n表示字长多少位3(1)浮点数的表示:是把字长分成阶码和尾数两部分。其根据就是:①JEm-2…….E0SD-1……D-(n-1)阶符阶码值数符.尾数值②SJEm-2…….E0D-1……D-(n-1)数符阶符阶码值.尾数值通常,阶码为补码或移码定点整数,尾数为补码或原码定点小数。2.数的浮点表示方法JEDX24(2)浮点数的规格化目的:字长固定的情况下提高表示精度的措施:1增加尾数位数(但数值范围减小)2采用浮点规格化形式5规格化方法:调整阶码使尾数满足下列关系:尾数为原码表示时,无论正负应满足1/2|d|1即:小数点后的第一位数一定要为1。正数的尾数应为0.1x….x负数的尾数应为1.1x….x尾数用补码表示时,小数最高位应与数符符号位相反。正数应满足1/2≦d1,即0.1x….x负数应满足-1/2d≥-1,即1.0x….x6例题:设某机器用32位表示一个实数,阶码部分8位(含1位阶符),用定点整数补码表示;尾数部分24位(含数符1位),用规格化定点小数补码表示,基数为2。则:1.求X=256.5的第一种浮点表示格式X=(256.5)10=+(100000000.1)2=+(0.1000000001x2+9)28位阶码为:(+9)补=0000100124位尾数为:(+0.1000000001)补=0.10000000010000000000000所求256.5的浮点表示格式为:00001001010000000010000000000000用16进制表示此结果则为:(09402000)167Y=-(256.5)10=-(100000000.1)2=-0.1000000001x2+98位阶码为:(+9)补=0000100124位尾数为:(-0.1000000001)补=1.01111111110000000000000所求-256.5的浮点表示格式为:00001001101111111110000000000000用16进制表示此结果则为:(09BFE000)162.求Y=-256.5的第一种浮点表示格式8(3)溢出问题定点数的溢出——根据数值本身判断浮点数的溢出——根据规格化后的阶码判断上溢——浮点数阶码大于机器最大阶码——中断下溢——浮点数阶码小于机器最小阶码——零处理溢出的具体判断方法将结合实例在后续课程中介绍93.微机中所能表示的数值类型(1)无符号二进制数(字节、字和双字)(2)带符号的二进制定点整数形式(16、32、64位补码表示)和18位BCD码整数形式(80bit)。(3)浮点数(IEEE754标准)包括数符S、阶码E和尾数D三个字段。10微机中的四种整数类型整数类型数值范围精度格式16位整数-32768~32767二进制16位补码表示短整数-231~231-1二进制32位补码表示长整数-263~263-1二进制64位补码表示BCD整数-1018+1~1018-1十进制18位80个二进制其中最左面1字节的最高位是符号位,余7位无效;另外72位是18位BCD码,原码表示。11IEEE754标准格式如下(-1)S2E(D0.D-1……D-(P-1))最高是数符S占1位,0表示正、1表示负;指数项E,基数是2,E是一个带有一定偏移量的无符号整数;尾数部分D,它是一个带有一位整数位的二进制小数真值形式。其规格化形式应调整阶码使其尾数整数位D0为1且与小数点一起隐含掉。12微机中三种不同类型浮点数的格式参数单精度双精度扩展精度浮点数长度(位)326480符号位数111尾数长度P(位)23+1(隐)52+1(隐)64阶码E长度(位)81115最大阶码+127+1023+16383最小阶码-126-1022-16382阶码偏移量+127+1023+16383表示数范围10-38~10+3810-308~10+30813微机中浮点数表示成规格化形式,如下图所示:单精度313023220符号位阶码尾数有效位1·双精度636252510符号位阶码尾数有效位1·扩展精度797864630符号位阶码尾数有效位微机中浮点数的三种表示形式14例如将十进制数178.125表示成微机中的单精度浮点数解:178.125=10110010.001B=1.0110010001x27指数E=7+127=134=10000110B127是单精度浮点数应加的指数偏移量,其完整的浮点数形式为:01000011001100100010000000000000=43322000H15例:将下面Pentium机中的单精度浮点数表示成十进制真值是多少?0011,1111,0101,1000,0000,0000,0000,0000数符:S=(-1)0=1(正号)阶码:E=(01111110)2-127=126-127=-1尾数:D=(1.1011)2X=1.1011x2-1=(0.11011)2=0.84375163.2.4数字化信息的编码及表示计算机进行数据处理和运算,就必须首先实现数字化表达。另外由于计算机除了数据处理和运算外,还要进行各种文字(特别是中文)的处理与编辑。因此,所有由计算机处理的信息也要用数字进行编码。这样在物理机制上可以以数字信号表示.17信息的数字化表示形式数字信号:是一种在时间上或空间上离散的信号,单个信号是常用的二值逻辑(0或1),依靠多位信号组合表示广泛的信息.181.用一串脉冲信号表示数字代码(先发低位后发高位为例)10110tU192.用一组电平信号表示数字代码0tU10tU10tU00tU1203.用一组数字代码表示字符(如ASCII码)4.用若干点的组合表示图像(如图形点阵码)5.用数字信号表示声音(如VCDDVD光盘)6.用数字代码表示命令与状态21数字化方法表示信息的优点:抗干扰能力强,可靠性高;位数增多则数的表示范围可扩大;物理上容易实现,并可存储;表示信息的范围与类型极其广泛;能用逻辑代数等数字逻辑技术进行处理.223.3二进制乘法运算1.软件编程方法实现(时序控制乘法器)由手算到机器实现,要解决三个问题:符号问题、部分积相加进位问题、移位问题。原码乘法是先取绝对值相乘,再根据同号相乘为正、异号相乘位负,单独决定符号位。补码乘法则让符号位直接参加运算,算法将会复杂一些。2.硬件快速乘法器实现利用中大规模集成电路芯片,在一拍节中实现多项部分积的相加,成为阵列乘法器。233.3.1定点数一位乘法1.定点原码一位乘规则:在机器中采用A,B,C寄存器来分别存放部分积,被乘数和乘数(1)在机器内一次加法操作只能求出两数之和,因此每求得一个相加数时,就得与上次部分积相加。(2)人工计算时,相加数逐次向左偏移一位,由于最后的乘积位数是乘数(或被乘数)的两倍.由于在求本次部分积时,前一次部分积的最低位,不再参与运算,因此可将其右移一位。相加数可直送而不必偏移,于是用N位加法器就可实现两个N位数相乘。(3)部分积右移时乘数寄存器同时右移一位,这样可以用乘数寄存器的最低位来控制相加数(取被乘数或零),同时乘数寄存器的最高位可接收部分积右移出来的一位,因此,完成乘法运算后,A寄存器中保存乘积的高位部分,乘数寄存器C中保存乘积的低位部分。24例:设X=0.1101,Y=0.1011,求X•Y.其中寄存器B=X,Cd=4.流程图3.6计算过程如下:00000010110011010011010001101101001101010011001001111000000000100100010011110011010100010010001111+x右移一位→+x右移一位→+0右移一位→+x右移一位→部分积A乘数C乘积高位乘积低位1(丢失)1(丢失)0(丢失)1(丢失)X•Y=0.1000111125注意:两操作数的绝对值相乘,符号位单独处理。寄存器A.B均设置双符号位,第1符号位始终是部分积符号,决定在右移时第1符号位补0操作步数由乘数的尾数位数决定,用计数器Cd来计数。即作n次累加和移位。最后是加符号位,根据Sx⊕Sy决定。262.定点补码一位乘法实现补码乘法有两种方法,现在广泛使用的是Booth算法,也称为比较法。这种方法在机器实现中要在乘数末位Yi之后再增加一个附加位Yi+1,并令其初始值为0。然后根据比较Yi、Yi+1的值决定下一步操作,规则如下:(部分积初始为0)YiYi+1操作00原部分积右移一位01原部分积加X补后再右移一位10原部分积加[-X补]后再右移一位11原部分积右移一位27例3.35:设X=-0.1101,Y=0.1011,即[X]补=11.0011,[Y]补=0.1011,[-X]=00.1101求[X•Y]补.计算过程如下:0000000.10110初始值,最后一位补0001101Y5Y4=01+[-X]补001101000110101011右移一位000000Y4Y3=11+0000110000011010101右移一位110011Y3Y2=10+[X]补110110111011001010右移一位001101Y2Y1=01+[-X]补001000000100000101右移一位110011Y1Y0=10+[X]补1101110001+→+→+→+→+部分积乘数YYiYi+1说明乘积高位乘积低位[X•Y]补=1.01110001,X•Y=-0.1000111128初始值与符号位:A寄存器存放部分累加和,初始为0,采用双符号位。第1符号位指示累加和的正负,以控制右移时补0或补1。B中存放被乘数的补码,双符号位。基本操作:用C寄存器最末两位作判断位,决定下一步的操作。移位:在右移时,第2符号位值移入位数的最高位,第1符号位值不变且移入第2符号位,而A寄存器末位移入C寄存器。步数与最后一步操作:乘数有效位是4位,共作5步。注意,最后一步不移位因为这一步是用来处理符号位的。293.4.1定点除法运算1.定点原码一位除法有恢复余数法和不恢复余数法(加减交替法),计算机中常用后者。因为它的操作步骤少,而且也不复杂。其处理思想是:先减后判,如减后发现不够减,则在下一步改作加除数操作。这样操作步骤固定易于编程。其要点如下:(1)要求被除数|X|除数|Y|,并取原码尾数的绝对值相除;符号位单独处理,商的符号为相除两数符号的半加和。(2)被除数的位数可以是除数的两倍,其低位的数值部分开始时放在商寄存器中。运算中,放被除数和商的A、C寄存器同时移位,并将商寄存器C中最高位移到被除数寄存器A的最低位中。(3)每步操作后,可根据余数Ri符号来判断是否够减:Ri位正表明够减,上商Q为1。Ri为负表明不够减,上商Q为0。(4)基本操作可用通式描述为:Ri=2Ri+(1-2Qi)Y(5原码除的思想是先当成正数相除,若最后一步所得余数为负,则应恢复余数,但不移位,以保持Ri为正。举例如下:30例3.39:设被乘数X=0.1011,Y=0.1101,用加减交替法求X/Y.[-Y]补=11.0011,计算过程如下:00101100000开始情形110011+[-Y]补11111000000不够减,商上011110000000左移001101+Y00100100001够减,商上1010
本文标题:第3章-2.定点数和浮点数
链接地址:https://www.777doc.com/doc-5229048 .html