美文网首页
计算机中的浮点数表示

计算机中的浮点数表示

作者: 0爱上1 | 来源:发表于2019-06-09 12:35 被阅读0次

1985年,随着IEEE标准754的推出,制定出了浮点数的统一表示以及运算的标准

目前,所有的计算机都支持这个标准,为科学应用程序在不同机器上的可移植性鉴定了基础

IEEE 754标准

计算机是不认识.的,那么二进制小数中的点需要被保存下来,它是如何保存的呢?

IEEE浮点标准用 V = (-1)s * M * 2E
表示一个浮点数

  • 符号位s,决定这是一个正数还是一个负数,当s为0时为正数,1时为负数

  • M位,即有效数字位,该值是一个二进制小数,它的范围为(大于1,小于2)

  • E指数位,又称阶码位,作用是对浮点数加权

IEEE 754规定,数字系统中的浮点数是对数学中小数的近似,同时规定表达浮点数的0,1序列被分为三部分(三个区域)

浮点数表示.png

对于32位单精度浮点数来说,exponent的宽度为8,fraction位宽度为23表示实际的值M

表示规则:
如125.12510

  1. 首先将十进制小数转为二进制小数,得到1111101.0012

  2. 将二进制小数转为IEEE浮点数标准格式V,即1.111101001 * 26

  3. 对照以上图示,sign符号位为0,表示正数,exponent表示科学计数法的指数部分,注意:这里所填的指数并不是前面计算出来的6,而是等于实际指数值6加上一个(指数偏移值),对于32位单精度浮点数来说,偏移值127,所以exponent值为127 + 6 = 133 ,二进制表示为10000101

  4. fraction表示有效字位,又叫尾数,即2. 中二进制表示值得小数部分(为何是小数部分,因为1默认省略掉了)即111101001,再补齐至23位,即得到fraction处位表示为:11110100100000000000000

  5. 因此32位单精度浮点数125.12510在计算机中被表示为
    0 10000101 11110100100000000000000 空格是为了区分三段得

对于64位双精度浮点数来说,exponent段为11位,偏移值1023,fraction段长度为52位(64 - 1 - 11)

最后

我们知道在任意两个不等的实数之间总有无穷多个两两不等的实数,但浮点数不是这样,浮点数是稀疏的,两个浮点数之间只有有限个浮点数,并且两个相邻的浮点数之间的距离可能很大,这就是精度的问题

比如两个相邻的32位单精度浮点数

01111110100000000000000000000001

01111110100000000000000000000000
在32位单精度浮点数中,他们两个是相邻的数,但他们的差值却高达1.014 * 10的31次方

也就是说,处于他们差值以内的数都无法表示

64位双精度浮点数不仅表示得数得范围扩大了,而且其所刻画得浮点数分布更加细密,相对误差也更小

但无论如何,浮点数终究只是实数(小数)得粗糙近似,不可能完全刻画实数,因为浮点数得位数终究是有限的,也就是说他所能表示的总是有限个有理数

最后,推荐一篇关于单精度和双精度浮点数的区别的好文
java浮点类型float和double的主要区别

实数转换流程图

实数转换流程.png

相关文章

  • 1.2 浮点型运算

    在计算机中,浮点数虽然表示的范围大,但是,浮点数有个非常重要的特点,就是浮点数常常无法精确表示。浮点数在内存的表示...

  • MySQL浮点计算存在的问题与解决方案

    在计算机中,浮点数往往很难精确表示,那么浮点数运算结果也往往难以精确表示。MySQL同样也存在这个问题。 解决方案...

  • 点滴笔记(2018年08月24日更新)

    问:浮点数为什么存在精度问题? 计算机中的浮点数对应于数学当中的小数。简单计算下,32位浮点数最多可以表示2^32...

  • iOS浮点数精度问题

    前言 浮点数是无法精确表示大部分实数的 单精度浮点数和双精度浮点数 单精度(float),一般在计算机中存储占用4...

  • 《深入理解计算机系统》Part1 02:信息的表示和处理

    摘要:本章首先介绍了信息在计算机中的表示方法,其次主要介绍了整数和浮点数在计算机中的二进制表示方法及其运算。关键词...

  • IEEE浮点数表示

    该文主要介绍一个浮点数在计算机中的表示,属于很底层的知识点 介绍计算机如何表示浮点数之前,先了解一下日常生活中,我...

  • Python避坑:浮点数运算出现不确定尾数

    什么是不确定尾数 我们都知道在计算机中数据由二进制表示,而浮点数则是小数的一种二进制表示方法。 由于浮点数存在精度...

  • 计算机中浮点数的二进制表示

    博客链接:http://www.ideabuffer.cn/2017/05/17/计算机中浮点数的二进制表示/ 简...

  • 计算机中浮点数的表示

    浮点数转二进制浮点数 整数部分: 整数部分不断除以2,保存商和余数。 判断商是否等于0,如果等于0到第3步,否则回...

  • Python基础

    数据类型和变量 整数Python可以处理任意大小整数,在计算机中,有时会使用十六进制表示。 浮点数浮点数的小数点位...

网友评论

      本文标题:计算机中的浮点数表示

      本文链接:https://www.haomeiwen.com/subject/zvngxctx.html