浮点数的表示方法规格化处理_第1页
浮点数的表示方法规格化处理_第2页
浮点数的表示方法规格化处理_第3页
浮点数的表示方法规格化处理_第4页
浮点数的表示方法规格化处理_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要:在《计算机组成原理》课程的教学中,浮点数的表示与运算是一个重点,也是难点。本文对浮点数的一般表示及标准表示的方法、范围、存储格式等进行了比较深入地比较、分析和研究,力求给读者一个清晰的概述。关键词:浮点数,表示方法,符号,尾数,阶码,范围《计算机组成原理》课程是计算机科学与技术专业的一门必修专业基础课,主要是讲述计算机系统几大硬件的组成结构和工作原理。在其核心部件一一运算器(Anthmetician)的运算机制中,浮点数(Floating-point)的表示与运算方法是一个重点,也是难点,笔者在查阅了大量中外文文献的基础上,根据多年的教学实践经验,对浮点数的表示方法、规格化处理方法、表示范围进行了比较详细地分析研究,以方便学生的学习,共同行们参考。1浮点数的一般表示方法在数学中,表示一个浮点数需要三要素:尾数(mantissa)、指数(exponent,又称阶码)和基数(base),都用其第一个字母来表示的话,那么任意一个浮点数N可以表示成下列形式:N=MXBE,例如Nl=1.234X10-6,N2=-0.001011X2011等,同样的数字对于不同的基数是不相同的,移动小数点的位置,其指数相应地跟着变化。在计算机中,表示一个浮点数,同样需要以上三要素,只是阶码与尾数一同存储,基数常有2、8、16等数值,下面的讨论以2为基数进行。将浮点数放在计算机中存储时,尾数M用定点(Fixed-point)小数的形式,阶码E用有符号整数形式,改变M中小数点的位置,同时需要修改E的值,可以给出有效数字(s坦nificantnumber)的位数,因此M和E决定了浮点数的精度(piecision),E指明小数点在B进制数据中的位置,因而E和B决定了浮点数的表示范围(range),浮点数的符号(Sign)是单独考虑,设阶码有m+1位,尾数有n+1位,则一般浮点数的表示方法如图1所示,其中,下标s代表符号位,下标数字代表数字所处的位数,尾数的小数点默认最高数字位Ml之前。图(b)是将尾数的符号位提在最前面,其它部分与图(a)一样,是目前常用的一种表示形式。图1浮点数的一般表示形式在这种表示方法中,阶码的二进制编码(binaiycode)一般是原码(signmagnitude)、补码(twoscomplement)或移码(bias),尾数的编码一般是原码或补码。2浮点数的规格化处理在浮点数系统中,小数点的浮动使数值的表示不能惟一,从而给数据处理带来困难,因此有必要使浮点数的表示与存储有一定的标准,考虑到阶码、尾数之间的关系,常将尾数的最高数字位是有效值的数值称为规格化(noimahzation),由于尾数可以是原码或补码,所以有两种规格化的形式,如表1所示。表1规格化数据的形式尾数编码尾数代码形式说明正数负数原码(MXXX1.1XXX最高数治槐瓯胛?补码0.1XXX1.0XXX符号位与最高数字位必须相反对于二进制尾数,规格化限制了其范围是:1/2W|M|V1,通过左右移动小数点,增减阶码的值来进行规格化处理。在浮点数中,零的表示比较特殊。一个是零浮点数,一般地,对于规格化的浮点数来说,无论阶码为任何值,尾数为零就认为该浮点数是零,但这实际上是由尾数的舍入而近似的值,要让总体浮点数趋近于零,其阶码必须是一个不超出表示范闱的最大的负数才行。设阶码含符号为n位,则整数阶码所表示的范围是:至或至,即是或。另一个问题产生于零的唯一表达问题,为了实现用指令测试零,约定在定点数和浮点数格式中零具有相同的表达式,将浮点数的阶码值进行余编码,就像BCD码中余3码加3一样,阶码被描述为E加上,这个就叫偏移(bias),由上面分析可知的取值有两种,浮点数的标准表示形式(正EE754标准)所采用的是偏移值。3浮点数的表示范围浮点数的表示有一定的范围,超出范围时会产生溢出(flow),一般称大于绝对值最大的数据为上溢(overflow),小于绝对值最小的数据为下溢(underflow)。浮点数表示范I韦I一般分以下几种情况考虑,设浮点数的阶码和尾数均用补码表示(原码表示比较简单),阶码为m+1位(其中1位是符号),尾数为n+1(其中1位是符号),则浮点数的典型范围值如表2所示。表2浮点数的典型范围值典型范闱浮点数代码真值数符(Ms)阶码(E)尾数(M)最大正数最小正数规格化的最小正数绝对值最大的负数绝对值最小的负数规格化的绝对值最小负数000111011...11100...00100...00011...11100...00TOC\o"1-5"\h\z100...0011 1100 010000 001101 114标准表示法为便于软件的移植,浮点数的表示格式应该有统一标准。1985年IEEE(InstituteofElectiicalandElectronicsEngmeers)提出了IEEE754标准°该标准规定基数为2,阶码E用移码表示,尾数M用原码表示,根据原码的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的一位。实数的IEEE754标准的浮点数格式为:具体有三种形式:表3IEEE754三种浮点数的格式参数浮点数类型存储位数偏移值()阶码E的取值范围真值表达式数符(s)阶码(E)尾数(M)总位数十六进制十进制短实数1823327FH1271-254长实数11152643FFH10231~2046临时实数11564803FFFH163831~32766对于阶码为0或为255(2047)的情况,正EE有特殊的规定,由于篇幅有限,在此不讨论。在浮点数总位数不变的情况下,其精度值与范闱值是矛盾的,因此一般的机器都提供有单、双精度两种格式。表4中列出了IEEE754单精度浮点数的表示范围,对于双精度只需要修改一下偏移值和尾数位数即可。表4IEEE754单精度、双精度浮点数范围典型范围浮点数代码真值数符(Ms)阶码(E)尾数(M)最大正数最小正数绝对值最大的负数绝对值最小的负数001111111100000000111111110TOC\o"1-5"\h\z0000000111 1100 001100 00标准浮点数的存储格式与图1(b)相似,只是在尾数中隐含存储着一个1,因此在计算尾数的真值时比一般形式要多一个整数lo对于阶码E的存储形式因为是127的偏移,所以在计算其移码时与人们熟悉的128偏移不一样,正数的值比用128偏移求得的少1,负数的值多1,为避免计算错误,方便理解,常将E当成二进制真值进行存储。例如:将数值-0.5按IEEE754单精度格式存储,先将-0.5换成二进制并写成标准形式:-0.510=-0」2=-1.0X2-12,这里s=l,M为全0,E-127=-l,E=12610=011U1102,则存储形式为:101111110000000000000000000000000=BE00000016

这里不同的下标代表不同的进制。综上所述,笔者通过多年的教学实践,对学生特别容易迷惑的地方进行了分析研究,并给出了结论性的总结,弥补了大多数教课书中讲不明白的问题。参考文献:.JohnP.Hayes.ComputerAiclutectuieandOrganization.ThudEdition.北京:清华大学出版社影印,2001.173-178.[美]DavidA.Patterson.JohnL.Hennessy著.郑纬民等译.COMPUTERORGANIZATION&DESIGN.SecondEdition.北京:清华大学出版社,2003.212-214.白中英.计算机组成原理.网络版,北京:科学出版社,2002.20-21.胡越民.计算机组成与系统结构,北京:电子工业出版社,2002.58〜62一:概述IEEE754浮点数格式短实数也称单精度数长实数也称双精度数一:概述IEEE754浮点数格式短实数也称单精度数长实数也称双精度数符号位1位,阶码8位,尾数23位符号位1位,阶码11位,尾数52位42E48000第一步,化为2进制01000010111001001000000000000000第二步:因为正EE754使用1个符号,8个阶码,23个尾数,我们分别在上面提取这些内容.符号:第一位:0表示正数阶码29位:10000101为133,实际的累值为133-127=6尾数:10-32位:11001001000000000000000,实际值为LU001001(1+尾数)第三步:根据公式写出实际数值大小为1110010.01,化为十进制为:114.25指数偏移量127(7FH)1023(3FFH)16383(3FFFH)指数偏移量127(7FH)1023(3FFH)16383(3FFFH)值real*4值real*4real*8real*101位符号位(s)、8位指数(e),23位尾数g共32位)1位符号位(s)、11位指数(e),52位尾数g共64位)1位符号位(s)、15位指数(e),64位尾数(m洪80位)计算公式:V=(-l)As*2AE*M(当指数位为0时)(当指数位不全为0或不全1)V=(-l)八s*2(当指数位为0时)(当指数位不全为0或不全1)V=(-irs*2八(指数位数值-指数偏移量)*(1+尾数)情况1:当e(各位)为全。时:E=l-(2A(e(位数)-1)-1);<==>E=1-指数偏移量M=nio如:ieal*4是8位,E=1-(2A(8-1)-1)=1-127=-126在real*4时:V=(-l)As*2A(-126)*m在real*8时:V=(-l)As*2A(-1022)*m情况2:当e(各位)不为全。且不为全1时:E=e(值)-(2人(e(位数)-1)-1);<===>E=指数位数值-指数偏移量M=l+nio在real*4时:V=(-l)As*2A(e(值)-127)*(l+m)在real*8时:V=(-l)As*2A(e(值)-1023)*(1+111)三:将浮点格式转换成十进制数[例3.1]:0x00280000(real*4)转换成二进制00000000001010000000000000000000我们将其分段:符号位指数部分(8位)尾数部分0 00000000 01010000000000000000000符号位=0;指数部分=0;尾数部分M为m:0.01010000000000000000000=0.3125该浮点数的十进制为:(-l)z0*2A(-126)*0.3125=3.6734198463196484624023016788195e-39[例3.2]:0xC04E000000000000(ieal*8)转换成二进制1100000001001110000000000000000000000000000000000000000000000000符号位指数部分(11位)尾数部分1 10000000100 1110000000000000000000000000000000000000000000000000符号位=1;指数=1028,因指数部分不为全。且不为全1,则:尾数部分M为1+m:1.1110000000000000000000000000000000000000000000000000=1.875该浮点数的十进制为:(-l)Al*2A(1028-1023)*1.875=-60四:将十进制数转换成浮点格式(real*4)[例4」]:26.0十进制26.0转换成二进制11010.0规格化二进制数L10100*2人4计算指数4+127=131符号位指数部分尾数部分01000001110100000000000000000000以单精度(real*4)浮点格式存储该数010000011101000000000000000000000x41D00000[例4.2]:0.75十进制0.75转换成二进制0.11规格化二进制数计算指数-1+127=126符号位指数部分尾数部分00111111

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论