溢出、上溢、下溢

overflow:溢出
overflow:上溢
underflow:下溢
stack underflow:堆栈下溢;
1. 概念
上溢与下溢

是当一个超长的数据进入到缓冲区时,超出部分被写入上级缓冲区,上级缓冲区存放的可能是数据、上一条指令的指针,或者是其他程序的输出内容,这些内容都被覆盖或者破坏掉。可见一小部分数据或者一套指令的溢出就可能导致一个程序或者操作系统崩溃。

与之对应的就是下溢,下溢是当一个超长的数据进入到缓冲区时,超出部分被写入下级缓冲区,下级缓冲区存放的是下一条指令的指针,或者是其他程序的输出内容。

其他解释

上溢:超出所能表示的最大正数
下溢:超出所能表示的最小负数

如 16 位整数范围为:-32768(−215 -2^{15}−2 
15
 ) ~ +32767(215−1 2^{15}-12 
15
 −1),则当 32767 再加1时,发生上溢;当 -32768 再减 1 时,发生下溢。

2. 溢出的判断
两数相加溢出的判断:

同号时才可能溢出,同为正,有可能上溢,同为负,有可能下溢;
int add(int a, int b) {
    int c = a + b;
    if ((a^b) & INT_MIN == 0) {
        if ((c^a) & INT_MIN) {
            c = (a<0) ? INT_MIN : INT_MA;
        }
    }
}
--------------------- 
作者:Inside_Zhang 
来源:CSDN 
原文:https://blog.csdn.net/lanchunhui/article/details/52083273 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在64位PC上进行溢出测试是为了检测计算机系统在处理大数字时的表现。溢出是指当一个数超出了所能表示的范围而导致失真或截断。下溢是指当一个数小于所能表示的最小值时导致失真。 为了进行这种测试,我们可以选择使用一个超过计算机所能表示的最大值的数进行计算。比如,我们可以使用一个巨大的整数或非常小的小数进行测试。对于下溢测试,我们可以使用一个接近于0但小于计算机能够表示的最小值的数进行计算。 在这个实验中,我们可以使用编程语言如C++或Java来编写测试程序。通过声明64位变量并使用测试值进行计算,我们可以观察计算结果是否正确。如果结果表现为错误的值或者截断,那么我们可以确认系统出现了溢出下溢的情况。 在进行这种测试时,我们应该注意保持计算结果的正确性,避免其它因素对计算结果的干扰。因此,我们需要使用正确的数据类型和运算符来确保计算的准确性。 此外,在进行溢出测试时,我们还应该注意程序的性能问题。由于溢出测试可能需要大量的计算和内存空间,我们应该确保程序在处理大数值时不会导致计算机系统的崩溃或资源的耗尽。 总结而言,64位PC上的溢出下溢测试是为了确保计算机系统在处理大数值时的准确性和稳定性。这样的测试有助于提高系统的可靠性,并确保数值计算的准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值