IEEE754国际标准与实验测试报告.docx
- 文档编号:2103090
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:6
- 大小:229.91KB
IEEE754国际标准与实验测试报告.docx
《IEEE754国际标准与实验测试报告.docx》由会员分享,可在线阅读,更多相关《IEEE754国际标准与实验测试报告.docx(6页珍藏版)》请在冰豆网上搜索。
IEEE754国际标准与实验测试报告
IEEE754国际标准浮点数存储格式实验测试报告
学号:
E
姓名:
郜伟
班级:
09级计算机科学与技术一班
IEEE754国际标准浮点数存储格式实验测试报告
【摘要】浮点数的表示形式在不同的算法下千变万化,为了方便算法软件、数据等之间的移植和交流,1985年IEEE协会制定了IEEE754标准。
本文在查阅和分析大量有关IEEE754国际标准的资料基础上,利用C语言编程规范,以实验的形式将浮点型储存格式在win7系统上显示出来,加深了对IEEE754标准的理解。
【关键词】IEEE;EEE754;浮点数;浮点数存储格式;规格化;C语言测试
一、IEEE754国际标准简介
在IEEE754标准之前,世界上没有浮点数统一的表示形式。
这样就导致了许许多多的浮点数表示格式出现。
随着互联网的普及和技术间交流,这种没有统一标准的浮点数表示方法逐渐成为学术交流中得障碍。
为便于软件的移植,浮点数的表示格式应该有统一标准。
1985年IEEE(InstituteofElectricalandElectronicsEngineers)提出了IEEE754标准。
该标准规定基于基数为2的浮点数数N,从逻辑上用三元组{S,M,E}表示,储存格式如表1所示:
表1
高位---------------------------------------------------低位
S
E
M
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的值,将浮点数分成三种类型:
规格化、非规格化、特殊数值。
1.规格化
当E的二进制位既不全为0也不全为1时,则N为规格化形式。
此时e被称为偏置(biased)形式的整数,此时增设偏置量bias,则此时e与E,m与M的映射关系为:
e=|E|-bias,bias=2k-1-1
k为E的位数,单精度时k=8,bias=127;双精度时k=11,bias=1023
m=||
如:
E为,M为101时,|E|=132,e=132-127=5,m=||=||=。
2.非规格化
当E的二进制位全为0时,N则为非规格化形式。
此时e与E,m与M的映射关系为:
E=1-bias
M=||
非规格化数可以方便地表示0或者非常接近0的浮点数。
如将S=1,其他置0,则得出;同理,可得到+。
其他小数接近0,并且均匀接近0时,称为“逐渐下溢”属性。
3.特殊数值
当E的的二进制位全为1时,则N为特殊数值。
若M得二进制位全为0,则N表示无穷大,若S为1则为负无穷大,若S为0则为正无穷大;若M的二进制位不全为0(至少一位不为0),表示NaN(NotaNumber),表示N不是一个合法实数或无穷或者为未初始化。
实数的IEEE754标准的浮点数格式为:
具体有三种形式:
IEEE754三种浮点数的格式参数
三、浮点数存储格式
1.存储格式介绍
根据C语言的格式,浮点型有三种类型存在,即为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++上运行成功。
利用C库中的<>库的itoa(inti,strings,2);函数可将整型的i转化称二进制存放在字符串s中。
通过将s字符串显示出来就可直观地看到浮点型数在内存中存在格式情况。
单精度内存存储格式
测试代码与解释
#include<>
#include<>
voidmain(){
floata;点数的溢出(单精度)
根据上文可知,浮点型的数存放在内存中的形式并不可直观地读出来,必须经过一系列的转化才可称为十进制数。
查资料和计算可知在计算机中(C语言)单精度(float)和双精度(double)的取值范围为表3所示:
表3
精度
最小取值数
最大取值数
单精度(float)
×1038
×1038
双精度(double)
×10308
×10308
由前文的两个知识点中单精度和双精度比较可知,单精度和双精度的主要区别为存储的位数,为了简化工作量,本文只讨论单精度的溢出情况。
那么在当输入的实数超过浮点数所表达范围时,在内存中是如何显示的呢本文根据单精度的程序分别运行了×1038、×1038、×1038、×1038、×1038、×1038几个实数的内存情况,获得的结果如图10、11、12、13、14、15所示:
图10
图11
图12
图13
图14
图15
由实验的结果可以总结出:
若给出的实数N没有超过浮点数的范围时,其值在内存中正常储存;当给出的值N超出浮点数的范围时,则以特殊数值来存储,即E全为1,M全为0,S则根据原实数N的正负号来确定(正号为0,负号为1)(如上图所示)。
四、小结
IEEE754国际标准浮点数和其他数(如整型)在计算机的存储方式不同,理解起来有一定的难度。
本文通过熟悉的C语言环境验证和分析了浮点数在计算机中得储存方式。
加深了对IEEE754国际标准的理解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IEEE754 国际标准 实验 测试报告