浮点数在内存中的表示

浮点数在内存中的表示

ID:45686228

大小:38.50 KB

页数:3页

时间:2019-11-16

浮点数在内存中的表示_第1页
浮点数在内存中的表示_第2页
浮点数在内存中的表示_第3页
资源描述:

《浮点数在内存中的表示》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、浮点数的表示VB、C/C++的浮点数据类型有single(float)和double两种。 类型single(float)占4字节,即32位,格式如下:高位低位

2、 符号位 

3、   阶码  

4、         尾数         

5、

6、 1bit 

7、  8bit  

8、        23bit        

9、类型double占8字节,即64位,格式如下:高位低位

10、 符号位

11、     阶码   

12、         尾数         

13、

14、  1bit 

15、    11bit  

16、        52bit       

17、符号位决定浮点数的正负,0表示正,1表示负。阶码和尾数均从二进制科

18、学计数形式中获取。如,十进制数8.25的二进制形式为1000.01,转换为规格化的科学计数法形式为(1.00001)*(23),其整数部分必须是1,由此推得指数为3(二进制11),尾数(即科学计数法的小数部分)为00001。根据浮点数的存储标准(IEEE制定),single(float)类型阶码(指数)的起始数为127(二进制01111111),double类型阶码(指数)的起始数为1023(二进制01111111111),在此基础上加指数得到的就是阶码的表示形式。尾数则直接填入,如果空间多余则以0补齐,如果空间不够则0舍1入。整数部分1隐含不填,所以float和double类型分别

19、表示的8.25如下(二进制):single(float)

20、符号位

21、   指数  

22、           尾数

23、  0 

24、10000010

25、00001000000000000000000十六进制41040000double

26、符号位

27、     指数    

28、                尾数

29、  0 

30、10000000010

31、0000100000000000000000000000000000000000000000000000十六进制4020800000000000十进制数8.25可以用二进制小数准确表示,但很多小数不可以准确表示,其二进制形式的小数部分会无限循环,如-1.2表示如下

32、(二进制):single(float)

33、符号位

34、   指数  

35、           尾数       

36、  1 

37、01111111

38、 00110011001100110011010 double

39、符号位

40、      指数   

41、                尾数

42、  1 

43、01111111111

44、0011001100110011001100110011001100110011001100110011由于对无限循环尾数的截取遵循0舍1入。-1.2的single(float)形式,最后三位因进位而成010,得到的是过剩近似值;而-1.2的double形式则没有进位发生,得到的是不足近

45、似值。   类型single(float)和double通过==,>,<等比较不会引起编译错误,但是非常可能得到错误的结果。这是因为它们的格式不同,不可以直接比较。正确的方法是转换为同一类型后比较两者差值,如果结果小于规定的小值,则视为相等。实数0.0无论single(float)和double形式均以全“0”字节表示。参考:1)IEEE浮点数标准:  4字节浮点数:1位符号位,8位阶码(基数为127的移码),23位尾数;8字节浮点数:1位符号位,11位阶码(基数为1023的移码),52位尾数2)在VB、VC中:float数值范围约在-10e38~10e38,并提供7位有效数字位,绝

46、对值小于10e38地数被处理成零值double数值范围约在-10e308~10e308,并提供15~16位有效数字,绝对值小于10e308地数被处理成零值最后提供一个笔者用VC++编的小程序,可将双精度类型的数据转化成字符数组,再输出每个字节的十六进制值,即可知道数据在内存中是如何存储的,读者可自行改变数据类型以适应不同的情况。注:在PC系列计算机中数据的低字节在前高字节在后。#includeunionfp_char{unsignedcharc[8];doublef;}fui;main(){fui.f=8.25;printf("%x",fui.c[0]);pri

47、ntf("%x",fui.c[1]);printf("%x",fui.c[2]);printf("%x",fui.c[3]);printf("%x",fui.c[4]);printf("%x",fui.c[5]);printf("%x",fui.c[6]);printf("%x",fui.c[7]);return0;}

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

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

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