1、IEEE浮点表示

IEEE(读作“eye-triple-ee”)浮点标准754中,用图1的形式来表示一个数:

图1 浮点数表示形式​​​

符号(sign)——s决定这个数是负数(s=1)还是正数(s=0),而对于数值0的符号位解释,作为特殊情况处理;

尾数(significand)——M决定浮点数的精度,它是一个二进制小数;

阶码(exponent)——E的作用是对浮点数加权,这个权重是2的E次幂(可能是负数),它决定浮点数的取值范围。

对于单精度 / 双精度 / 扩展精度,组成形式是:1 / 1 / 1位符号,8 / 11 / 15位阶码,23 / 52 / 64位尾数。

2、浮点数值的分类

根据阶码,浮点数可以分成三种情况:规格化的,非规格化的或特殊值

情况1:规格化的值

当阶码的所有bits,既不全为0,也不全为1时,都属于这种情况。

此时,阶码字段被解释为"以偏置(Bias)形式表示的有符号整数" 。也就是说,阶码所表示的实际数值应是

其中 e 是k 位的阶码所表示的无符号数值,其位表示形式为:"  "。

而Bias是一个等于的偏置值,例如单精度float的偏置是127。由此产生指数的取值范围,对于单精度float是 -126~127 (针对阶码数值为-127或128时的分析,请参考情况2和情况3)。

而尾数字段,则被定义为  

其中,f 是n 位的尾数所表示的小数值,满足 ,其二进制表示为:"   ",也就是二进制小数点在最高有效位的左边。

有时,这种方式也叫做隐含的以1开头的表示 ,因为我们可以把尾数 M 看成是一个二进制表达式为:"  " 的数字。

为什么要用这种表示方式?因为既然我们总能够调整阶码 E ,使得尾数 M 在范围  之中,那么这种表示方法是一种轻松获得一个额外精度位的技巧——既然第一位总是等于1,那我们就不需要显式地表示它。

由此,规格化形式可以表示的数值 V 的范围是  。

情况2:非规格化的值

当阶码的所有bits全为0时,所表示的数是非规格化形式。(针对单精度float,阶码值为-127)

在这种情况下,阶码的数值是  。而尾数的值是  ,也就是尾数字段的值,开头没有隐含的1。

——那么,为什么非规格化形式为什么将阶码值定义为 ,而不是  ?

——因为只有这样,才能从非规格化值平滑转换到规格化值。(对此,本文章最后以数字示例做了详细解释。)

非规格化形式提供了两种数值0的表示,以单精度float为例,分别是:

+0:0    0000 0000    000 0000 0000 0000 0000 0000;

-0: 1    0000 0000    000 0000 0000 0000 0000 0000。

由此,非规格化形式可以表示的数值 V 的范围是分段函数  ,其中,s 为符号位。

情况3:特殊值

当阶码的所有bits全为1时,所表示的数是特殊值。(针对单精度float,阶码值为128)

(1)无穷 ∞

尾数为0时,该值表示无穷。当两个非常大的数相乘时,或除数为0时,无穷能够表示溢出的结果。

+∞ :0    1111 1111    000 0000 0000 0000 0000 0000

-∞  :1    1111 1111    000 0000 0000 0000 0000 0000

(2)NaN

尾数不为0时,结果值被称为“NaN (Not a Number)”,一些运算的结果不为实数或无穷时,就会返回这样的 NaN 值,比如计算  或  时。

NaN  :x    1111 1111    xxx xxxx xxxx xxxx xxxx xxxx

3、数字示例 
图2展示了假定的8位浮点格式的示例,其中有 k = 4 的阶码位和 n = 3 的小数位。于是可知偏置量 Bias 是  。

图2 8位浮点格式的非负值示例

可以观察到,最大非规格化数  和最小规格化数  之间的平滑转变。这种平滑性归功于我们对非规格化数的阶码 E 的数值的定义。通过将非规格化数的阶码 E 定义为 1 - Bias,而不是 -Bias,我们可以补偿非规格化数的尾数没有隐含的1。

本文完。

挚谢阅读!

【计算机基础】详解IEEE754浮点数规格化表示(小数点左边隐含一位1)相关推荐

  1. 计算机组成原理 专业课,2017年考研专业课计算机大纲详解:计算机组成原理

    一.计算机组成原理考查目标 2017年的统考大纲对组成原理的考查目标定位为理解单处理器计算机系统中各部件的内部工作原理.组成结构以及相互连接方式,具有完整的计算机系统的整机概念:理解计算机系统层次化结 ...

  2. 2015 计算机考研大纲,2015年考研计算机大纲详解:操作系统

    原标题:2015年考研计算机大纲详解:操作系统 一.操作系统考查目标 今天我们来解析一下计算统考大纲操作系统部分的知识点.操作系统的研发能力很能够体现计算机软件发展的水平,因此操作系统是计算机课程体系 ...

  3. 03 html基础详解

    02html基础详解 文章目录 02html基础详解 1.HTML编辑器 2.标签 html常用标签 3.元素 4.属性 常用属性 5.标题 水平线 注释 6.段落 折行 7.格式化标签 属性dir ...

  4. 2016计算机考研大纲视频,2016年考研专业课计算机大纲详解:操作系统

    一. 操作系统考查目标 今天我们来解析一下计算统考大纲操作系统部分的知识点.操作系统的研发能力很能够体现计算机软件发展的水平,因此操作系统是计算机课程体系里很重要的一门专业核心基础原理课程.在考研大纲 ...

  5. 看完之后保证你对socket编程步骤胸有成竹。 C++ Socket网络编程基础详解(TCP)

    C++ Socket网络编程基础详解(TCP版) ​    网络编程,就是编写程序使得两台计算机交换数据,其实从本质上来讲,网络编程最终所实现的功能,和我们文件的输入输出很相似,只是文件输入输出的对象 ...

  6. BIOS设置基础详解

    BIOS设置基础详解AMI BIOS设置 开机显卡自检测完成后,点击<DEL键>即可进入AMI BIOS SETUP设置界面主菜单. 进入了AMI BIOS NEW SETUP UTILI ...

  7. IEEE754浮点数规格化表示

    在学习<软件设计师教程>中的浮点数IEEE754工业标准期间遇到一些问题,理解后写篇文章,加深自己理解,也方便日后复习 IEEE754规定: 单精度浮点数字长32位,尾数长度23,指数长度 ...

  8. html入门基础(详解)

    html入门基础(详解) 一.HTML 1.HTML:是一种用于创建网页的超文本标记语言(Hyper Text Markup Language) "超文本"就是指页面可以包含图片, ...

  9. c 语言中 %是什么运算符,C 语言基础----详解C中的运算符

    C语言中又有哪些运算符呢? 如下所示: ※ 算术运算符 ※ 赋值运算符 ※ 关系运算符 ※ 逻辑运算符 ※ 三目运算符 C语言基本算术运算符如下表: 除法运算中注意: 如果相除的两个数都是整数的话,则 ...

最新文章

  1. winform控件大小改变是防止背景重绘导致的闪烁
  2. linux 启动rabbitmq 报错:
  3. mysql事物 总结_Mysql事务总结
  4. java追加一个sheet_(二)POI-创建一个sheet页,并添加行列数据
  5. RabbitMQ预取值
  6. 有哪些命令行的软件堪称神器?
  7. LeetCode-reverse integer复杂度
  8. ReferenceError: XXX is not defined 错误及解决办法
  9. Python使用matplotlib填充图形指定区域
  10. javascript Exception handling statements(异常处理)
  11. 傲梅分区助手克隆Linux硬盘,傲梅分区助手复制磁盘或克隆磁盘到另外磁盘
  12. Office application 版本
  13. CISSP备考大全(完整版)
  14. linux 原型软件,10个在线原型设计软件推荐
  15. 笔记本触控板使用技巧!
  16. Latex论文复杂组合图片设计
  17. 爬虫项目七:Python对唯品会商品数据、评论数据的爬取
  18. MySQl安装与学习,内附SQlyog
  19. 深入浅出的解释什么是IP地址、子网掩码、端口号、DNS、网关(初学者一定要看看)
  20. 【无人机组装与调试】第三章 舵机安装与调整

热门文章

  1. 如何制作分析股票趋势的软件
  2. Using typename的理解
  3. 【王道计算机组成原理】1.1.1 计算机的四代变化与元件的更新换代
  4. Android O 让安装应用更安全
  5. 实现div毛玻璃背景
  6. 麻瓜 | 数学建模日记 | 第三天
  7. 3dMAX模型导入虚幻流程
  8. 计算机考证怎么报考全国计算机等级考试
  9. 烁博科技视频防泄密系统白皮书
  10. 抖音 【展示应用下载地址】 该如何填写?