
- 1,float,double的内存
- 2,二进制小数
- 3,IEEE754标准
- 表示:二进制的科学计数法
- 存储:32位浮点数
- 存储:64位浮点数
- SME
- 4,float的5.0
- 5,double的5.0
调试代码:
#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
1个S,8个E,剩下的23个M。
1个S,11个E,剩下的52个M。
SMES:1位,0或1。
原封不动。
M:8或11位。
因为总是以1开头,故去掉,拿出来的时候补上。
E:无符号,23或52位。
为了表示有符号的数,要加上127或者1023。
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,和案例完全一致。
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
和案例完全一致。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)