IEEE754浮点数格式详解

   几乎所有计算机都支持二进制数据表示,即能直接识别二进制数据表示并具有相应的指令系统。通常采用的二进制定点数据表示主要有:符号数值、反码、补码以及带偏移增值码四种形式,其中最常用的是补码形式,这些都已在计算机组成原理课程中做了详细讨论,这里不再阐述。
  • 二进制浮点数的表示,由于不同机器所选的基值、尾数位长度和阶码位长度不同,因此对浮点数表示有较大差别,这就不利于软件在不同计算机间的移植。美国IEEE(电子及电子工程师协会)为此提出了一个从系统结构角度支持浮点数的表示方法, 称之为IEEE标准754(IEEE,1985),当今流行的计算机几乎都采用这一标准。

  • IEEE 754在标识符点数时, 每个浮点数均由3个部分组成:符号位S,指数部分E和尾数部分M。
    浮点数可采用以下四种基本格式:
    (1)单精度格式(32位):E=8位,M=23位。
    (2)扩展单精度格式:E≥11位,M≥31位。
    (3)双精度格式(64)位:E=11位,M=52位。
    (4)扩展双精度格式(64位):E≥15位,M≥63位。
    其中,单精度格式(32位)中的阶码为8位, 另有一位尾数的符号位S,处在最高位。应该指出的是,浮点数的分数部分与有效位部分两者是不同的, 由于IEEE754标准约定在小数点左部有一位隐含位,从而使其有效位实际有24位,这样便使尾数的有效值变为1M。阶码部分采用移码表示, 移码值为127,从而使阶码值的范围由原来的1到254,经移码后变为-126到+127。

  • IEEE 754标准的单精度和双精度浮点数表示格式。其中,阶码值0和255分别用来表示特殊数值:当阶码值为255时,若分数部分为0,则表示无穷大;若分数部分不为0,则认为这是一个‘非数值’。当阶码和尾数均为0时则表示该数值为0,因为非零数的有效位总是≥1,因此特别约定,这表示为0。当阶码为0, 尾数不为0时,该数绝对值较小, 允许采用比最小规格化数还要小的数表示。概括起来,由32位单精度所表示的IEEE 754标准浮点数N可以有如下的解释:
    若E=0,且M=0,则N为0。
    若E=0,且M≠0,则N=(-1)S·2-126·(0.M)。为非规格化数。
    若1≤E≤254,则N=(-1)S·2E-127·(1.M)。为规格化数。
    若E=255,且M≠0,则N=NaN(‘非数值’)。
    若E=255,且M=0,则N=(-1)S∝(无穷大)。
    由此可见, IEEE 754标准使0有了精确表示,同时也明确地表示了无穷大,所以,当a/0(a≠0)时得到结果值为±∞;当0/0时得到结果值较小的数,为了避免下溢而损失精度,允许采用比最小规格化数还要小的数来表示,这些数称为非规格化数(Denormalnumber)。应注意的是,非规格化数和正、负零的隐含位值不是1而是0。

  • 下面举两个例子来说明IEEE 754标准浮点数的表示:
    (1)N=-1.5,它的单精度格式表示为:
    1 01111111 10000000000000000000000
    其中,S=1,E=127,M=0.5,因此N=-1.5。
    (2)以下的32位数所表示的单精度浮点数为多少?
    1 10000001 01000000000000000000000
    其中,S=1,E=129,M=0.25,由公式可知N=-5。

注:
EEE754标准是一种浮点数表示标准
一般分为单、双精度两种
单精度是32位的二进制数,双精度是64位的二进制数
一个浮点数的组成分为三个部分
第1位是数符s s=1表示负数 s=0表示正数
第2-9位为阶码E (双精度为2-12位)
第10-32位为尾数M (双精度为13-64位)
转换大致过程如下:
将十进制数转为二进制数 用类似于科学计数法的形式表示成
V=(-1)^s*(1+M)*2^(E-127)(单精度)
V=(-1)^s*(1+M)*2^(E-1023)(双精度)
然后将每部分算出的数值按顺序排列
例如:
-0.0625=-1.0*2^(-4)
s=1,M=1-1=0,E=-4 +127=123=0111 1011 ,E(双精度)=-4 +1023=1019 =0111 1111 011
单精度:1011 1101 1000 0000 0000 0000 0000 0000
双精度:1011 1111 1011 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

IEEE754浮点数格式详解相关推荐

  1. php serialize取值,PHP 序列化(serialize)格式详解

    PHP 序列化(serialize)格式详解(转) 1.前言 PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize.unserialize.不过在 PH ...

  2. php serialize mysql_php 序列化(serialize)格式详解

    1.前言 PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize.unserialize.不过在 PHP 手册中对这两个函数的说明仅限于如何使用,而对序列 ...

  3. PHP 序列化(serialize)格式详解

      1.前言 PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize.unserialize.不过在 PHP 手册中对这两个函数的说明仅限于如何使用,而对 ...

  4. C语言:JSON格式详解

    C语言:JSON格式详解 C语言:cJSON库用法详解 C语言:使用cJSON库构造JSON C语言:使用cJSON库解析JSON字符串 JSON 简介 JSON全称 JavaScript Objec ...

  5. php serialize参数,PHP 序列化(serialize)格式详解

    PHP 序列化(serialize)格式详解 1.前言 PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize.unserialize.不过在 PHP 手 ...

  6. ffmpeg-jpeg图片格式详解

    jpg/jpeg是24位的图像文件格式,也是一种高效率的压缩格式 JPEG格式可以分为 1.标准JPEG:只有图片完全被加载和读取完毕之后,才能看到图片的全貌 2.渐进式JPEG:(标准的改进)首先呈 ...

  7. urlencoded格式详解 JSON格式详解

    一.表单格式详解 [urlencoded格式]:又叫form格式,或者是x-www-form-urlencoded格式. 口诀:表单格式是由键值对组成.键和值之间用=.多个键值对之间用&.例如 ...

  8. urlencoded、json 格式详解

    表单格式详解 概念 urlencoded 格式,又叫 form 格式.x-www-form-urlencoded 格式 它是一种表单格式 组成格式 键值对组成 键和值之间用 = :name=poloy ...

  9. urlencoded格式详解和JSON格式详解

    urlencoded格式详解和JSON格式详解 目录 urlencoded格式详解和JSON格式详解 一.表单格式详解 二.JSON格式详解 [json 格式口诀]: 1.1 什么是JSON 1.2 ...

最新文章

  1. 交叉科学不仅不是边缘学科,反而应是科研主流
  2. Node 深入Stream(2)
  3. 科学家利用耳蜗植入物来测量脑电波来优化听力
  4. android软件更新模块实现的技术和方法,Android APK签名原理及方法
  5. C/C++控制台应用程序——画三角形、圆、直线、矩形
  6. iso qemu 安装ubuntu_基于libvirt 和QEMU在macOS安装Ubuntu
  7. 手把手教你用Python搭建一个AI智能问答系统
  8. 区块链 交易怎么验证是否被篡改 SPV验证
  9. 利用python在word文档中查找关键字(支持多个文档和多个关键字)
  10. 使用adb工具打开TCL电视的第三方应用安装权限
  11. 【点击复制 并自动打开微信添加好友】h5点击复制微信号并自动打开微信添加好友
  12. ES分组聚合Agg nested
  13. 新书推荐:《AI 3.0》
  14. 牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用
  15. unity fatal error in gc too many heap sections报错
  16. Css3之画哆啦A梦
  17. 会声会影X10视频制作软件中文密钥激活版
  18. torch学习 (二十四):卷积神经网络之GoogleNet
  19. 内存控制器(以位宽为16的NOR FLASH举例)
  20. c语言程序如下,某C语言程序如下: #include stdio.h void main() { floa.._简答题试题答案...

热门文章

  1. 毫米波电路的PCB设计和加工(第一部分)
  2. class.forName
  3. 工作组服务器虚拟化Hyper-V Replica 复写技术(二)
  4. 等值连接mysql_数据库等值连接,左连接,右连接的区别
  5. malloc与free函数原型
  6. 轩小陌的Python笔记-day16 模块二总结
  7. 2月综艺节目网络关注度榜出炉 《王牌对王牌》跃居榜首
  8. Titanic 泰坦尼克数据集 特征工程 机器学习建模
  9. python开发的桌面应用程序
  10. 如何查询oracle 的版本