浅谈浮点数的存储方式

5人阅读 评论(0) 收藏 举报

    在谈浮点数的存放方式之前,我们先来复习一些有关于位和字节的基本的知识:

    我们知道1字节=8位(1Byte=8bit),也就是说一个字节里面有八个位置,用来存放0和1这两种状态。而浮点数有float和double两种类型,我们先说比较简单的float类型,因为float类型只有四个字节,也就是一共有32位(4*8)。就是有32个位置来存放0和1.

    复习完这些知识,我们在来看一下浮点数的表示方法

    数字有正有负,同样的,浮点数也不例外。其最高位用来保存符号,这样就剩下了31位,那其他的信息是怎么保存的呢?我们来看一张图片就了解了。


    我们以12.5作为例子,12.5转换为二进制为1100.1 再将它表示为科学记数法(方法和十进制一样)为1.1001*2^3  其中有两个数字需要保存就是小数点后面的数字1001,以及指数3  。这时候有的人可能会问了,为什么不保存小数点前面的1呢?这是因为所有的数字在用科学记数法表示的时候,其前面都是1,你也可以自己写一些数字来验证一下。比如下面的0.125,写成科学记数法就是1*2^-3,他的小数点右边也是1,左边都是0所以没有写出。

    我们首先需要保存的是指数位,指数位有正有负,但是我们已经有了最前面的整个数字的符号位,所以这时候如果再加一个符号位的话就会显得有点冗余。指数位最大有一个字节,总共有八位,最多可以保存256个数字,即0~255,但是又不能保存负数,于是我们可以这样来保存其指数位,将0~255最中间的数字127看作其中间节点(就相当于坐标轴上面的坐标原点即0)这样再来看其指数的话就容易多了。要保存3,只需要给127(相当于坐标原点0)加上3就好了即130,如果要保存的是-3,这时候只需要给127减去3就好了,道理就和上面类似。所以这时候我们就需要在指数位上面保存的是130,将130转换为二进制为10000010。

    指数位保存好了,接下来就直接保存小数点右边的数字就好了,也就是在剩下的23位里面保存1001,空余的位数上面补上0就好了,一定要将0补在右边,在这里保存的是小数,小数是在后面加0.

    这样,浮点数的保存也就保存完了。

查看评论

浮点数在内存中的存储形式

 浮点数:     浮点型变量在计算机内存中占用4字节(Byte),即32-bit。遵循IEEE-754格式标准。一个浮点数由2部分组成:底数m 和指数e。     ±mantissa × 2expo...
  • xiaozhi_su
  • xiaozhi_su
  • 2009-04-25 20:26:00
  • 4931

浮点数在计算机中存储的方式

浮点数在计算机中的存储1996年6月4日,欧洲最新的无人驾驶火箭Ariane5初次航行时,发射后仅37秒,火箭偏离了它的飞行路径,解体并且爆炸。火箭上载有价值5亿美元的通信卫星。科学家们进行调查之后,...
  • Move_now
  • Move_now
  • 2016-10-16 23:45:26
  • 1134

深入理解计算机系统-之-数值存储(五)--浮点数在内存中的存储方式

前景回顾前面我们了解到依据CPU的端模式的架构不同,数据的存储的字节序也不同 BE big-endian 大端模式,最直观的字节序 地址低位存储值的高位,地址高位存储值的低位 ,数据填写时,不要考...
  • gatieme
  • gatieme
  • 2016-02-21 17:19:14
  • 3057

浮点数在计算机中存储方式---IEEE754格式存储

简单总结: 单精度浮点数: 1位符号位   8位阶码位   23位尾数 双精度浮点数: 1位符号位   11位阶码位   52位尾数 单精度float型存储在内存中的大小为4个字...
  • changgui5211
  • changgui5211
  • 2015-07-12 01:41:30
  • 1030

C语言浮点数存储方式

对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用 32bit,double数据占用 64bit.其实不论是float类型还是double类型,在计算...
  • qq_35057840
  • qq_35057840
  • 2016-09-04 10:08:37
  • 2405

算法竞赛入门经典------浮点数整数在内存中的存储方式

算法竞赛入门经典---浮点数整数在内存中的存储方式 参考文章:http://www.cnblogs.com/zxtp/p/4938742.html 1、数据的存储方式:大端模式和小端模式 ...
  • liyuqian199695
  • liyuqian199695
  • 2017-02-18 19:10:06
  • 542

浮点数在计算机中存储方式(转)

作者: jillzhang    联系方式:jillzhang@126.com    本文为原创,转载请保留出处以及作者, 谢谢    C语言和C#语言中,对于浮点类型的数据采用单精度类型(float...
  • wuna66320
  • wuna66320
  • 2007-07-15 11:01:00
  • 5485

C++浮点数的存储方式

类型float大小为4字节,即32位,内存中的存储方式如下: 最高位 31 位 ,保存符号位 S,“0”表示正数 ,“1”表示负数 第30 位~23 位 ,共 8 位 ,保存指数部分(指数值加上偏...
  • qq_34342154
  • qq_34342154
  • 2018-02-24 18:18:24
  • 35

Java 浮点数是如何存储的?

看一个面试题,   考察面试者对浮点数存储格式的理解 : public class Float_Double { public static void main(String[] args) { ...
  • aduovip
  • aduovip
  • 2015-08-17 18:37:21
  • 2619
    个人资料
    等级:
    访问量: 92
    积分: 55
    排名: 167万+
    文章分类
    文章存档