float类型在计算机中的存储

文章探讨了Java中的float类型为何能表示比int更大的范围,主要原因是float使用指数表示法存储数值,其中1位表示符号,8位表示指数(实际存储为指数加127),23位表示尾数。这种存储方式允许表示更大范围的数值,但同时也导致了浮点数的不精确性,特别是小数部分通常无法精确表示。
摘要由CSDN通过智能技术生成

在学习到java这一块的时候对于float类型为什么能比int表示范围大那么多感到困惑,查了一些资料后记录下自己的学习。


不同于int类型的老老实实的存储,float类型用的指数表示法存储。

举个例子来说:

(十进制)10.625 => (二进制-老实版)1010.101 => (二进制-指数版)1.010101*2^3

float类型用1位表示整体的正负,8位表示指数,23位表示尾数

符号位(1位)

指数位(8位)

尾数位(23位)

0表示正数

1表示负数

存储指数表示法中2的x次方中的x,实际存储为x+127

不同于平时习惯的专门拿一位来表示符号,8位可以表示0~255,127相当于0,正三就是130,负二就是125

...2^3,2^2,2^1,2^0,2^-1,2^-2,2^-3...

整数部分正常表示,小数部分其实是2的负次方,很多时候都是表示不尽,所以浮点型是不精确的。

小数点左边都是1,所以只要存储小数点右边即可。

(正数)

0

(3+127=130)

1000 0010

(指数表示法小数点后的二进制,不足用0补齐)

0101 0100 0000 0000 0000 000

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辞白zhweii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值