热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

下溢如何导致上溢?

如何解决《下溢如何导致上溢?》经验,为你挑选了1个好方法。

我正在阅读英特尔手册(英特尔®64和IA-32体系结构软件开发人员手册* 2016),并且很好奇我是否正确理解了有关下溢异常需求的摘录:

提供了检测和处理下溢的功能,以防止很小的结果通过计算传播,并防止稍后产生另一个异常(例如,除法期间的溢出)。

-第4.9.1.5节

所以我的问题是这种情况是什么样的?一种可能的伪代码计算是

veryVerySmallNumber = SmallestFloatpossible -1
veryVeryLargeNumber = BigBigFloat
answer = veryVerySmallNumber / veryVeryLargeNumber

我读到处理器可以通过两种方式处理此问题,但我更关心下溢可能导致溢出的方式。我还要感谢您对处理这些情况的一般精神作出任何澄清。



1> Eric Postpis..:

英特尔对下溢的引用是关于浮点运算的。

该程序:

#include 

int main(void)
{
    float x = 0x1.23456p-70f;   //  Set x to a number around 2**-70.
    float y = x*x;
    float z = 1/y;
    printf("x = %g.\n", x);
    printf("y = %g.\n", y);
    printf("z = %g.\n", z);
}   

在使用IEEE-754 binary32进行float打印的常见C实现中:

x = 9.63735e-22。
y = 9.29061e-43。
z = inf。

在中x*x,计算发生下溢-结果处于次正规范围内,在该范围内,float格式无法完全精确地表示它(尤其是在将结果四舍五入以适应格式时,结果的某些值会丢失)。

然后,由于数量太小,尝试取其倒数不会产生有限的结果-结果超出float了有限数的范围,因此产生了无穷大。据说该操作溢出。

英特尔硬件提供了一种检测下溢的方法:在未屏蔽FP异常的情况下,下溢异常实际上将被捕获(例如,在Linux / Unix上,操作系统将提供SIGFPE浮点异常)。或像平常一样屏蔽FP异常,它将在MXCSR中设置一个粘性标志位,以记录自上次异常状态标志清零以来发生了下溢异常。还有其他异常标志,用于溢出,不精确(非零舍入错误),无效(NaN结果)。请参阅MXCSR位的表,或参阅Intel x86手册。对于旧版x87,有类似的单独的屏蔽异常记录标志。

程序可以通过检测下溢x*x并执行其想要避免在以后的操作中完全失去对值的跟踪的任何步骤来利用此优势。


这是一个很好的例子,说明IEEE Float具有逐渐下溢(子正常),但是对Inf而言是非渐进的*上溢*(因​​为expOnent= max的所有有效模式都用在NaN有效载荷上,而不是更多的指数位或其他任何形式。) unum是一种有趣的替代实数格式,它也可以逐步溢出,而没有固定宽度的指数字段。(但完全没有inf / nan。)https://posithub.org/about和http://www.johngustafson.net/pdfs/BeatingFloatingPoint.pdf。IIUC,每个Posit都有一个可表示的逆,并且精度在+ -1.0左右对称,而float在0.0左右对称。
推荐阅读
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • Java 中 Writer flush()方法,示例 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了如何像程序员一样思考,强调了将复杂问题分解为更小模块的重要性,并讨论了如何通过妥善管理和复用已有代码来提高编程效率。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文总结了汇编语言中第五至第八章的关键知识点,涵盖间接寻址、指令格式、安全编程空间、逻辑运算指令及数据重复定义等内容。通过详细解析这些内容,帮助读者更好地理解和应用汇编语言的高级特性。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
author-avatar
笨雄不笨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有