算术溢出(arithmetic overflow)是指计算机进行算术运算产生的结果超出机器所能表示的范围。溢出有上溢和下溢之分,在定点计算机和浮点计算机中,上溢和下溢的概念是不完全相同的。在定点计算机中,从正方向超过了数的表示范围,称为上溢;从负方向超过了数的表示范围,则称为下溢。在浮点计算机中,浮点数的表示范围主要由阶码来决定。不论数的符号是正还是负,若阶码从正的方向超出了阶码的表示范围,称为上溢;若阶码从负的方向超出阶码的表示范围,或者尾数为“0”时,统称为下溢。一般来说,计算机对于浮点数的下溢,则自动当作“0”来处理,不输出错误信息;而产生的上溢,计算机则产生“溢出中断”,并输出溢出的错误信息,甚至停止程序的运行[1]

中文名

算术溢出

外文名

arithmetic overflow

学    科

计算机类    型

上溢、下溢

避免方法

设计、回避

别    名

溢出

算术溢出简介

编辑

语音

算术溢出(arithmetic overflow)或简称为溢出(overflow)指的是:在计算机领域里所发生的溢出条件是,运行单项数值计算时,当计算产生出来的结果是非常大的,大于寄存器或存储器所能存储或表示的能力限制。在计算机领域里,运行多项或累计的数值计算时,当计算产生出来的总值是非常大的,大于寄存器或存储器所能存储或表示的能力限制。要注意的是,溢出可能会在其他地址被置换。

加法器是中央处理器算术逻辑单元中的核心之一。当长度为n位的两个二进制数经过加减法器运算,得到的长度为n位的结果不是正确值时,我们说发生溢出。

算术溢出算术下溢

编辑

语音

算术下溢也称为浮点数下溢,是指计算机浮点数计算的结果小于可以表示的最小数。算术下溢在计算结果很接近零出现,使得计算结果的大小小于浮点数可以表示的最小数字。算术下溢也可以视为是浮点数指数在负值时的溢位。例如,浮点数指数范围为-128至127,一个绝对值小于2−127的浮点数就会造成下溢(假设-128的阶码用于表示负无穷)。界于−fminN and fminN之间的区间称为下溢间距(underflow gap),其中fminN为一般浮点数格式所能表示的最小正数。

在早期的设计中,界于下溢间距之间的数字其值均视为零,因此若出现算术下溢,其结果会被改为零,可能是用硬件或系统软件处理,此处理方式称为“清洗为0”(flush to zero)。

1984年版的IEEE 754导入了次正规数,次正规数和零可以填满下溢间距。假设浮点数指数范围为-128至127,最小可表示正规数为2^−127,次正规数则是类似0.9^−127、0.8^−127……之类的数,计算时会将结果转换为最接近的次正规数,因此可以渐近下溢,不过最接近的次正规数中仍有可能是零。

出现算术下溢时,可能会设定一个状态位元、产生异常、产生中断或是这几项的组合。

IEEE 754中规定只有算术下溢会造成精确度下降时才回报算术下溢,一般是在最后的计算结果不对时才会出现。但若程式要捕捉算术下溢,不论是否有精确度,都会回报算术下溢。IEEE 754处理算术下溢及其他异常的方式相同,都要纪录算术下溢时的浮点运算器状态。

算术溢出控制溢出

编辑

语音

有几个控制溢出的方法:

设计:选择正确的数据类型,尤其要注意数据长度与signed/unsigned数据符号。

回避:事先注意指令的运作以及检查运算的数值,或许可以确保计算出来的结果不会超过存储器存储数据的限制。

控制:当它被侦测到,还有在其他的程序完成时被检测出来,那么溢出是可以被预料的。例如:两个比特大的两个数值做加法计算,这种情形最可能发生,步骤如下:先加低比特再加高比特,但是如果它必须完成低比特的运算,就会产生比特加法的运算溢出,那么就有必要做侦测和增加高比特的总和。通常CPU有支持侦测数值加法大于寄存器大小的作法,基本上这个作法是采用状态比特的方式。

增值:假如存储的数值过大就会被分配给其他特定的数值,这时溢出就会发生,然后传回旗标值时就会产生连续运作的现象。检查这个问题最有用的方法,就是在整体的计算结尾做一次性的检查工作,而不是检查每一个运行步骤。这个作法最常用在浮点硬件调用浮点运算器。

忽略:这是最普遍的作法,但是这个作法会得出不正确的结果,以及降低程序的安全性。

算术溢出检查溢出

编辑

语音

大多数的计算机都可以区别以上两种溢出条件。当加法或减法的结果发生进位,必须考量到当运算的数值与结果都是unsigned numbers(无号数值,即“正数”)类型时,运算的结果就不适合使用这个数值类型。所以,在运行无号数值(正数)的加法或减法之后检查进位旗标是非常有用的作法。“溢出”在运算结果为无号数值时容易发生,可以从有符号的运算数值预计出这类的情形(例如:两个正整数相加产生的结果为一个负数)。所以,在运行2的补数的加法或减法之后检查溢出旗标是非常有用的作法(换言之,有考虑到有号数值)。

定义A和B都是长度为n位的二进制数

以下是竖式(第一行为进位):

其中的进位

1、输入的数是无符号整数,我们通过观察C判断是否溢出

a) C=1

i)如果是加法操作,结果不正确,结果溢出

ii)如果是减法操作,结果正确,结果未溢出

b) C=0

i)如果是加法操作,结果正确,结果未溢出

ii)如果是减法操作,结果不正确,结果未溢出。在这种情况下,结果是负数。然而,在无符号整数世界里,负数不存在,我们认识这样的操作是非法的。当然,如果认为答案是以有符号整数补码的形式出现,则结果正确。

2、输入的数是有符号整数,我们通过观察V判断是否溢出

a) V=1,结果不正确,结果溢出

b) V=0,结果正确,结果未溢出

参考资料

1.

:曹才翰;沈复兴,孙瑞清,余炯沛等.中国中学教学百科全书 数学卷:沈阳出版社,1991

科学计算机中溢出是指,算术溢出相关推荐

  1. 计算机领域裸机是指,计算机中裸机是指什么

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 计算机中裸机是指没有配置操作系统和其他软件的电子计算机,又指没有加入通讯网的手机.寻呼机. 电子计算机(electronic co ...

  2. 在计算机应用领域中媒体是指,在计算机中,媒体是指什么

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 在计算机中,媒体是指表示和传播信息的载体,计算工具的演化经历了由简单到复杂.从低级到高级的不同阶段,例如从"结绳记事&q ...

  3. 计算机中术语bug指,为什么计算机故障称为“bug”?

    为什么当电脑出问题的时候,我们就说出bug了?众所周知,因为著名的计算机科学家Grace Hopper曾在计算机中发现了一支真正的飞蛾,所以我们选择用bug(虫子)这个词来代指故障.虽然这是个真实故事 ...

  4. 计算机中记录是指什么意思,车辆年审的时候车管所电脑信息上显示暂扣状态是什么意思?...

    关于"车辆出了交通事故对方全责,对方不赔钱,怎么处理"的相关解答如下: 1.协商处理赔偿问题,在赔偿损失明确的前提下. 2.可以通过交警调解赔偿,协商不成,可以诉讼处理. 3.诉讼 ...

  5. 科学计算机中logo,简单做了个Logo~

    科学空间Logo 简单为blog设计了个Logo,虽说是设计,其实也就是简单地把量子力学中路径积分的被积函数$e^{\frac{i}{\hbar}S}$拿过来了. Logo的主体是一个"S& ...

  6. 小米10青春版科学计算机,中端新势力 小米10青春版对华为nova 7 SE

    设计上的差异 ·小米10青春版 ·华为nova 7 SE 小米10青春版和华为nova 7 SE都采用了6.5英寸左右的屏幕,所以它们在尺寸上相仿,中端级别的定位也意味着无法实现极致的屏占比,左.右和 ...

  7. 计算机语言bus代表什么,计算机中bus指什么

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 计算机中bus是指总线,总线的作用就是在计算机各部件之间传递信息,由数据总线,地址总线和控制总线组成. 总线(Bus)是计算机各种 ...

  8. 数据在计算机中的存储形式和运算

    一.数据概述 以C语言为例,里面所有的基本数据类型,都是以符合人类世界和自然世界的逻辑而出现的.比如说int,bool,float等等.这些数据类型出现的目的,是更于让人容易理解,可以说,这些数据类型 ...

  9. 算盘在计算机中的应用,中国大学MOOC: 算盘、计算机都是信息处理的工具。

    答案 查看答案 解析: [解析题]当前,应用计算机解决实际问题的能力主要体现为能够熟练使用OFFICE和网页制作工具操作计算机. [解析题]多媒体计算机中的媒体信息是指( ) [解析题]在计算机科学中 ...

  10. 计算机中的数据存储与PTA

    计算机数据存储 在做PTA上的题目时,我们经常遇到要处理数据溢出的问题,本篇文章大致讲述了如何理解数据在计算机中的表现形式和数据溢出. 位模式:由计算机位组成的有序序列.通常长度为八的位模式称为一字节 ...

最新文章

  1. MySQL - 锁机制初探
  2. 风控业务-模型稳定性评价指标PSI
  3. mysql生成数据库结构图
  4. FI功能增强业务说明书
  5. 获取用户列表为空_数据结构和算法(Golang实现)(15)常见数据结构-列表
  6. XenApp_XenDesktop_7.6实战篇之十六:安装Virtual Delivery Agent For Windows Server OS
  7. Linux实验二:vi编辑器的使用
  8. Cocos Creator -构建打包 所有版本测试
  9. python外部库是什么_如何使用Portable Python安装外部库?
  10. 你用什么型号手机呢?体验如何?
  11. 阿里云公布IP地理位置库抄袭调查结果;华为云电脑8月16日将停止服务和运营;Chrome 92发布|极客头条...
  12. 2021陕西高考单招成绩查询,2020陕西高考高职单招成绩一分一段表高考成绩排名...
  13. Cobbler详解(二)——Cobbler安装配置
  14. 篮球计分器软件_SPSS 26 综合性数学统计分析工具
  15. windows PAE扩展和AWE编程
  16. DirectX Repair
  17. PLSQL Developer 64位下载
  18. 使用el-image-viewer的预览功能
  19. 2021年Java开发爆款推荐!黑马java培训视频网盘下载
  20. 园区网核心交换机与出口路由器如何配置才能通信?

热门文章

  1. SpringMvc导入Excel
  2. sqlserver只剩mdf数据文件如何附加
  3. 问题 M: 【枚举】桐桐数
  4. 内存cpu占用不高但mysql很卡_为什么cpu占用率不高,内存也不高,电脑会卡
  5. 【LOJ6198】谢特(后缀自动机)(01Trie)(dsu on tree)
  6. 柬埔寨吴哥旅游:并不仅仅是神秘
  7. 解决output directory already exists
  8. 数学笔记:集合及其运算
  9. 【虚幻4】UMG组件的简介与使用(Common 常用组件篇)
  10. 关于anaconda