浮点运算中什么是上溢和下溢

2023-11-26

我觉得我不太明白这个概念overflow and underflow。我问这个问题是为了澄清这一点。我需要从最基本的层面来理解它。让我们使用简化的浮点表示1 byte - 1位符号,3位指数和4位尾数:

0 000 0000

我们可以存储的最大指数是111_2=7减去偏差K=2^2-1=3这使4,并且它被保留用于Infinity and NaN。最大数的指数是3,即110在偏移二进制下。

所以最大数量的位模式是:

0 110 1111 // positive
1 110 1111 // negative

当指数为零时,该数是次正规数并且具有隐式0代替1。所以最小数的位模式是:

0 000 0001 // positive
1 000 0001 // negative

我找到了单精度浮点的这些描述:

Negative numbers less than −(2−2−23) × 2127 (negative overflow)
Negative numbers greater than −2−149 (negative underflow)
Positive numbers less than 2−149 (positive underflow)
Positive numbers greater than (2−2−23) × 2127 (positive overflow)

其中我只明白正溢出这导致+Infinity,示例如下:

0 110 1111 + 0 110 1111 = 0 111 0000 

任何人都可以使用我上面概述的位模式演示溢出和下溢的其他三种情况吗?


当然,以下内容取决于实现,但如果数字的行为类似于 IEEE-754 指定的内容,则浮点数不会像整数那样溢出和下溢到完全错误的答案,例如你真的不应该以两个正数相乘而得到负数。

相反,溢出意味着结果“太大而无法表示”。根据舍入模式,这通常由 max float(RTZ) 或 Inf (RNE) 表示:

0 110 1111 * 0 110 1111 = 0 111 0000

(请注意,正如您所知,可以通过应用类似的钳位操作在硬件中避免整数溢出,但这不是这样做的惯例。)

在处理浮点数时,术语“下溢”意味着该数字“太小而无法表示”,通常只会导致 0.0:

0 000 0001 * 0 000 0001 = 0 000 0000

请注意,我还听说过术语“下溢”用于表示溢出到非常大的负数,但这不是它的最佳术语。这是结果为负且太大而无法表示的示例,即“负溢出”:

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

浮点运算中什么是上溢和下溢 的相关文章

  • 如何动态地从对象中提取所有元素

    如何从对象中提取特定列 我有一个列数组 我希望从对象中提取这些字段 该对象将由作为项目的映射循环函数构造 现在在这里 如何动态检查我的字段 我不想要这样的 item col 0 请告诉我一个捷径 const person firstName
  • 如何使用角度在垫选择嵌套值中包含过滤器

    我正在使用带有嵌套下拉菜单的有角材料 下拉值以父级和子级为基础嵌套 我面临两个问题 自动建议不起作用 如果我输入父名称或其关联的子名称 则必须以展开模式过滤并显示特定的父视图 如果我展开第一个父视图并尝试展开第二个父视图 则第一个父视图应在
  • HTML5 Canvas - 在画布上绘图、保存上下文并稍后恢复

    要求 现在 在画布上绘制 然后点击 保存 存储画布状态 离线绘制 但不作为图像 稍后 打开画布并显示之前保存的绘图 然后继续再次绘制 对于绘图 我们通常使用如下代码 canvas document getElementById can ct
  • 工厂函数方法不更新变量

    我正在尝试设置一个工厂函数 该函数将更新所述工厂函数中特定变量的值 这看起来实现起来很简单 但是 每当我测试它时 我都会得到变量的原始设置值 而不是更新后的值 我确信在范围界定方面我缺少一些细微差别 但这里到底发生了什么 const fac
  • 无法加载资源:服务器在已部署的 React.js 项目中响应状态为 404(未找到)

    当我将 React 项目部署到 Surge 中时 构建成功并且可以获取应用程序 URL 但是当我链接到 URL 时 我可以在检查控制台中看到一个空白页面和一些错误 Failed to load resource the server res
  • 错误:捆绑失败:TypeError:无法读取未定义的属性“transformFile”,React Native

    每当我运行react native start时 我都会收到此错误 但是最近在我在节点模块中安装了firebase tools和stripe之后 这种情况开始发生 但在此之前它会运行得很好 这也是错误的堆栈跟踪 ffff 127 0 0 1
  • GraphQL:从对象构建查询参数

    如果我有一个对象 where publishedAt lt 2018 01 01 如何将其转换为适合查询参数的字符串 articles where publishedAt lt 2018 01 01 这看起来是一个有趣的库 我建议检查一下
  • JavaScript 回调的效率

    我只是想证实我的一个怀疑 我偶然发现了一篇文章 建议按以下方式使用 Socket io var app require express createServer var io require socket io listen app app
  • Google 闭包编译器使用 WebStorm

    我喜欢用谷歌闭包编译器 https developers google com closure compiler in WebStorm https www jetbrains com webstorm 我已经通过 npm 下载了它 npm
  • 按周将对象数组拆分为组

    我有一个包含这样的数据的对象数组 date 01 01 2017 00 00 00 dataField1 dataField2 date 01 02 2017 00 00 00 dataField1 dataField2 date 01 1
  • Array.from 的时间复杂度

    时间复杂度是多少Array from 例如 const set new Set set add car set add cat set add dog console log Array from set time complexity o
  • 如何在反应路由器的登录页面中隐藏导航栏

    我想隐藏登录页面中的导航栏 我确实做到了 但我在其他页面上看不到导航栏 此代码是 My App jsx 文件的一部分 我在 App 的状态中创造了历史 当路径名是 或 login 时 我会隐藏导航栏 有用 但随后我输入了 ID 和密码 然后
  • 链接index.html client.js 和 server.js

    我从 Node js 开始 我的第一个程序已经遇到了问题 下面是我正在使用的代码 索引 html
  • 我以为我了解范围

    有人可以告诉我为什么 x 的最后一次记录等于0而不是1 我想因为它是在函数之外声明的 所以它具有全局范围 然后在函数中它的值设置为1并且该值将保持原样一个全球性的 我知道函数内的第一个 x 值是全局的 因为没有 var 关键字声明的任何变量
  • 将变量从一个 jsp 发送到另一个 jsp

    我有一个 JSP 文件jsp 1 jsp和另一个 JSP 文件jsp 2 jsp 我已经包括了jsp 2 jsp in jsp 1 jsp using 现在我需要某个元素上的单击事件 在该事件中 我想将字符串变量传输到包含的 jsp 中 假
  • 如何使用 $.ajax 发送 JSON 而不是查询字符串?

    有人可以简单地解释一下如何让 jQuery 发送实际的 JSON 而不是查询字符串吗 ajax url url dataType json I was pretty sure this would do the trick data dat
  • 如何在从数据库异步加载中用占位符替换不存在的图像

    我有一个包含图像的数据库 我需要根据用户的请求即时加载这些图像 这些图像将作为包含 div 容器中的单独 s 的背景图像 类似于图像滚动条 该数据库当前是本地数据库 但这不是我的问题 问题是数据库可能没有我请求的所有图像 并且我可能会得到一
  • 使用 _.extend() 进行 JavaScript 继承

    有什么区别 Employee prototype Object create Person prototype and extend Employee prototype Person prototype 两者都给出相似的结果 输出 但下划
  • 事件监听器如何/何时附加到 d3.js 中?

    我正在尝试制作一个 SVG 编辑器 长话短说 我需要将鼠标事件附加到
  • React Native:当您的应用程序关闭时是否有回调函数?

    我有一个 setInterval 即使您关闭 而不是退出 应用程序也会继续运行 我想在我的应用程序关闭或设备进入睡眠状态时调用一个函数 以便清除 setInterval AppState 是你的朋友 看看AppState 的文档 https

随机推荐

  • Syntastic for Vim:~/.vimrc 中需要哪些行? (PHP错误检查)

    我发现这些文件令人沮丧 我需要添加到配置文件中才能使其正常工作的基本行是什么 从技术上来说 没什么 如果您已将 Syntastic 提取到您的 vim目录 尝试使用 SyntasticEnableVim 中的命令为当前打开文件的文件类型启用
  • 带有代码签名 .exe 文件的 Windows 10 SmartScreen

    我创建了一个 setup exe 文件并将其加载到我的网站上以供下载 exe 文件已使用 godaddy 的证书进行了代码签名 当使用 win7 从我的网站下载 exe 文件时 它会检测到证书并将其显示为安全下载 在 win10 上 exe
  • 使用 matplotlib 具有不同顺序颜色的堆叠条形图

    我是Python的初学者 我正在尝试制作具有不同顺序颜色的水平条形图 我有一个如下所示的数据集 dataset A 19 B 39 C 61 D 70 A 34 B 68 C 32 D 38 A 35 B 45 C 66 D 50 A 23
  • 与普通指针相比,按值传递“unique_ptr”是否会降低性能?

    普遍的智慧是std unique ptr不会带来性能损失 不使用删除器参数时不会造成内存损失 但我最近偶然发现了一个讨论 表明它实际上引入了一个额外的间接 因为unique ptr无法在具有 Itanium ABI 的平台上的寄存器中传递
  • Google 登录失败(ApiException:8)

    当我尝试通过 google 登录时 出现此异常 2020 11 12 13 32 51 571 7351 7351 com test app W aaab com google android gms common api ApiExcep
  • 如何打印浮点数的每一位?

    我正在尝试在 C 中打印出浮点数的每一位 我可以用这个来处理整数 int bit return int a int loc Bit returned at location int buf a 1 lt
  • 在 Ubuntu 14.04 上升级 Cabal

    当我通过安装 Haskell GHC cabal 时sudo apt get我安装了 cabal 版本 1 16 这显然不是最新版本 我该如何升级到至少 1 18 版本 我尝试做sudo apt get update and sudo ap
  • 有额外的 while 循环条件...基于条件吗?

    变量a可以取任意数量的值 的价值a是 while 循环的额外预定义条件的数量 这可以通过多个来完成elif陈述 但有没有更干净的方法来做到这一点 if a 0 while condition 1 elif a 1 while conditi
  • JSF 使用 session.invalidate 注销不会清除当前用户名?

    在我的 JSF 应用程序中 我获取当前登录用户的名称 如下所示 public String getLoggedInUsername return FacesContext getCurrentInstance getExternalCont
  • Weinre 不工作,正在尝试调试?

    我想我可能遗漏了一些东西 但我已经使用脚本在我的 Android 平板电脑上安装了 apk 在标题中 我决定尝试在本地运行它http forums adobe com docs DOC 2623 我转到 localhost 8080 并安装
  • 如何在运行时克隆 Control 事件处理程序?

    我想复制一个控件 如按钮 文本框等 但我不知道如何复制事件处理程序方法 例如Click 到新的控件 我现在有以下代码 var btn2 new Button btn2 Text btn1 Text btn2 size btn1 size b
  • 如何在SASS中将字符串拆分为两个数字列表?

    我有一个 SASS SCSS 字符串 其中包含两个列表 以逗号分隔 每个列表都包含数字 以空格分隔 如何将字符串拆分为两个数字列表 SCSS values 10px 20px 30px 20px 30px 40px begin should
  • 如何通过对合并值求和来合并两个数组[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 如何对相同键的数组的值求和 我正在寻找一个array merge 函数不替换值 而是添加它们 例如 这是我正在尝试的代码 echo pre a1 array a gt 2 b gt 0 c g
  • 使用 Zend_Session::rememberMe 持久登录

    我在用着Zend Session管理我的用户会话 我希望在我的应用程序中实现 记住我 选项 以使用户登录状态持续两周左右 我注意到了Zend Session已经有一个名为的内置函数Zend Session rememberMe 但是我不确定
  • 在 App Engine 上使用 Spring AOP 会导致 StackOverflowError

    我们有一个在 App Engine 上运行并使用 Spring 框架的应用程序 最近我们添加了一些基于AOP的新功能 我们决定使用 AspectJ 风格 因此我们添加了
  • 有人可以帮我使用谷歌图表创建一个简单的垂直条形图吗?

    我需要帮助来构建动态图表 我有以下代码 但需要将其更改为垂直条形图而不是水平条形图 这里是示例 您可以将 bhs 更改为 bvs 并根据需要更改缩放比例 尝试这个
  • 如何避免多个
  • 产生双边框
  • 如何避免列表样式出现双边框线 请参阅下面的小提琴以获得清晰的图片 我想要每个盒子的宽度为 1px 但是当它们组合在一起时它们是双倍的 http jsfiddle net awaises 4SLPh 1 HTML ul li li li li
  • 在Java中提取int的数字

    因此 如果我输入一个整数 int num 1 128 我如何能够解析数字并获得 1 2 和 8 并将它们分配给不同的变量 Thanks 执行此操作的低效方法是将整数转换为字符串并迭代字符串字符 更有效的方法是这样的 int n 128 wh
  • Python 删除某些文件扩展名

    我对 Python 相当陌生 但我已经让这段代码可以工作 并且事实上 做了它想要做的事情 但是 我想知道是否有更有效的方法来编码 也许可以提高处理速度 import os glob def scandirs path for current
  • 浮点运算中什么是上溢和下溢

    我觉得我不太明白这个概念overflow and underflow 我问这个问题是为了澄清这一点 我需要从最基本的层面来理解它 让我们使用简化的浮点表示1 byte 1位符号 3位指数和4位尾数 0 000 0000 我们可以存储的最大指