31天C语言进阶——2,数据存储:浮点数

31天C语言进阶——2,数据存储:浮点数,第1张

文章目录
  • 1,float,double的内存
  • 2,二进制小数
  • 3,IEEE754标准
      • 表示:二进制的科学计数法
      • 存储:32位浮点数
      • 存储:64位浮点数
      • SME
  • 4,float的5.0
  • 5,double的5.0

1,float,double的内存

调试代码:

#include
int main() {
	float a = 5.0f;
	double b = 5.0;

	return 0;
}

调试结果:

float:

double:

2,二进制小数

0.1代表2的-1次方,也就是0.5
0.01代表0.25
依次类推。0.11代表0.75

有些数值无法准确的表示,因为2的次方组合起来不能完全等于。

3,IEEE754标准 表示:二进制的科学计数法

符号位S:0正1负。
有效数字M:从左往右所有数字,从非0值开始。
位数E:小数点与第一个数字的距离。

举例:9.0,1001点0000。

S:0
M:1.001
E:3

存储:32位浮点数

1个S,8个E,剩下的23个M。

存储:64位浮点数

1个S,11个E,剩下的52个M。

SME

S:1位,0或1。
原封不动。

M:8或11位。
因为总是以1开头,故去掉,拿出来的时候补上。

E:无符号,23或52位。
为了表示有符号的数,要加上127或者1023。

4,float的5.0

101.0

S:0
M:101,去掉1变成:01,后面全部补0
E:2,加127变成129,也就是1000 0001

0
1000 0001
0100 0000 0000 0000 0000 000
=》
0100 0000 1010 0000 0000 0000 0000 0000

进制转换:https://www.osgeo.cn/app/s1653
2变16:
40 a0 00 00,和案例完全一致。

5,double的5.0

101.0

S:0
M:101,去掉1变成:01,后面全部补0
E:2,加1023变成1025,也就是10000000001

0
10000000001
0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
=》
0100 0000 0001 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

2变16:
40 14 00 00
00 00 00 00
和案例完全一致。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/866854.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-12
下一篇2022-05-12

发表评论

登录后才能评论

评论列表(0条)

    保存