为什么四个字节的float表示的范围比八个字节的long要广

主要的原因是因为浮点类型和整数类型的存储结构不相同,整数类型在计算机底层采用补码方式存储,除去首位的符号位,剩余的位数即表示数值的范围,也就是位数越多,范围越大,比如long在内存中占用8个字节共64位,符号位占一位,数值范围是-2^63到正2^63-1

整数数据类型

·

数据类型字节范围
byte1 -128~127
short2-2^15~2^15-1
int4-2^31~2^31-1
long8-2^63~2^63-1

一个字节8位(2^7-1)从0到127

转化为二进制:0111 1111

最小位-128(-2^7)

转换位二进制1111 1111

第一位是符号位,0代表正数.1代表负数

当字节位2,4,8时同理。

浮点型数据类型

那么对于单精度浮点数float是采用这样的结构存储的,4个字节的浮点数。当然了double的结构也是这样,只不过double是8个字节(32位)的,下面依次介绍符号位、指数域和小数域的用处。

一旦浮点数的位数确定以后合理分配阶码和尾数的尾数

阶码越长,表示范围越大

尾数越长,表示精度越高

574a6798fb6141d9b969cf7dd1829c9c.jpg

float  4个字节32位:

1位符号位   8位指数位   23位尾数位,所表示的数值范围为:-3.403E38到3.403E38

float  8个字节64位:

1位符号位   11位指数位   52位尾数位,所表示的数值范围为:2^-128到2^127

符号位:用来存储正负符号的,0表示正数,1表示负数 

指数域:确定数的范围

小数域:确定小数的精度

浮点数的表示按照这个公式计算而来

V=(-1)^符号位 * 小数域 * 2^指数域

八字节long范围-2^63~2^63-1,四字节的float位2^-128~2^127

这样计算出的浮点数能够表示的范围会比长整型long表示范围大,且占用空间更小。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值