欢迎来到天天文库
浏览记录
ID:55323648
大小:718.50 KB
页数:11页
时间:2020-05-10
《IEEE754国际标准与实验测试报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、IEEE754国际标准浮点数存储格式实验测试报告学号:E10914089姓名:郜伟班级:09级计算机科学与技术一班目录一、IEEE754国际标准简介3二、浮点数分类41.规格化42.非规格化43.特殊数值4三、浮点数存储格式41.存储格式介绍42.存储格式验证53.浮点数的溢出9四、小结10IEEE754国际标准浮点数存储格式实验测试报告【摘要】浮点数的表示形式在不同的算法下千变万化,为了方便算法软件、数据等之间的移植和交流,1985年IEEE协会制定了IEEE754标准。本文在查阅和分析大量有关IEEE754国际标准的资料基础上,利用C语言编程规范,以实验的形式将浮点型储存格式在win
2、7系统上显示出来,加深了对IEEE754标准的理解。【关键词】IEEE;EEE754;浮点数;浮点数存储格式;规格化;C语言测试一、IEEE754国际标准简介在IEEE754标准之前,世界上没有浮点数统一的表示形式。这样就导致了许许多多的浮点数表示格式出现。随着互联网的普及和技术间交流,这种没有统一标准的浮点数表示方法逐渐成为学术交流中得障碍。为便于软件的移植,浮点数的表示格式应该有统一标准。1985年IEEE(InstituteofElectricalandElectronicsEngineers)提出了IEEE754标准。该标准规定基于基数为2的浮点数数N,从逻辑上用三元组{S,M,
3、E}表示,储存格式如表1所示:表1高位---------------------------------------------------à低位SEMØS表示N的符号位。当N>0时,S=0;当N<0时,S=1。ØE表示N的指数位,位于S和M之间。位数不一定,由表示的浮点数的精度型确定。ØM在存储格式的末尾,故称为N的尾数位。M也称有效数字位、系数位,有时也被称为小数。根据IEEE754标准,三元组{S,E,M}与N的映射关系如下:N=(-1)S×m×2e此时需要增设两个变量m和e。此处的m与M,e与E具有一定的关系,将在下文具体阐述。二、浮点数分类根据存储格式中的指数E的值,将浮点数分
4、成三种类型:规格化、非规格化、特殊数值。1.规格化当E的二进制位既不全为0也不全为1时,则N为规格化形式。此时e被称为偏置(biased)形式的整数,此时增设偏置量bias,则此时e与E,m与M的映射关系为:e=
5、E
6、-bias,bias=2k-1-1Øk为E的位数,单精度时k=8,bias=127;双精度时k=11,bias=1023m=
7、1.M
8、如:E为10000100,M为101时,
9、E
10、=132,e=132-127=5,m=
11、1.M
12、=
13、1.101
14、=1.625。2.非规格化当E的二进制位全为0时,N则为非规格化形式。此时e与E,m与M的映射关系为:E=1-biasM=
15、0.M
16、
17、非规格化数可以方便地表示0或者非常接近0的浮点数。如将S=1,其他置0,则得出-0.0;同理,可得到+0.0。其他小数接近0,并且均匀接近0时,称为“逐渐下溢”属性。3.特殊数值当E的的二进制位全为1时,则N为特殊数值。若M得二进制位全为0,则N表示无穷大,若S为1则为负无穷大,若S为0则为正无穷大;若M的二进制位不全为0(至少一位不为0),表示NaN(NotaNumber),表示N不是一个合法实数或无穷或者为未初始化。实数的IEEE754标准的浮点数格式为:具体有三种形式:IEEE754三种浮点数的格式参数 三、浮点数存储格式 1.存储格式介绍根据C语言的格式,浮点型有三种类型存在,即
18、为float、double、longdouble三种类型,此三种类型的内存大小以及在储存时的格式为表2所示:表2类型存储位数偏移值bias数符(s)阶码(E)尾数(M)总位数十六进制十进制单精度(Float)1位8位23位32位0x7FH+127双精度(Double)1位11位52位64位0x3FFH+1023增长型(longdouble)1位15位64位80位0x3FFFH+16383第三种类型很少使用,故本文将不讨论其在内存中的存储格式。只讨论单精度和双精度的储存方式。2.存储格式验证²下文所写的程序都在WIN7旗舰系统中VisualC++6.0上运行成功。利用C库中的19、.h>库的itoa(inti,strings,2);函数可将整型的i转化称二进制存放在字符串s中。通过将s字符串显示出来就可直观地看到浮点型数在内存中存在格式情况。2.1单精度内存存储格式2.1.1测试代码与解释#include#includevoidmain(){floata;//浮点数aunsignedint*p=(unsignedint*)&a;//将浮点数转化为无符号型的整数便于读取二进
19、.h>库的itoa(inti,strings,2);函数可将整型的i转化称二进制存放在字符串s中。通过将s字符串显示出来就可直观地看到浮点型数在内存中存在格式情况。2.1单精度内存存储格式2.1.1测试代码与解释#include#includevoidmain(){floata;//浮点数aunsignedint*p=(unsignedint*)&a;//将浮点数转化为无符号型的整数便于读取二进
此文档下载收益归作者所有