float,double数据类型在内存中的存储方式

float

float在内存中用四个byte表示

符号位 sign指数位 exponent尾数 mantissa
1 bit8 bits23 bits

符号位:1正0负
指数位:范围从0~255,但实际的指数等于这里的指数减去127,所以真正的指数范围从-127~128。
尾数:23bit的尾数实际上表示24bit的数据,因为所有二进制小数都可以表示成1.xxxx xxxx…。所以在表示24bit的二进制小数时,1可以省略。

例如4.5在内存中表示为:
二进制形式:100.1==>1*2^2 + 0*2^1 + 0*2^0 + 1*2^-1 = 4.5

内存中:

符号位 sign指数位 exponent尾数 mantissa
01000 00010010 0000 0000 0000 0000 000

合起来为:

0100 0000 1001 0000 0000 0000 0000 0000
0x40 90 00 00

将内存形式再转换回十进制形式的4.5:

1.0010 0000 0000 0000 0000 000(尾数) * 2^2(指数129-127=2)=100.1000 0000 0000 0000 0000 0

又如0.1在内存中表示为:
二进制形式:0.0001 1001 1001 1001 1001 1001 1010==>0x0.199999A
内存中:

符号位 sign指数位 exponent尾数 mantissa
00111 10111001 1001 1001 1001 1001 101

合起来:

0011 1101  1100 1100 1100 1100 1100 1101
0x 3D CC CC CD

double

float在内存中用8个byte表示

符号位 sign指数位 exponent尾数 mantissa
1 bit11 bits52 bits

具体存储形式和float相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值