单双精度浮点数的ieee标准格式

单双精度浮点数的ieee标准格式

ID:35212099

大小:42.00 KB

页数:4页

时间:2019-03-21

单双精度浮点数的ieee标准格式_第1页
单双精度浮点数的ieee标准格式_第2页
单双精度浮点数的ieee标准格式_第3页
单双精度浮点数的ieee标准格式_第4页
资源描述:

《单双精度浮点数的ieee标准格式》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、单双精度浮点数的IEEE标准格式  目前大多数高级语言(包括C)都按照IEEE-754标准来规定浮点数的存储格式,IEEE754规定,单精度浮点数用4字节存储,双精度浮点数用8字节存储,分为三个部分:符号位、阶和尾数。阶即指数,尾数即有效小数位数。单精度格式阶占8位,尾数占24位,符号位1位,双精度则为11为阶,53位尾数和1位符号位,如下图所示:单精度浮点数存储格式 s指数  尾数                                                              31        30                 23

2、 22                  0双精度浮点数存储格式 s 指数尾数                                                               63       62                 52 51                  0       细心的人会发现,单双精度各部分所占字节数量比实际存储格式都了一位,的确是这样,事实是,尾数部分包括了一位隐藏位,允许只存储23位就可以表示24位尾数,默认的1位是规格化浮点数的第一位,当规格化一个浮点数时,总是调整它使其值大于等于1而小于2,亦即个位

3、总是为1。例如1100B,对其规格化的结果为1.1乘以2的三次方,但个位1并不存储在23位尾数部分内,这个1是默认位。       阶以移码的形式存储。对于单精度浮点数,偏移量为127(7FH),而双精度的偏移量为1023(3FFH)。存储浮点数的阶码之前,偏移量要先加到阶码上。前面例子中,阶为2的三次方,在单精度浮点数中,移码后的结果为127+3即130(82H),双精度为1026(402H)。       浮点数有两个例外。数0.0存储为全零。无限大数的阶码存储为全1,尾数部分全零。符号位指示正无穷或者负无穷。下面举几个例子:单精度浮点数规格化移阶码 十进制符号

4、尾数                   -12-1.1x23  1100000101000000 00000000 00000000  0.251.0x2-2  0011111010000000 00000000 00000000  所有字节在内存中的排列顺序,intel的cpu按littleendian顺序,motorola的cpu按bigendian顺序排列。IEEE754标准的一个规格化32位浮点数x的真值可表示为x=(-1)^S*(1.M)*2^(E-127) e=E-12731  30                  23               

5、        0|S|            E      |             M    |[例1]若浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。解:将16进制展开后,可得二进制数格式为0    100,0001,0      011,0110,0000,0000,0000,0000S            E                                           M指数e=100,0001,0-01111111=00000011=(3)10包含隐藏位1的尾数1.M=1.011,0110,0

6、000,0000,0000,0000于是有x=(-1)^0*(1.M)*2^(E-127)               =+(1.011011)2*2^3      =(11.375)10 [例2]将数(20.59375)10转化为754标准的32位浮点数的二进制存储格式。解:首先分别将整数部分和小数部分转换成二进制(20.59375)10=+(10100.10011)2然后移动小数点使其在1,2位之间10100.10011=1.010010011*2^4 e=4于是得到:S=0,E=e+127=131,M=010010011最后得到32位浮点数的二进制存储格式为0

7、 100,0001,1 010,0100,1100,0000,0000,0000=(41A4C000)16从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储更高的精度。    任何数据在内存中都是以二进制(0或1)顺序存储的,每一个1或0被称为1位,而在x86CPU上一个字节是8位。比如一个16位(2字节)的short int型变量的值是1000,那么它的二进制表达就是:00000011 11101000。由于Intel CPU的架构原因,它是按字节倒序存储的,那么就因

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。