计算机中二进制加减法时,是如何判断溢出的?
2022-09-28 · 百度认证:北京惠企网络技术有限公司官方账号
溢出是在有符号运算中出现的,异号运算 OF=0,同号运算 OF=1。
溢出,在用二进制进行加减计算的时候,要看“最高位的进位”就“次高位的进位”。
这两个进位,如果相同,则无溢出。
设两个8位补码表示的数b7b6b5b4b3b2b1b0和a7a6a5a4a3a2a1a0相加,
把b7 + a7的进位称为C7,把b6 + a6的进位称为C6,
那么,C7、C6,如果不同,就是溢出了。
楼主给出的题目如下,依据这些,是不能判断溢出的,因为其中并没有“次高位的进位”。
溢出(b7,a7为符号标记),则____
A.b7与a7的逻辑或结果一定是1
B.b7与a7的逻辑与结果一定是为0
C.b7与a7的逻辑异或结果一定为1
D.b7与a7的逻辑异或结果一定0;答案为D
扩展资料:
在几乎所有计算机语言中,不管是新的语言还是旧的语言,使缓冲区溢出的任何尝试通常都会被该语言本身自动检测并阻止(比如通过引发一个异常或根据需要给缓冲区添加更多空间)。但是有两种语言不是这样:C 和 C++ 语言。C 和 C++ 语言通常只是让额外的数据乱写到其余内存的任何位置,而这种情况可能被利用从而导致恐怖的结果。
更糟糕的是,用 C 和 C++ 编写正确的代码来始终如一地处理缓冲区溢出则更为困难;很容易就会意外地导致缓冲区溢出。除了 C 和 C++ 使用得 非常广泛外,上述这些可能都是不相关的事实;例如,Red Hat Linux 7.1 中 86% 的代码行都是用 C 或 C ++ 编写的。因此,大量的代码对这个问题都是脆弱的,因为实现语言无法保护代码避免这个问题。
参考资料来源:百度百科-溢出
2024-08-12 广告