博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浮点数在计算机中的保存
阅读量:4114 次
发布时间:2019-05-25

本文共 914 字,大约阅读时间需要 3 分钟。

计算机用二进制来表示数字,浮点数也是如此:首先了解如何用二进制表示小数(也就是如何把十进制小数转化为二进制表示):举一个简单例子,十进制小数 10.6251)首先转换整数部分:10 = 1010b2)小数部分0.625 = 0.101b (用“乘2取整法”:0.625*2=1.25,得第一位为1,0.25*2=0.5,得第二位为0,0.5*2=1, 得第三位为1,余下小数部分为零,就可以结束了)3)于是得到 10.625=1010.101b换个表示方式更加深入理解:1*(10^1)+0*(10^0)+6*(10^-1)+2*(10^-2)+5*(10^-3) = 1*(2^3) + 0*(2^2) + 1*(2^1) + 0*(2^0) + 1*(2^-1) + 0*(2^-2) + 1*(2^-3)4) 类似十进制可以用指数形式表示:10.625=10625*(10^-3)所得的二进制小数也可以这样指数形式表述:   1010.101b=1010101 * (2^-3)也就是用有效数字a和指数e来表述: a * (2^e)用一个32bit的空间(bit0~bit31)来存储这么一个浮点数,如此分配存储空间:bit0 ~ bit22 共23bit,用来表示有效数字部分,也就是a,本例中a=1010101bit23 - bit30 共8个bit,用来表是指数,也就是e,范围从-128到127,实际数据中的指数是原始指数加上127得到的,如果超过了127,则从-128开始计,所以这里e=-3表示为124bit31 为符号位,1表示负数,这里应该为0把上述结果填入32bit的存储器,就是计算机表示小数10.625的形式。注意这个例子的特殊性:它的小数部分正好可以用有限长度的2进制小数表示,因此,而且整个有效数字部分a的总长度小于23,因此它精确的表示了10.625,但是有的情况下,有效数字部分的长度可能超过23,甚至是无限多的,那时候就只好把后面的位数截掉了,那样表示的结果就只是一个近似值而非精确值;显然,存储长度越长,精度就越高,比如双精度浮点数长度为64位,1位符号位,11位指数位,52位有效数字。

转载地址:http://yugsi.baihongyu.com/

你可能感兴趣的文章
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>
Oracle -常用命令
查看>>
JAVA技术简称
查看>>
ORACLE模糊查询优化浅谈
查看>>
2016——个人年度总结
查看>>
2017——新的开始,加油!
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.1、类和实例
查看>>