浮点数计算方式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.3.4二进制转10进制及10进制转为二进制

【例2-3-4】

把二进制110.11转换成十进制数,及十进制转为二进制。

解:

(110.11)2 =1×22+1×21+1×20+1×2-1+1×2-2

=4+2+0+0.5+0.25=(6.75)10

把十进制转换为二进制

解:

2 6 0

2 3 1

1 1

所以实数部分为110

0.75×(2×2-1)=0.75×2×2-1

=1×2-1+0.5×2-1

=1×2-1+1×2-2

所以结果为:(110.11)2

2.3.5 浮点数在计算机中存储形式

当前主流微机中广泛采用的IEEE754标准浮点格式。

按IEEE754标准,常用的浮点数(32位短实数)的格式如图2-3所示。

IEEE754标准浮点格式

N=2e.M (M为浮点尾数,为纯小数,e为浮点数的指数(阶码))尾数部分决定了浮点数的精度,阶码决定了表示范围32为浮点数(IEEE754标准格式0—22为尾数M,23-30为阶码E,31为符号位S),阶码用移码表示。阶码E=指数真值e+127 规格化真值x=(-1)^S*(1.M)*2^(E-127)

将(82.25)10 转换成短浮点数格式。

1)先将(82.25)10 转换成二进制数

(82.25)10 =(1010010.01)2

2)规格化二进制数(1010010.01)2

1010010.01=1.01001001×2 6

尾数M=01001001

3)计算移码表示的阶码=偏置值+阶码真值:

E=127+6=133=10000101

4)以短浮点数格式存储该数

因此:符号位=0 S=0表示该数为正数

阶码=10000101 由3)可得

尾数=01001001000000000000000 由2)可得;尾数为23位,

不足在后面添15位0 所以,短浮点数代码为:

0;10000101;01001001000000000000000

表示为十六进制代码为:42A48000H

IEEE754有3种浮点表示格式,分别称为:短浮点数(或称短实数(Single,Float))、长浮点数(或称长实数(Double))、临时浮点数(或称临时实数(延伸双精确度,不常用))。它们的具体格式如表2-4所示。

表2-4 IEEE754的3种浮点表示格式

【例2-3-5】

#include"stdio.h"

main()

{

float a=22.2;

float b=51.44;

printf("a=%f,b=%f",a,b);

char v; /*定义一个字符型的变量,用来防止程序太短运行闪一下就没了*/ v=getchar(); //从屏幕上接收字符

}

运行结果如图2-3-5

运行如图2-3-5

22.2的二进制为:10110.00110011001100110011001100110011(为无限循环小数,以0011为循环块)

IEEE754代码为:0(符号位一位);

10000011(阶码八位);

(尾数23位)01100011001100110011001(23位结束);

余下位数1001100110011

因为在进行浮点数操作时会有四舍五入的操作

结果所以IEEE754代码应该为:0;10000011;01100011001100110011010

=22.200000762939453125

取值时按四舍五入只截取后6位小数于是值为22.200001

同理51.44的二进制为:110011.0111000010100011110101110000101(为无限循环小数,)IEEE754代码为:0(符号位一位);

10000100(阶码八位);

(尾数23位)10011011100001010001111(23位结束);

余下位数0101110000101

因为在进行浮点数操作时会有四舍五入的操作

结果所以IEEE754代码应该值不变:0;10000100;10011011100001010001111 =51.439998626708984375

取值时按四舍五入只截取后6位小数于是值为51.439999

Welcome To Download !!!

欢迎您的下载,资料仅供参考!

相关文档
最新文档