zoukankan      html  css  js  c++  java
  • 计算机中如何表示数字-07IEEE754浮点数标准

    由于不同机器所选用的基数、尾数位长度和阶码位长度不同,因此对浮点数的表示有较大差别,这不利于软件在不同计算机之间的移植。为此,美国IEEE(电器及电子工程师协会)提出了一个从系统角度支持浮点数的表示方法,称为IEEE754标准(IEEE,1985),当今流行的计算机几乎都采用了这一标准。
    IEEE754标准在表示浮点数时,每个浮点数均由三部分组成:符号位S、指数部分E和尾数部分M,如下:
    符号位S 指数E 尾数M
     IEEE754标准的浮点数采用以下四种基本形式:
    1.单精度(32位):E=8位,M=23位;
    2.拓展单精度:E>=11位,M=31位;
    3.双精度(64位):E=11位,M=52位; 
    4.拓展双精度:E>=15位,M>=63位。
    例:标准32位单精度浮点数各部分规定
    S:数符,0表示‘+’,1表示‘-’;E:指数,既阶码部分,其中包括1位阶符和7位数值,采用移127码,既移码值位127。所谓‘移127’码是一种特殊的移码,指阶码部分采用的移码的值与实际数据的指数的值满足关系:阶码=127+实际指数值。规定阶码的取值范围为1~254,阶码值255和0用于表示特殊值。M:尾数共23位,用源码的规格化表示。由于采用规格化表示,所以IEEE754标准约定在小数点左边有一位隐含位为1,从而使尾数的实际有效位为24位,既尾数的有效值为1.M。综上,32位单精度浮点数所表示的数值N为:
    N=(-1)S * 1.M * 2^(E-127)
    IEEE754标准32位单精度浮点数的解释如下:
    若E=0,且M=0,则N为0。
    若E=0,且M<>0,则N=(-1)^s*2^(-126)*(0.M),为非规格化数。
    若1<=E<=254,则N=(-1)^s*2^(E-127)*(1.M),为规格化数。
    若E=255,且M<>0,则N=NaN(非数值)。
    若E=255,且M=0,则N=(-1)^s*(无穷大)。在java当中有被更加详细的划分为正无穷大和副无穷大。 
    标准64位双精度浮点数也可以同理的得到。
    Java中浮点数,既float和double,都是采用的IEEE754标准。
  • 相关阅读:
    在Livemedia的基础上开发自己的流媒体客户端
    开源流媒体处理库live555服务器端、客户端源代码分析总结
    海康、大华IpCamera RTSP地址和格式
    专题:Windows编译x264、SDL、faac、ffmpeg过程
    linux下c/c++ IDE开发工具介绍
    socket选项自带的TCP异常断开检测
    logstash-input-jdbc实现mysql 与elasticsearch实时同步(ES与关系型数据库同步)
    哈希存储、哈希表原理
    APM系列-国外新兴厂商New Relic vs. AppDynamics
    SkyWalking 分布式追踪系统
  • 原文地址:https://www.cnblogs.com/xieji233/p/6155647.html
Copyright © 2011-2022 走看看