IEEE754关于double格式定义的认识

利用计算机对有理数集合进行存储,想完全表示出来肯定是不行的,有理数集是无限集,而计算机的存储空间是有限的,因此在设计数据类型时就应当考虑到这些因素。

而在考虑的所有的因素中,要求同样的存储空间尽可能多存储不同的数,要求在有理数集中每个数在计算机数据类型中的映射与真实值得相对误差也要尽可能的小。这两个因素就相对而言最重要,我想这也是IEEE定义double的主要考虑方面。


比如,我们的尾数为什么要最后加1,为什么指数(阶数)的基是2,不是10或者其他的数等等。

首先,如果我们尾数不加上1的话,那么尾数的范围就是 0 - 1,乘以2,就是 0 - 2,再乘以2就是 0 - 8,因此我们发现,会有不少的有理数居然有好多种表示方式,这完全浪费了稀缺的存储空间。 同理 尾数加上2的话也存在这个问题。 


然后,我们的指数的基为什么不是 10或者其他的进制,假如是10的话,我们会发现,我们能表示的数,就变成 1-2,10-20,0.1-0.2等等,在最重要的2-10,20-100之间居然没有相对应的数来表示,这显然不符合实际情况。


那么我们就想了,既然这样不行,我们能不能改成基是8,尾数的小数点往后移,以使得尾数的范围是 1-8?这样造成的结果就是精度降低,数的范围扩大,看起来没有其他的问题,我想了一下也没有什么逻辑上的或者表示上的硬伤,但感觉就不如 基为2 ,尾数范围是1-2来的简便,我想这一类型的表示方法应该也行,只是要写成一个协议,还是用最符合人的习惯的方式吧。


以上也说明,尾数的位数决定了我们的精度,(当然,对于在下溢线与0之间的数而言,由于处于理论上溢出,所以就不考虑,这里只针对没有溢出的数而言)。

指数的位数决定了我们的最大的数的上限,所以这二者之间的位数分配要考量精度高还是范围大的实际情况来分配。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值