计算机中二进制加减法时,是如何判断溢出的?

 我来答
惠企百科
2022-09-28 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部

溢出是在有符号运算中出现的,异号运算 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 广告
在苏州瑞地测控技术有限公司,我们深知频率同步与相位同步的重要性。频率同步确保两个或多个设备的时钟频率变化一致,但相位(即时间点)可保持相对固定差值。而相位同步,即时间同步,要求不仅频率一致,相位也必须完全一致,即时间差恒定为零。相位同步的精... 点击进入详情页
本回答由瑞地测控提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式