float存数空间是否大于long的?

最为一个常识,我们都知道浮点型在内存中占用的是 4 个字节的空间,而 long 型占用的是 8 个字节的空间。可是为什么 4 个字节的 float 型的最大值会大于 long 型的最大值呢?
我们都知道,float 类型的范围是:一 3.403E38~3.403E38。而 long 类型的范围是:-263~263-1(大概是 9*10^18)。
我以前也是简单的记住就算完事了,对于它为什么会这样却没有考虑过。
下面给大家分享一下我现在的理解:
long 整型数,在内存中占用 8 个字节共 64 位,它表示的数值有 2 的 64 次方,平分正负,数值范围是负 2 的 63 次方到正 2 的 63 次方 - 1。
而 float 在内存中占 4 个字节,共 32 位,但是浮点数在内存中是这样的:
V=(-1)^s * M * 2^E
667x190
浮点数的 32 位不是简单的直接表示大小,而是按照一定的标准分配的。
其中第 1 位,符号位,即 S。
接下来的 8 位,指数域,即 E。
剩下的 23 位,小数域,即 M,M 的取值范围为 [1,2)或 [0,1)。
也就是说,浮点数在内存中的二进制值不是直接转换为十进制数值的,而是按照上述公式计算而来,通过这个公式,虽然只用到了 4 个字节,但是浮点数却比长整型的最大值要大。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值