您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 第6讲-2.3-定点数的移位与加减运算
1第2章运算方法与运算器2.3定点数的运算及实现2.3.1定点数的移位运算2.3.2定点数的加减法运算2.3.3定点数的乘法运算2.3.4定点数的除法运算作业2习题讲解1:将5/32及-4120表示成IEEE754单精度格式,并用十六进制书写。解:(1)(5/32)10=(0.00101)2=1.01×2-3按IEEE754单精度格式得:S=0M=01000…00E=127+(-3)=124=(01111100)2其机器数表示形式为:00111110001000000000000000000000十六进制形式:3E200000H复习回顾3(2)(-4120)10=-1000000011000=-1.000000011×212S=1M=000000011…00E=127+12=139=(10001011)2其机器数表示形式为:11000101100000001100000000000000十六进制形式:C580C000H注意:在IEEE754单精度格式中尾数默认小数点前为1,即真正的尾数为1.M。阶码为移127码,所以阶码=127+实际指数值。4习题讲解2:将十六进制的IEEE单精度浮点数代码42E48000转换成十进制数值表示42E48000=01000010111001001000000000000000按IEEE754标准可写成:01000010111001001000000000000000其中符号位s=0,阶码部分值e=133,尾数部分f=0.78515625,根据IEEE754标准的表示公式,得:(-1)0×(1+0.78515625)×2133-127=1.78515625×26=114.25练习1:将+写成二进制定点数、浮点数及在定点机和浮点机中的机器数形式。其中数值部分均取10位,数符取1位,浮点数阶码取5位(含1位阶符)。19128解:设x=+19128二进制形式定点表示浮点规格化形式[x]原=0;1;0010;1001100000[x]补=0;1;1110;1001100000[x]反=0;1;1101;1001100000定点机中浮点机中000x=0.0010011x=0.0010011x=0.1001100000×2-(10)[x]原=[x]补=[x]反=0.0010011000x=–1110100000练习2:将–58表示成二进制定点数和浮点数,并写出它在定点机和浮点机中的三种机器数及阶码为移码、尾数为补码的形式(其他要求同上例)。解:设x=–58二进制形式定点表示浮点规格化形式[x]原=1,0000111010[x]补=1,1111000110[x]反=1,1111000101[x]原=1;0;0110;1110100000[x]补=1;0;0110;0001100000[x]反=1;0;0110;0001011111定点机中浮点机中[x]阶移、尾补=1;1;0110;0001100000x=–111010x=–(0.1110100000)×2(110)定点数和浮点数比较当浮点机和定点机中数的表示位数相同时,浮点数的表示范围远大于定点数的表示范围。当浮点数为规格化数时,其相对精度远比定点数高。浮点数运算要分阶码部分和尾数部分,而且运算结果都要求规格化,故浮点运算步骤比定点运算步骤多,运算速度比定点运算的低,运算线路比定点运算的复杂。在溢出判断方面,定点数比浮点数繁琐(定点数:比例因子;浮点数:上溢)2.3定点运算一、移位运算1.移位的意义15m=1500cm小数点右移2位机器用语15相对于小数点左移2位(小数点不动)..左移绝对值扩大右移绝对值缩小在计算机中,移位与加减配合,能够实现乘除运算移位导致寄存器中出现空位,如何处理?2.算术移位规则1右移添1左移添00反码补码原码负数0原码、补码、反码正数添补代码码制符号位不变例1设机器数字长为8位(含1位符号位),写出A=+26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。解:A=+26则[A]原=[A]补=[A]反=0,0011010+60,0000110+130,0001101+1040,1101000+520,0110100+260,0011010移位前[A]原=[A]补=[A]反对应的真值机器数移位操作=+11010左移一位左移两位右移一位右移两位对于正数,三种机器数移位后符号位均不变,左移时最高位丢失1,则结果出错;右移时最低位丢失1,影响精度。例2设机器数字长为8位(含1位符号位),写出A=–26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。解:A=–26–61,0000110–131,0001101–1041,1101000–521,0110100–261,0011010移位前对应的真值机器数移位操作原码=–11010左移一位左移两位右移一位右移两位对于负数,三种机器数移位后符号位均不变,负数的原码左移时,高位丢1,结果出错;右移时,低位丢1,影响精度。–71,1111001–131,1110011–1041,0011000–521,1001100–261,1100110移位前对应的真值机器数移位操作补码左移一位左移两位右移一位右移两位对于负数,三种机器数移位后符号位均不变。负数的补码左移时,高位丢0,结果出错,右移时,低位丢1,影响精度;–61,1111001–131,1110010–1041,0010111–521,1001011–261,1100101移位前对应的真值机器数移位操作反码左移一位左移两位右移一位右移两位对于负数,三种机器数移位后符号位均不变。负数的反码左移时,最高位丢失0,则结果出错;右移时最低位丢失0,影响精度。3.算术移位的硬件实现(a)真值为正(b)负数的原码(c)负数的补码(d)负数的反码00010丢1丢1出错影响精度出错影响精度正确影响精度正确正确图1实现算术左移和右移操作的硬件示意图0114.算术移位和逻辑移位的区别算术移位有符号数的移位逻辑移位无符号数的移位逻辑左移逻辑右移低位添0,高位移丢高位添0,低位移丢例如01010011逻辑左移10100110逻辑右移01011001算术左移算术右移0010011011011001(补码)高位1移丢010100110Cy010100110010110010二、加减法运算1.补码加减运算公式(1)加法(2)减法整数[A]补+[B]补=[A+B]补(mod2n+1)小数[A]补+[B]补=[A+B]补(mod2)A–B=A+(–B)整数[A–B]补=[A+(–B)]补=[A]补+[–B]补(mod2n+1)小数[A–B]补=[A+(–B)]补(mod2)连同符号位一起相加,符号位产生的进位自然丢掉=[A]补+[–B]补[B]补求[-B]补=[[B]]补2.举例解:[A]补[B]补[A]补+[B]补+=0.1011=1.1011=10.0110=[A+B]补验证例3设A=0.1011,B=–0.0101求[A+B]补0.1011–0.01010.0110∴A+B=0.0110[A]补[B]补[A]补+[B]补+=1,0111=1,1011=11,0010=[A+B]补验证–1001–1110–0101+例4设A=–9,B=–5求[A+B]补解:∴A+B=–1110例5设机器数字长为8位(含1位符号位)且A=15,B=24,用补码求A–B解:A=15=0001111B=24=0011000[A]补+[–B]补+[A]补=0,0001111[–B]补=1,1101000=1,1110111=[A–B]补[B]补=0,0011000∴A–B=–1001=–9[A]补=0,0001111[-B]补=1,1101000练习1设x=y=,用补码求x+y9161116x+y=–0.1100=1216–练习2设机器数字长为8位(含1位符号位)且A=–97,B=+41,用补码求A–BA–B=+1110110=+118错错运算结果超出计算机字长所能表示范围的情况,称为溢出。加减运算可能出现的三种情况:A+B:有可能溢出A-B:一定不会溢出-A-B:有可能溢出3.溢出判断①根据两个操作数的符号与结果的符号判别溢出参加运算的两个数(减法时即为被减数和求补后的减数)符号相同,其结果的符号与原操作数的符号不同,即为溢出。例如,A=-0.1011B=-0.0111[A]补+[B]补+[A]补=1.0101[B]补=1.1001=10.1110=0.1110两数符号位相同,结果的符号位发生变化,溢出。(1)一位符号位判断溢出用补码求A+B-0.6875-0.4375-1.1275–这种判断方法不容易由硬件来实现。先判断操作数的符号是否相同,再判断结果的符号与原操作数的符号是否相同&=1=1XfSfYfOVR•OVR=(xf⊕sf)(yf⊕sf)②任意符号位两数进位溢出判断法S⊕C两单符号位的补码进行加减运算时,若最高数值位向符号位的进位值C与符号位产生的进位输出值S相同时则无溢出,否则溢出。例如,X=-0.011,Y=-0.111,用补码求X+Y[X]补=1.101+[Y]补=1.001[X+Y]补=10.110S=1,C=0,有溢出X+Y=+0.010-0.375-0.875-1.25硬件实现最高有效位的进位符号位的进位=1如10=101=1有溢出00=011=0无溢出溢出=1OVRSC262、用两位符号位判断溢出(采用变形补码):将单符号补码表达式扩展为双符号表达式进行运算,即变形补码,其形式如下:[x]变形补=xf1xf2.x1x2…xn设和的变形补码为[s]变形补=sf1sf2.s1s2…sn变形补码的溢出判断条件:OVR=sf1⊕sf2即当结果的两个符号位不一致时,出现溢出。sf1sf2=00或11表示正常补码sf1sf2=01表示正溢出sf1sf2=10表示负溢出这种双符号位的补码又称为变形补码,常用于溢出判断参加运算的两个数,均采用双符号位(变形补码),如果结果的两位符号位不同,则发生了溢出。例A=-0.1011B=-0.0111[A]补+[B]补+[A]补=11.0101[B]补=11.1001=110.1110=10.1110结果两位符号位不同,溢出。-0.625-0.4375例A=0.1011B=0.0111[A]补+[B]补+[A]补=00.1011[B]补=00.0111=01.0010结果两位符号位不同,本例上溢出,前例下溢出。0.68750.4375结果的双符号位相同未溢出结果的双符号位不同溢出最高符号位代表其真正的符号00,×××××11,×××××10,×××××01,×××××分析sf1、sf2的含义可知,无论运算结果是否产生溢出,第一符号位sf1始终指示结果的正确的正负符号。变形补码在正常情况下,sf1=sf2,所以存储数据时采用正常补码,只在运算时采用变形补码,以便判别溢出。两位符号位(变形补码)的溢出判断电路:=1OVRSf1Sf2例:x=+0.1001,y=+0.0101,求x+y=?解:[x]变形补=00.1001,[y]变形补=00.010100.100100.0101+00.1110•[x+y]变形补=00.1001+00.0101=00.1110•x+y=0.1110例:x=-0.0110,y=-0.0011,求x+y=?解:[x]变形补=11.1010,[y]变形补=11.1101,11.101011.1101+11.01111丢模•[x+y]变形补=11.1010+11.1101=11.0111•x+y=-0.1001例:⑴x=+0.1010,y=+0.1001⑵x=-0.1101,y=-0.1011求x+y=?解:⑴[x]变形补=00.1010,[y]变形补=00.1001,[x+y]变形补=00.1010+00.1001=01.0011s
本文标题:第6讲-2.3-定点数的移位与加减运算
链接地址:https://www.777doc.com/doc-5727544 .html