计算机浮点数规格化表示

2023-11-12

说明

在IEEE标准中,浮点数在内存中的表示是将特定长度的连续字节的所有二进制位按特定长度划分为符号域,指数域和尾数域三个连续域。

float

float类型在内存中占用的位数为: 1+8+23=32bits
image

double

1+11+52=64bits
image

第一位s代表符号为,1代表负数,0代表正数。

第二个域是指数域,对于单精度float类型,指数域有8位,可以表示 0-255个指数值。指数值规定了小数点的位置,小数点的移动代表了所表示数值的大小。但是,指数可以为正数,也可以为负数。为了处理负指数的情况,实际的指数值按要求需要加上一个偏差(Bias)值作为保存在指数域中的值,单精度数的偏差 值为 -127,而双精度double类型的偏差值为 -1023。比如,单精度指数域中的64 则表示实际的指数值 -63。 偏差的引入使得对于单精度数,实际可以表达的指数值的范围就变成-127 到 128 之间(包含两端)。我们不久还将看到,实际的指数值-127(保存为 全 0)以及 +128(保存为全1)保留用作特殊值的处理。这样,实际可以表达的有效指数范围就在 -126 和 +127 之间。

第三个域为尾数域,其中单精度数为 23 位长,双精度数为 52 位长。比如一个单精度尾数域中的值为: 00001001000101010101000, 第二个域中的指数值则规定了小数点在尾数串中的位置,默认情况下小数点位于尾数串首位之前。  

比如指数值为 -1,则该float数即为:.000001001000101010101000,如果为+1,则该float 数值为:0.0001001000101010101000。我们知道引入浮点数的目的在于用尽可能少的位数表示既高精度又大范围的实数,其中的范围大小是由指数域位长确定的,而尾数域的长度则确定了所能表示实数的精度,所以double比float数的精度更高,范围更大,相应的也就占用更多的内存。 刚才我们介绍的对尾数域中的值的解释并不能实现这个精度最大化的目标,因为在尾数串第一个”1”之前还有4个”0”,这4个”0”实际上是多余的,因为我们把小数点向前移动时,前端的"0"是自动添加的,所以可以把这4个“0”删除,然后尾数域末端多出4个位来表示更高精度的数值。也就是说尾数的第一位一定是"1",那么既然第一位一定是"1",那么我们也就没有必要把它存储在尾数域中,而是直接默认尾数为1.xxxx…xxx的形式。尾数的首位从小数点后开始。那么上面的例子所表示的尾数就是:
1.00001001000101010101000。 用23位表示了24位的信息 (小数点不占位置).

表示

一个规格化的32位浮点数x的真值为:

x=(−1)^s × (1.M) × 2^E−127

一个规格化的64位浮点数x的真值为:

x=(−1)^s × (1.M) × 2^E−1023

下面举一个32位单精度浮点数-3.75表示的例子帮助理解:

(1) 首先转化为2进制表示

−3.75=−(2+1+1/2+1/4)=−1.111×2^1

(2) 整理符号位并进行规格化表示

−1.111×21=(−1)(1)×(1+0.1110 0000 0000 0000 0000 000)×2^1

(3) 进行阶码的移码处理

(−1)^(1)×(1+0.1110 0000 0000 0000 0000 000)×2^1

=(−1)^(1)×(1+0.1110 0000 0000 0000 0000 000)×2^128−127

于是,符号位S=1,尾数M为1110 0000 0000 0000 0000 000阶码E为128_10=1000 0000_2,则最终的32位单精度浮点数为1 1110 0000 0000 0000 0000 000 1000 0000

浮点数表示范围与精度

通过上面的规格化表示,我们可以很容易确定浮点数的表示范围:
image

一般提到浮点数的精度(有效位数)的时候,总是会出现 float的有效位为6~7位, double的有效位为15~16位 。

既然有表示范围,那肯定也有不能表示的数值:

image

下面以float为例,解释一下有效位数是怎样来的。

有效位数只和规格化浮点数的尾数部分有关,而尾数部分的位数是23位,因此我们首先列出下表
image

由上面的表格可以看出:

2−23 和 2−22 之间是存在间隔的,即0.0000001和0.0000002之间的小数我们是没有办法描述的,因此23位尾数最多只能描述到小数点后第7位;此外,我们通过四舍五入可以很容易发现0.0000003=0.0000004=2−23+2−22, 这表明第7位有效数字只是部分准确。而第6位及之前的都是可以准确描述的,因此我们说float的有效位为6~7位。

例子

参考资料:

http://blog.csdn.net/shuzfan/article/details/53814424

http://blog.csdn.net/techx/article/details/43830781

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机浮点数规格化表示 的相关文章

  • chatgpt赋能python:Python长浮点型介绍

    Python长浮点型介绍 Python是一种强大的编程语言 通过其众多的数据类型 使开发人员可以快速开发复杂的应用程序 其中 Python长浮点型就是Python支持的一种数据类型 长浮点型是指Python可以处理的浮点数的精度可以高达25
  • chatgpt赋能python:Python题目搜索软件:提升你的编程水平

    Python题目搜索软件 提升你的编程水平 对于那些喜欢编程的人来说 学习Python是一个非常不错的选择 但是 学习Python的难度并不小 需要大量的时间和精力 一个好的学习方式是通过完成Python编程题目来加深对该编程语言的理解 但
  • 如何轻松实现内网穿透?异地办公?调试微信小程序?

    步骤很简单 只需三步 1 从 https www i996 me 获取获取你的公网域名和访问Token 项目托管在 https github com bugfan i996 2 在Max Linux 环境下 Windows类似 打开一个终端
  • .NET6: 开发基于WPF的摩登三维工业软件 (7)

    Python微信订餐小程序课程视频 https edu csdn net course detail 36074 Python实战量化交易理财系统 https edu csdn net course detail 35475 做为一个摩登的
  • git使用问题

    1 windows 7专业版使用sourceTree拉取代码的问题 之前一直用的好好的 今天拉不了代码了 错误如下 git c diff mnemonicprefix false c core quotepath false fetch o
  • c++中std::condition_variable最全用法归纳

    前言 建议阅读以下文章前需先对建立 std thread 多线程与std mutex 锁有一定程度的熟悉 std thread最全用法归纳 std mutex最全用法归纳 概括 使用 std condition variable 的 wai
  • 两款免费、好用的数据库连接工具

    一 Navicate Navicat是一套快速 可靠的数据库管理工具 专为简化数据库的管理及降低系统管理成本而设 它的设计符合数据库管理员 开发人员及中小企业的需要 Navicat 是以直觉化的图形用户界面而建的 让你可以以安全并且简单的方
  • Win32程序之进程的原理

  • chatgpt赋能python:如何让Python程序运行

    如何让Python程序运行 Python是一种高级编程语言 它被广泛应用于各种不同的领域 包括Web开发 数据分析 机器学习 人工智能等等 当你编写Python程序时 你需要学习如何让它们在你的计算机上运行 在本文中 我们将介绍如何让Pyt
  • secure boot 是什么

    一 secure boot 是什么 secure boot 中文叫安全启动 是电脑行业成员共同开发的一种安全机制 用于确保电脑只能启动原装系统 如果电脑重装了其他系统 那么这个系统是启动不了的 说白了 就是垄断 所以安装完其他系统 必须关闭
  • chatgpt赋能python:用Python计算e的方法

    用Python计算e的方法 Python是一种功能强大的编程语言 可以用它来解决许多数学问题 其中之一就是计算数学常数e e是一个无理数 约为2 71828 它在许多数学和科学领域中都有重要应用 例如微积分 概率论和物理学 什么是e e是一
  • chatgpt赋能python:如何用Python求和

    如何用Python求和 Python是一种高级编程语言 最初设计用于简单的脚本编写 但是也可以用于复杂的科学计算 求和是我们在编程中经常需要处理的基本操作之一 Python具有简单易学的语法和广泛的开源库 使其成为处理数据的强大工具 在本文
  • 编译工具Make

    文章目录 make指令 指定目标 隐藏指令 通配符 伪目标 多目标 Makefile的命令 变量 变量的基础 赋值变量 函数调用 字符串操作函数 文件名操作函数 循环函数 条件判断函数 条件判断语句 隐式规则 隐式规则举例 隐式规则中的变量
  • chatgpt赋能python:Python除零错误:原因,解决办法和实践建议

    Python 除零错误 原因 解决办法和实践建议 介绍 Python 作为一门广泛使用的高级编程语言 它的强大之处就体现在它的简洁性 可读性和易用性上 但是在实践中 有时候我们会遇到一些让我们不得不头痛的问题 其中之一就是 Python 除
  • 机器学习DGA域名检测

    恶意域名 恶意域名是指黑客在攻击过程中或者对目标网络实施控制时 使用dga算法生成的域名 这种域名通常硬编码在恶意软件中 我们在做流量分析时不仅要通过流量的指纹特征识别威胁 也可以通过检测是否解析了恶意域名来判断网络中是否存在肉鸡 传统DG
  • 计算机系统课程 笔记总结 CSAPP第四章 处理器体系结构(4.1-4.3)

    GitHub计算机系统CSAPP课程资源 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 1 2 2 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 3 2 4 计算机系统课程 笔记总结 CSAPP第三章
  • 2019年感:忆往昔考博岁月,看今朝花样年华

    人生的际遇谁又能说清楚 就像师范类毕业的女神梦想着当一名老师 结果却阴差阳错穿上了警服 而本应该奔波北上广深的程序员 却成为了一名大学老师 两条平行线的男女 却结为了连理 再如 一心准备中科院却因英语差一分惜败 几乎裸考的学校却可能结出果实
  • 反斜杠“\”与斜杠“/” 的区别

    与 的区别为 用途不同 系统不同 网址不同 一 用途不同 1 只能用来表示目录 2 技能作为除法符号或者间隔符号使用 也能用来表示目录 二 系统不同 1 用作目录时 适用于windows系统 2 用作目录时 适用于unix系统 也可用于wi
  • 马斯克没继续的工作,我帮他继续下去

    还记得当初自己为什么选择计算机 埃隆 马斯克的第一份工作是在加拿大开始的 17岁时 他来到加拿大 但他的寻亲不遇 为了生存 他不得不打各种零工 包括在农场中种蔬菜和打扫粮仓 以及在木材厂锅炉房烧锅炉 后来 他在加拿大读大学时 开始在彼得银行
  • 干货 | Sqlmap常用手册(收藏)

    sqlmap常用手册 目录 sqlmap常用手册 一 sqlmap介绍 二 常用命令 二 进阶命令 technique BEUST prefix与 suffix level 三 注入https网站

随机推荐

  • c++实现时钟(图形实现)

    由于该项目是win32项目 且在VS2019上实现的 故现在简单一下在VS2019上如何创建与为win32项目相同的windows桌面向导程序 1 首先打开vs2019创建新项目 2 然后选择Windows桌面向导程序 3 然后点击下一步创
  • springboot2+alibaba sentinel的整合小坑

    pom配置
  • 【深入了解pytorch】PyTorch循环神经网络(RNN)

    深入了解pytorch PyTorch循环神经网络 RNN PyTorch循环神经网络 RNN 概念 工作原理与常见变体 循环神经网络概念和工作原理 RNN的结构 RNN的工作原理 LSTM 长短期记忆网络 LSTM的结构 LSTM的工作原
  • Windows中Splinter的安装和使用

    核心内容 1 Splinter的简介 2 Splinter的安装 3 检验Splinter是否安装成功 4 Geckodriver驱动的安装 5 Splinter的操作示例 一 Splinter的简介 Splinter是一个使用Python
  • C++学习之旅 第二章 printf与cout

    目录 1 printf简介 2 printf的四种用法 2 1 printf 字符串 2 2 printf 输出控制符 输出参数 2 3 printf 输出控制符1 输出控制符2 输出参数1 输出参数2 2 4 printf 输出控制符 非
  • 百度又发布一个神器!网友直呼好家伙

    目标检测作为计算机视觉领域的顶梁柱 不仅可以独立完成车辆 商品 缺陷检测等任务 也是人脸识别 视频分析 以图搜图等复合技术的核心模块 在自动驾驶 工业视觉 安防交通等领域的商业价值有目共睹 正因如此 YOLOv5 YOLOX PP YOLO
  • 统计相关国际期刊汇总

    统计相关国际期刊汇总 ID 期刊名 编码 大类 小类 3年平均IF 2年总被引 1 Journal of the American Statistical Association JASA 0162 1459 数学2区 top STATIS
  • Hibernate之一对多双向关联查询

    在这里模拟一个业务场景记录hibernate中一对多双向关联的配置及使用 当我们在手机上购物付款之后 是会生成订单的 一个订单中会存在着多个订单项 订单与订单项之间就存在着一对多的关系 一个订单中可以有多个订单项 而多个订单项又组成为一个订
  • speex回声消除源码解读

    一 speex回声消除aec小析 频域自适应算法采用了分块处理的思想 以减少高阶自适应滤波器的计算复杂度 多延迟自适应滤波器 MDF 则更一般可以分M块来处理 其中块的长度比自适应滤波器的阶数更小 后置滤波器系数一直在更新 单讲时前置滤波器
  • C\C++编程技巧之全局变量的初始化

    为了增强代码的鲁棒性 减少不必要的bug出现 务必在定义变量的时候就想好在哪里对其初始化 对于全局变量 最好在该模块的init函数中对其初始化 该init函数一般在上电过程中初始化 对于文件内的局部变量一般在调用该模块时进行初始化 C 中构
  • aspose 实现 WORD转PDF【亲测可用】

    aspose 实现word转PDF 直接上代码 import java io File import java io FileOutputStream import java io InputStream import com aspose
  • Spring Boot连接DB2查询结果时报错“java.lang.AbstractMethodError: com.ibm.db2.jcc.t4.b.isValid(I)Z”的解决办法...

    关于在maven项目中如何添加DB2的坐标的详细 见 https www cnblogs com zifeiy p 7918554 html Spring Boot项目中的application properties文件内容如下 DB Co
  • 育碧2k微软服务器,育碧服务器出现大规模的BUG:影响到多个平台

    PConline资讯 昨日 育碧的服务器出现大规模的BUG 包括 彩虹六号 幽灵行动 等多款育碧游戏无法进行联机游戏 育碧官方也是在第一时间在微博和推特发布了消息并表示正在积极抢修 而期间间歇性的断开连接和排队则一直没有停止过 PS4 Xb
  • elementUI el-button 点击后样式自动恢复的方法

    问题描述 elementUI 中的按钮 点击后会有focus样式 且只有点击其他地方后 按钮才会失焦 样式才会恢复到点击之前的样式 例如主要按钮是亮蓝色 点击后是暗蓝色 点击其他地方才会恢复亮蓝色 我希望将鼠标放在按钮上时会改变样式 但是点
  • 三伏天是几月几号2023-三伏天需要注意什么

    三伏天是几月几号2023 2023年三伏天具体时间如下 初伏 2023年7月11日 2023年7月20日 共10天 中伏 2023年7月21日 2023年8月9日 共20天 末伏 2023年8月10日 2023年8月19日 共10天 三伏天
  • 奇偶数分离

    描述 有一个整型偶数n 2 lt n lt 10000 你要做的是 先把1到n中的所有奇数从小到大输出 再把所有的偶数从小到大输出 输入 第一行有一个整数i 2 lt i lt 30 表示有 i 组测试数据 每组有一个整型偶数n 输出 第一
  • JavaWeb:Servlet

    Servlet 文章目录 Servlet Servlet介绍 Web服务器 Tomcat Servlet接口 Servlet接口介绍 类图 Servlet接口源码 GenericServlet抽象类 HttpServlet抽象类 Servl
  • Python 报错:can only concatenate str (not “int”)to str

    x 1 print x x 使用 连接时 只能将字符串与字符串连接 不能和int型连接 需要将x强制转换成str型 x 1 print x str x
  • 如何配置H3C S5500每个VLAN配一个DHCP池

    给Vlan定义地址并配置其工作在服务器模式 interface Vlan interface12 ip address 172 18 12 1 255 255 255 0 dhcp select server global pool 给Vl
  • 计算机浮点数规格化表示

    说明 在IEEE标准中 浮点数在内存中的表示是将特定长度的连续字节的所有二进制位按特定长度划分为符号域 指数域和尾数域三个连续域 float float类型在内存中占用的位数为 1 8 23 32bits double 1 11 52 64