Lecture 18

Floating Point Numbers

1. 整数的局限性:

• 在计算机中,并非所有数字都能用整数形式表示。例如:

• 非整数(如小数):345.0256。

• 超出整数表示范围的数: 5.375 \times 10^{25} 。

2. 浮点数的用途:

• 浮点数(floating point numbers)用于表示:

超出整数范围的数值。

包含小数部分的实数。

Exponential Notation (Base 10)

1. 指数表示法:

• 指数表示法用于以  a \times 10^b  的形式表示数字,其中:

•  a  是尾数(mantissa)。

•  b  是指数(exponent)。

2. 示例:

•  12345 = 12345 \times 10^0 。

•  12345 = 0.12345 \times 10^5 。

•  12345 = 1234500 \times 10^{-2} 。

Components of Exponential Notation

1. 指数表示法的组成部分:

数字的符号(正或负)。

数字的大小(magnitude)(称为尾数,mantissa)。

指数的符号(正或负)。

指数的大小

2. 额外信息:

• 指数的底数(base)(例如:10 或 2)。

• 小数点( decimal point)的位置。

Floating Point Formats

1. 存储浮点数的格式:

• 浮点数的表示需要存储指数表示法中的各个部分,包括符号、尾数、指数等。

• 这些部分可以存储在一个或多个字中。

2. 无需存储的内容:

• 指数的底数(如 2 或 10)。

• 二进制点(binary point)的具体位置是标准化的,因而不需要存储。

在浮点数的存储中,小数点的位置是隐含的,因为浮点数的表示形式已经约定了小数点的位置规则:

• 在规格化尾数中,小数点默认出现在第一个有效位之后,即尾数总是形如  1.xxx 。

1. 示例格式

• 标准浮点数编码中假设分配了 7 位用于数字表示,其中:

SEEMMMMM 表示结构:

2 位用于指数(E)的符号和值。

5 位用于尾数(M, mantissa)。

2. 设计权衡

• 在浮点数中,存在精度(尾数的位数)与范围(指数的位数)之间的权衡

• 增加尾数的位数提高了精度。

• 增加指数的位数扩展了数值的表示范围。

3. 尾数的存储

• 尾数通常以**符号-幅值格式(sign-magnitude format)**存储。

4. 关于指数的符号

• 指数的符号需要明确处理,这可以通过符号位或**偏移编码(excess-n 表示法)**实现。

Excess-n Notation for the Exponent

1. Excess-50 编码

• 指数偏移(Offset)编码方法,通过将实际指数值偏移固定值  n (例如 50)来存储指数:

• 例如,对于 2 位指数:

• 0–49 表示  -50  到  -1 。

• 50–99 表示  0  到  49 。

2. 优点

指数符号不需要单独存储,所有指数都能转换为非负值,简化了存储和处理。

3. 例子

• 如果偏移量为 50,存储的值为 51,实际指数为  51 - 50 = 1 。

Normalization of Floating Point Numbers

1. 规范化(Normalization)

• 为了最大化表示精度,浮点数通常存储为**没有前导零(Leading Zeros)**的形式。

• 规范化的数字总是形如  1.xxx  的格式。(只需通过调整指数,任何二进制数都可以被缩放到  1.xxx  的范围内。)

2. 示例

• 一个数  0.00123 \times 10^7  的规范化形式是:

•  1.23 \times 10^4 。

3. 规范化的目的

• 提高精度,保证尾数的所有位都有效。

小数点的位置

• 在浮点数中,小数点的位置是 隐含的(不存储)

• 这里假设:

• 小数点始终位于 5 位尾数的开头。

• 例如:

• 如果尾数是 12345,它实际表示为 0.12345。

• 如果尾数是 56789,它实际表示为 0.56789。

为什么这样假设?

• 小数点位置的固定使得浮点数的表示更加规范化(normalized),同时节省了存储空间,因为无需额外存储小数点的位置。

 

Floating Point in the Computer: Binary Representation

1. 浮点数的存储结构

• 通常使用 4、8 或 16 字节存储一个浮点数:

• 例如,32 位的浮点数提供约  10^{-38}  到  10^{38}  的范围。

• 指数部分的 8 位存储范围决定了 2^{-126}  =  10^{-38} 和 2^{127}  =  10^{38}。

• 尾数部分在范围内只影响精度,不显著改变数值范围。

偏移量  n = 127  是  8  位存储范围的一半(减去 1),因此:

n = 2^{8-1} - 1 = 127

2. 32 位浮点数格式(IEEE 754 单精度浮点数)

• 1 位用于表示尾数的符号。

• 8 位用于存储指数(偏移编码)。

• 23 位用于存储尾数。

Floating point in binary

规范化表示(Normalized Representation):IEEE 754 规范化浮点数的形式为  1.xxx \times 2^E ,尾数部分的最高位(Most Significant Bit, MSB)总是 1。

不存储 MSB(隐含位):因为最高位始终为 1,所以没有必要显式存储这个位,节省了存储空间。

存储部分只有小数点后的位(23 位),但实际上尾数的有效精度是 23 + 1 = 24 位。

2. Binary point 

小数点位置固定:IEEE 754 标准规定,二进制小数点位置固定在隐含位“1”之后(即 1.\text{尾数部分}),不需要单独存储小数点位置。

例子

• 存储尾数为 110011…,实际尾数是 1.110011…。

Exponent(指数)

• 使用偏移量 128 的编码(Excess-128)。

• 实际指数值:

• 指数存储值为 10000001(二进制) = 129(十进制)。

E_{\text{actual}} = E_{\text{stored}} - 128 = 129 - 128 = +1

4. 计算结果:

• 浮点数的值为:

1.110011 \times 2^{+1} = 11.1001100…000

 

 

• 浮点数值为:

-1.10001111 \times 2^5 = -11000.111

• 存储指数部分为 10000100(二进制) = 132(十进制)。

Exponent(指数)

• 实际指数值:

E_{\text{actual}} = E_{\text{stored}} - 128 = 132 - 128 = +4

4. 计算结果:

• 浮点数的值为:

-1.1000111 \times 2^{+4} = -11000.111

 

 

Exponent(指数)

• 实际指数值:

E_{\text{actual}} = E_{\text{stored}} - 128 = 126 - 128 = -2

4. 计算结果:

• 浮点数的值为:

-1.10101010101010101010101 \times 2^{-2} = -0.01101010101010101010101

 

IEEE standard 754 (Single Precision Floating Point Format)

解释:

1. 格式:

• 单精度浮点数的总位数是 32 位,分为三部分:

• **1 位符号位(Sign bit):**表示正数或负数。

• **8 位指数(Exponent):**用偏移编码(Excess-127)表示。

• **23 位尾数(Mantissa):**存储小数部分,隐含最高有效位 “1”。

2. 指数的编码方式:Excess-127

• 存储的指数是实际指数加上偏移量 127。

• 公式:E_{\text{actual}} = E_{\text{stored}} - 127。

3. 范围和精度:

• 数值范围约为 10^{-45} 到 10^{38}。

• 精度大约是 7 位十进制数字

 

• **符号位(Sign):**0,表示正数。

指数部分:01111100(十进制为 124)。

• 实际指数值为:

E_{\text{actual}} = 124 - 127 = -3

尾数部分:0100000…。

• 实际尾数为 1.01(包含隐含位 “1”)。

3. 计算:

• 数值表示为:

v = s \times 2^e \times m

• s = +1(符号)。

• e = -3(指数)。

• m = 1.01 = 1.25。

• 最终结果:

v = +1.25 \times 2^{-3} = +0.15625

Special cases (e = 128)

解释:

1. 特殊情况:

• 当存储指数 E_{\text{stored}} 的值等于 0 或 255 时,浮点数不表示标准的数值,而是一些特殊情况:

指数为 0 且尾数为 0:

• 表示正零或负零(根据符号位)。

指数为 2^8 - 1 = 255 且尾数为 0:

• 表示正无穷大(+Infinity)或负无穷大(-Infinity)。

指数为 255 且尾数不为 0:

• 表示非数字(NaN, Not a Number),例如 0 除以 0。

 

无意义的结果:

• 例如 0/0、\sqrt{-1}、或 \infty - \infty。

Double-precision floating point format

解释:

1. 格式:

• 双精度浮点数的总位数是 64 位,分为三部分:

• **1 位符号位(Sign bit):**表示正数或负数。

• **11 位指数(Exponent):**用偏移编码(Excess-1023)表示。

• **52 位尾数(Mantissa):**存储小数部分,隐含最高有效位 “1”。

2. 指数的编码方式:Excess-1023

• 存储的指数是实际指数加上偏移量 1023。

• 公式:E_{\text{actual}} = E_{\text{stored}} - 1023。

3. 范围和精度:

• 数值范围约为 10^{-324} 到 10^{308}。

• 精度大约是 15 位十进制数字

Q&A

1. “Under the IEEE 754 standard, how many bits are required to specify the sign of the magnitude?”

答案:1 位

2. “Under the IEEE 754 standard, how many bits are required to specify the sign of the exponent?”

指数是通过 偏移编码(Excess-n) 的方式存储的,无需专门的一位来存储

答案:不需要额外的位

3. “Under the IEEE 754 standard, how many bits are required to specify the decimal point position?”

小数点的位置完全由尾数的规范化和指数决定,不需要额外的位来表示。

答案:不需要额外的位

4. “Does IEEE standard 754 provide a specification for NaN?”

• 指数部分 E_{\text{stored}} = 255(单精度)或 E_{\text{stored}} = 2047(双精度)。

• 尾数部分 不全为 0(否则是无穷大)。

答案:是的,提供了具体的规范

5. “Under the IEEE 754 standard for single-precision floating point format, what type of excess notation is used for exponent specification?”

存储指数范围:0 到 255。

• 实际指数范围:-126 到 +127。

答案:Excess-127

6. “Under the IEEE 754 standard for double-precision floating point format, what type of excess notation is used for exponent specification?

答案:Excess-1023

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/944750.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LC】19. 删除链表的倒数第 N 个结点

题目描述: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1 输出&#xff…

EasyExcel(读取操作和填充操作)

文章目录 1.准备Read.xlsx(具有两个sheet)2.读取第一个sheet中的数据1.模板2.方法3.结果 3.读取所有sheet中的数据1.模板2.方法3.结果 EasyExcel填充1.简单填充1.准备 Fill01.xlsx2.无模版3.方法4.结果 2.列表填充1.准备 Fill02.xlsx2.模板3.方法4.结果 …

五.Springboot通过AOP实现API接口的签名验证

文章目录 前言一、实现原理二、签名规则三、服务端实现4.1、创建自定义注解4.2、创建切面处理类4.3、对应工具类RequestUtil 四、测试4.1 签名失败测试:4.2 签名成功测试: 四、总结 前言 对外开放的接口,需要验证请求方发送过来的数据确实是…

记录jvm进程号

日常开发中,相信大家会经常用到这么一行命令: ps -ef | grep xxx.jar | grep -v grep | awk {print $2} | xargs -r kill -9 就是杀掉xxx相关的进程,然后启动,当然也还有其他的方式可以实现类似的功能,我就不列举了&…

STM32完全学习——使用定时器1精确延时

一、定时器的相关配置 首先一定要是递减定时器,递增的不太行,控制的不够准确,其次在大于10微秒的延时是非常准确的,小于的话,就没有那没准,但是凑合能用。误差都在一个微秒以内。使用高级定时器也就是时钟…

简述css中z-index的作用?如何用定位使用?

z-index是一个css属性,用于控制元素的堆叠顺序, 如何使用定位用index 1、position:relative; z-index; 相对于自己来定位的,可以根据top,bottom,right,left&#xff…

被裁20240927 --- 嵌入式硬件开发 STM32篇

人很容易原谅别人的错误但很难原谅别人的正确 1. 文档、手册、指南、资源2. MCU 结构3. MCU 和 MPU 的区别4. 一些概念什么是看门狗 ?什么是 DMA ?什么是晶振 ?什么是片内外设?软件协议、硬件协议、数据协议、通讯协议、通信协议u…

被邀请出版Cursor教程书籍是什么体验?

本文目的 本次文章和大家分享一下被邀请出版书籍的经历、准备工作;准备工作大部分文字内容由Cursor完成。同时如果有后续、未来书籍真的出版,我会持续进行分享,欢迎关注我~ 事情来由 前几天我被出版社编辑联系,询问我是否可以合…

全新免押租赁系统助力商品流通高效安全

内容概要 全新免押租赁系统的推出,可以说是一场商品流通领域的小革命。想象一下,不再为押金烦恼,用户只需通过一个简单的信用评估,就能快速租到所需商品,这种体验简直令人惊喜!这个系统利用代扣支付技术&a…

upload-labs关卡记录9

还是上传一个一句话木马,提示文件类型不允许上传,随变改一改后缀名,发现就可以上传了,黑名单,这里经过尝试,常规的双写后缀,大小写,.htaccess,然后抓包,试试点…

高质量 Next.js 后台管理模板源码分享,开发者必备

高质量 Next.js后台管理模板源码分享,开发者必备 Taplox 是一个基于 Bootstrap 5 和 Next.js 构建的现代化后台管理模板和 UI 组件库。它不仅设计精美,还提供了一整套易用的工具,适合各种 Web 应用、管理系统和仪表盘项目。无论你是初学者还是…

路由器刷机TP-Link tp-link-WDR5660 路由器升级宽带速度

何在路由器上设置代理服务器? 如何在路由器上设置代理服务器? 让所有连接到该路由器的设备都能够享受代理服务器的好处是一个不错的选择,特别是当需要访问特定的网站或加速网络连接的时候。下面是一些您可以跟随的步骤,使用路由器…

【Linux/踩坑】Linux中启动eclipse或HDFS因JAVA_HOME设置报错

Linux中启动eclipse或hadoop因JAVA_HOME设置报错 eclipseHadoop eclipse 错误提示: A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No Java virtual machine was found after searching the follo…

可信数据空间建设及应用参考指南(V1.0)

为贯彻国家数据局《可信数据空间发展行动计划(2024-2028 年)》,促进可信数据空间持续、快速和健康发展,相关行业专家组织编写《可信数据空间建设及应用参考指南(V1.0)》(以下简称《参考指南》&a…

Hive刷分区MSCK

一、MSCK刷分区 我们平时通常是通过alter table add partition方式增加Hive的分区的,但有时候会通过HDFS put/cp命令或flink、flum程序往表目录下拷贝分区目录,如果目录多,需要执行多条alter语句,非常麻烦。Hive提供了一个"…

【学生管理系统】权限管理之用户管理

目录 6. 权限管理 6.1 环境搭建 6.1.1 数据库 6.1.2 后端环境 6.2 用户管理 6.2.1 查询所有用户(关联角色) 6.2.2 核心1:给用户授予角色 6. 权限管理 6.1 环境搭建 6.1.1 数据库 权限管理的5张表的关系 添加4张表 # 权限表&…

PTPVT 插值说明

文章目录 PTPVT 插值说明 PTPVT 插值说明PVT Hermite插值PVT 三次多项式插值PT 插值Sin轨迹测试结果PVT Hermite插值结果PVT 三次多项式插值结果PT 插值结果 用户轨迹测试结果PVT Hermite插值结果PT 插值结果 PTPVT 插值说明 PT模式: 位置-时间路径插值算法。 PVT模…

EMNLP'24 最佳论文解读 | 大语言模型的预训练数据检测:基于散度的校准方法

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 张伟超,中国科学院计算所网络数据科学与技术重点实验室三年级直博生 内容简介 近年来,大语言模型(LLMs)的…

[Day 10]有序数组的平方

今天这道题较之前的思路会好理解些,题目链接:977.有序数组的平方 题目描述: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入&…

大O算法的魔法世界

引言 嘿,小朋友们,今天我们要一起探索一个神秘的魔法世界——大O算法。这听起来可能有点奇怪,但它其实是一种帮助我们理解计算机程序运行速度的方式。想象一下,我们有很多不同的魔法咒语(算法)&#xff0c…