本文目录:
如何判断是否溢出?
在用二进制进行加减计算的时候,要看“最高位的进位”就“次高位的进位”。 这两个进位,如果相同,则无溢出。若不同,则溢出。
在几乎所有计算机语言中,不管是新的语言还是旧的语言,使缓冲区溢出的任何尝试通常都会被该语言本身自动检测并阻止(比如通过引发一个异常或根据需要给缓冲区添加更多空间)。
当应用程序读取用户(也可能是恶意攻击者)数据,试图复制到应用程序开辟的内存缓冲区中,却无法保证缓冲区的空间足够时(换言之,假设代码申请了 N 字节大小的内存缓冲区,随后又向其中复制超过 N 字节的数据)。内存缓冲区就可能会溢出。想一想,如果你向 12 盎司的玻璃杯中倒入 16 盎司水,那么多出来的 4 盎司水怎么办?当然会满到玻璃杯外面了!
怎样检测溢出
在计算机编程中,检测溢出有多种方法。对于有符号整数加法,若两个正数相加结果为负,或者两个负数相加结果为正,就发生了溢出。减法类似,正减正得负或负减负得正可能是溢出。
无符号整数加法中,结果小于任意一个加数则可能是溢出。
在编程时,可以通过检查数据类型的范围来判断。比如在C语言中,对于int类型(通常范围是 -2147483648到2147483647),在进行运算后,将结果和这个范围比较,超出范围就判定为溢出,一些编程语言也有专门的异常处理机制来捕获溢出情况。
如何判断是否溢出?
你就看屏幕吧。
当你的屏幕上出现莫名其妙的乱码时,你的计算机中,就是发生了溢出。