C++浮点数有效位的理解

文章详细解释了浮点数以二进制科学计数法的存储方式,包括符号位、指数位(8bit,范围0-255)和小数位。指数的正负通过特定划分来表示,小数位通过不断乘以2取整来表示。由于存储限制,某些小数会丢失精度,计算机存储时会取近似值。
摘要由CSDN通过智能技术生成

一直不明白这个于是上网搜了一下大致明白了

浮点数的存储

以二进制科学计数法的方式存储,形式为

符号位(正0负1)指数位(二的几次幂)小数位

Q1:无整数位?

A1:由于科学计数法,所有的整数位皆为1,0开头可以以负幂次方显示

指数位

占据 8bit,表示范围0-255

由于有小数点可左移也可右移,即幂有正负,于是做一个划分

0-126为负

127-255为正

//其中,127表示0。所以2的4次幂的表示:127+4=131,131再转为二进制表示

小数位

小数的二进制表示是不断地乘以2,取其整数部分,及其到1.0为止

有效位

看书过程中,前文:float 32有效位,后文 float最少保证6位有效位

其实,这指的是两种方式的有效位

32位有效位,二进制表示

符号 1bit 指数8bit 小数 32-9=24bit

6位有效位,十进制表示

我们可以用4位二进制数来表示0-9中的任意一个数,例如:9---1001

因此,小数部分的24bit可以除以4,来表示我们的小数。所以6位有效位

精度丢失

你会发现,有些小数乘以无数个2都无法达到1.0此等圆满境界

但是,小数存储位置有限

于是,计算机会取近似值来存储那些小数,精度因此降低

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值