您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 浮点数的表示格式规格化IEEE754
问题写出+0.125,-0.125的补码和移码表示。为什么用补码,移码?如何表示即有整数又有小数的数值数据,如12.25?12.25用浮点数怎么表示?为什么要对浮点数进行规格化?引入定点表示法的特点定点数表示数的范围受字长限制,表示数的范围有限;定点表示的精度有限;机器中,常用定点数表示纯整数和纯小数,表示即有整数又有小数时比较麻烦。Lecture3浮点数表示课程结构计算机系统统计硬件运算器数据表示数据数据定点原码反码补码移码浮点一般表示规格化IEEE754非数值数据校验码运算方法运算器存储器控制器总线输入输出软硬件接口软件主要内容浮点数的表示格式规格化IEEE754浮点数的表示格式对任意一个二进制数N,总可以写成:N=2E×M,式中:E为数N的阶码,M为数N的尾数;可见浮点数是由阶码和尾数两个部分组成的。浮点数在计算机中的表示格式如下:MSEM数符阶码尾数值定点整数移码表示定点小数补码表示ESEMSM阶符阶码数符尾数值定点整数补码表示定点小数补码表示或Ms代表浮点数的符号n其位数反映浮点数的精度k其位数反映浮点数的表示范围Es和k共同表示小数点的实际位置EsEk-1E1E0MsMn-1M1M0……E阶码M尾数阶符数符阶码的数值部分尾数的数值部分小数点位置浮点数的表示格式x=–1110100000例将–58表示成二进制定点数和浮点数,并写出它在16位定点机中的三种机器数和浮点机中阶码为移码、尾数为补码的形式(尾数10位,尾符1位,阶码含阶符5位)。解:二进制形式定点表示浮点形式[x]原=1,000000000111010[x]补=1,111111111000110[x]反=1,111111111000101[阶]原=0,0110[阶]补=0,0110[阶]移=1,0110定点机中浮点机中[x]阶移、尾补=1,0110;1.0001100000x=–111010x=–(0.1110100000)×2110[尾]原=1.1110100000[尾]补=1.0001100000存放在存储器中形式为B460H主要内容浮点数的表示格式规格化IEEE754①原码规格化后的尾数正数为0.1×…×的形式负数为1.1×…×的形式②补码规格化后的尾数正数为0.1×…×的形式负数为1.0×…×的形式规格化同一个浮点数表示不唯一,如:1.11×20,0.111×21使|x|=0.5(不绝对,如尾数1.10000B表示-0.5,但不是规格化的例将下列十进制数表示成浮点规格化数,阶码4位(含符号),分别用补码和移码表示;尾数6位(含符号),用补码表示(要求规格化)。①19/512②-19/512解:①19/512=10011×2-9=0.10011×2-4阶码用补码表示为:1100010011阶码用移码表示为:0100010011②-19/512=-10011×2-9=-0.10011×2-4阶码用补码表示为:1100101101阶码用移码表示为:0100101101例设浮点数的的阶码6位(含符号位),尾数为10位(含符号位),阶码和尾数都用补码表示,求其表示范围(规格化)。表示范围【例题分析】①阶码范围:最小负数最大负数最小正数最大正数0二进制补码100000111111000001011111十进制真值-25=-32-1+125-1=31注意:这里规格化尾数的最大负数的补码是1.01…1的形式,而不是1.11…1的形式,是因为1.11…1不是规格化数,所以规格化尾数的最大负数应是:-0.10…01,(-0.10…1)补=1.01…1即:-(2-(n-1)+2-1)表示范围②规格化尾数表示范围如下:最小负数最大负数最小正数最大正数0二进制补码1.0000000001.0111111110.1000000000.111111111十进制真值-1-(2-9+2-1)2-11-2-9③规格化浮点数表示范围如下:最小负数最大负数最小正数最大正数0二进制补码2011111×1.0…02100000×1.01…12100000×0.10…02011111×0.1…1阶码用移码2111111×1.0…02000000×1.01…12000000×0.10…02111111×0.1…1十进制真值-231×1-2-32×(2-9+2-1)2-32×2-1231×(1-2-9)浮点数的表示范围:-231×1~231×(1-2-9)表示范围552192112~(12)2根据以上分析若某机字长为k+n,其中阶码k位(含一位符号位),尾数n位(含一位符号位);设a=2(k-1)-1(阶码的最大值)b=-2(k-1)(阶码的最小值)则规格化数所能表示的范围为:最大正数:(1-2-(n-1))×2a最小正数:2-1×2b最大负数:-(2-(n-1)+2-1)×2b(绝对值最小的负数)最小负数:-1×2a(绝对值最大的负数)阶码采用移码不影响表示范围,但机器数与补码表示时不同浮点数的阶码决定了浮点数的表示范围;浮点数的尾数决定了浮点数的表示精度。表示范围练习设机器数字长为24位,欲表示±3万的十进制数,试问在保证数的最大精度的前提下,除阶符、数符各取1位外,阶码、尾数各取几位?满足最大精度可取k=4,n=18解:…k=4,5,6,15位二进制数可反映±3万之间的十进制数∴215=32768214=16384∵215×0.××××××?位…主要内容浮点数的表示格式规格化IEEE754“Father”oftheIEEE754standard现在所有计算机都采用IEEE754来表示浮点数1970年代后期,IEEE成立委员会着手制定浮点数标准1985年完成浮点数标准IEEE754的制定Prof.WilliamKahan~wkahan/ieee754status/754story.htmlThisstandardwasprimarilytheworkofoneperson,UCBerkeleymathprofessorWilliamKahan.直到80年代初,各个机器内部的浮点数表示格式还没有统一因而相互不兼容,机器之间传送数据时,带来麻烦单精度格式:32位,符号位1位,阶码E=8位,尾数M=23位双精度格式:64位,符号位1位,E=11位,M=52位1823S符号位EM阶码尾数32位单精度形式11152S符号位EM阶码尾数64位双精度形式IEEE754标准浮点数表示阶码用移码、尾数用原码,因为规格化原码尾数的最高为恒为1,为增加一位的精度,该1在尾数中不表示出来,计算时在尾数前面自动加1.IEEE754标准浮点数表示1823S符号位E1.M(原码规格化)阶码尾数32位单精度形式单精度数所表示的数值为(-1)s×1.M×2e-127。双精度数所表示的数值为(-1)s×1.M×2e-1023。其中:s=0表示正数,s=1表示负数;即,如果要表示一个数,需要把该数写成:(-1)s×1.M×2(x)真值而规格化浮点数形式是:(-1)s×0.1M×2(128+x)移码=(-1)s×1.M×2(127+x)移码相当于此时移码的计算不是加128,而是加127e=127+x几个特殊数值:当E的二进制位全为1时为特殊数值:此时,若M的二进制位全为0,则n表示无穷大。若S为1则为负无穷大,若S为0则为正无穷大;若M的二进制位不全为0时,表示NaN(NotaNumber),表示这不是一个合法实数。E为全0时:M全为0时,表示机器0;M不全为0时,表示非规格化的数。单精度数e的取值为1~254(8位表示),M为23位,共32位;双精度数e的取值为1~2046(11位表示),M为52位,共64位。IEEE754标准浮点数表示例写出下列十进制数据的IEEE754编码①0.15625②-5解:①0.15625转换成二进制值为0.00101,在IEEE754中规格化表示为1.01×2-3,e=127-3=124,IEEE754编码为:00111110001000000000000000000000②-5转换成二进制值为:-101在IEEE754中规格化表示为1.01×22,e=127+2=129,IEEE754编码为:11000000101000000000000000000000IEEE754标准浮点数表示例将十进制数9和5/32转换为IEEE754标准的单精度数,并用8位十六进制表示解答(1)9=(-1)0×1001=(-1)0×23×1.001=(-1)0×2130-127×1.001二进制代码为:01000001000100000000000000000000即:41100000H解答(2)5/32=(-1)0×0101×2-5=(-1)0×2-5×22×1.01=(-1)0×2124-127×1.01二进制代码为:00111110001000000000000000000000即:3E200000HIEEE754标准浮点数表示例将IEEE754单精度数(8位十六进制表示)转换为十进制数(1)C0A00000H(2)3F880000H解答(1)C0A00000H11000000101000000000000000000000(-1)1×(1.25)×2129-127=-1×1.25×22=-1.25×4=-5.0解答(2)3F880000H00111111100010000000000000000000(-1)0×(1.0625)×2127-127=1×1.0625×20=1.0625×1=1.0625IEEE754标准浮点数表示IEEE754的表示范围(单精度)数符阶码尾数真值最大正数01111111011…11(2-2-23)×2127最小正数00000000100…001×2-126绝对值最大的负数(最小负数)11111111011..11-(2-2-23)×2127绝对值最小的负数(最大负数)10000000100..00-1×2-126阶码用移码表示的益处直接可以由移码的表示形式看出对应数值的大小(这里是把移码当做无符号数来比较大小的,而不必考虑符号,这里比用补码好多了,补码是要变换成原码再比较的)其次,用移码表示的话,简化了对于“0”的判断,即当移码的各位都为0的话,那么该移码对应的数据是能够表示的数据中的最小值。小结理解规格化的意义、IEEE754表示中隐含隐含尾数最高拉的意义;给定一个真值,能用规格化浮点数表示该值(含IEEE754表示);给定一个浮点数表示的机器数(含IEEE754表示),能计算其真值。浮点数精度问题1994年11月间各报纸有关Pentium处理器浮点瑕疵问题的报告。Pentium芯片中浮点除法存在的问题甚至上了电视节目DavidLeetermanLateShow的十大新闻排行榜。为了换回所有问题芯片,Intel一共为此损失了3亿美元的资金。浮点数的溢出作业33-1.将下列十进制数表示成浮点规格化数,阶码4位(含符号),分别用补码和移码表示;尾数6位(含符号),用补码表示。(1)19/512(2)-19/5123-2.浮点数阶码4位(含阶符),尾数9位(含数符),均用补码表示,求用规格化和用非规格化表示时能够表示的数值范围。3-3.设浮点数的格式为:第15位为符号位,第14位到第8位为阶码,采用补码表示;第7位到第0位为尾数,与符号位一起采用规格化的补码表示,基数为2。问:它能表示的正数和负数的数值范围是什么?3-4.假定一台32位字长的机器中带符号整数用补码表示,浮点数用IEEE754标准表示,寄存器R1和R2的内容分别为R1:0000108BH,R2:8080108BH。不同指令对寄存器进行不同的操作,因而,不同指令执行时寄存器内容对应的真值不同。假定执行下列运算指令时,操作数为寄存器R1和R2的内容,则R1和R2中操作数的分别是多少?(1)无符号数加法指令(2)带符号数加法指令(定点整数)(3)带符号数加法指
本文标题:浮点数的表示格式规格化IEEE754
链接地址:https://www.777doc.com/doc-3820076 .html