为什么float4个字节比long8个字节所表示的数值范围还大?

本文探讨了在Java中,4字节的float型数值范围为何能超过8字节的long型。通过解析float的存储结构,包括符号位、指数和尾数,揭示了其能表示更大数值的秘密。float的指数部分允许表示从-127到128的值,在规约形式下,最大指数可达2^127,使得float能表示极大的数值。此外,信息论角度的分析进一步解释了为何32位二进制能容纳更多信息。
摘要由CSDN通过智能技术生成

为什么float4个字节比long8个字节所表示的数值范围还大?

引言

在Java语言中,我们知道基本数据类型包括数值型、字符型以及布尔型。其中数值型包括整数类型(byte、short、int、long)和浮点类型(float、double)。long型占用8个字节的存储空间,即64bit,最左边一位是符号位,0表示正,1表示负,其余63位存储数值,所以long型可以表示的数值范围为-263到263-1。这个很好理解,而float型占用4个字节,即32bit,所表示的数值范围为-3.403E38到3.403E38,这个数值范围是要大于long型所表示的数值范围的。为什么会这样呢?要搞懂这个问题,就先要明白float型是如何存储的。

float型的存储方式

为了方便说明,这里借用维基百科中【单精度浮点数】定义[1]中的一张图。
float型数的存储方式
其中,左边第一位为符号位,0表示正,1表示负。上图中sign为0,所以为正数。

中间8bit表示指数,但是这里和byte不同,byte型也是8bit,表示的数值范围是-27到27-1,即-128到127。这里exponent的8bit表示的则是-127到128。在IEEE 754(IEEE二进制浮点数算术标准)[2]中规定,在指数的实际值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值