浮点数在计算机中如何存储

博客介绍了计算机中浮点数用科学计数法存储,以3.14和0.0314为例说明。还展示了将小数0.3转化为二进制数的过程,发现其为无尽循环小数。同时指出Java中float和double类型浮点数有字节限制,如float存储数值只剩23bit,会舍弃23位后的二进制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在计算机中,浮点数是用科学计数法存储的,不管数值多大都是计数到小数点后一位,

3.14=0.314E2  0.0314=0.314E-1,前面一位是符号为,后跟指数,再跟数值。然后把一个

小数转化成二进制数是这样的:

例如:0.3

计算:

      0.3*2=0.6…………0

      0.6*2=0.2…………1

      0.2*2=0.4…………0

      0.4*2=0.8…………0

      0.8*2=0.6…………1

      0.3*2=0.6…………0

      0.6*2=0.2…………1

      0.2*2=0.4…………0

      0.4*2=0.8…………0

      0.8*2=0.6…………1

………………..

从上往下得出:01001 01001 01001 …….

然后我们发现这是一个循环,虽然我们用10进制表示0.3是一个有尽小数,然而转换成二进制,它是一个无尽小数。而java中不管是float还是double类型的浮点数都是有字节限制的,float除了符号位跟指数部分,存储数值只剩下23bit(位),所以计算到23位以后的2进制都会舍弃,所以,计算机中,存储0.3

—> 0 (第一位符号位,表示正数)  00000000(8位指数部分,这里是0,然后指数的正负忘记怎么存的了,反正记得它是不占字节的)

—>  01001 01001 01001 01001 010(23位表示0.3的数值,这里存的是补码,因为正数的补码还是它本身)

连贯起来就是计算机保存—> 00000000001001010010100101001010

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值