汇编里面,进位一定溢出吗

2025-03-09 11:41:44
推荐回答(3个)
回答1:

不一定。进位是指最高位进1,溢出是指最高位和次高位进位不一样。进位表示无符号数运算超范围,溢出表示有符号数超范围。溢出可分3中情况分析,以加法为例:1.都是正数,最高位都是0,如果次高位进位,结果最高位为1,因为是补码运算,即结果是负数,出错。2.一正一负,永远不会出错,最高位一个1一个0,结果次高位进位最高位就会进位,永远不溢出。3.2个负数,最高位都是1,最到位肯定进位,如果不进位最高位结果为0正数,不对。所以溢出是补码运算结果超出表示范围的意思。
1111 1111 -1
+1111 1111 -1
--------------
1 1111 1110 -2
进位不溢出。

回答2:

溢出,是指数据过大,超出了编码所能表示的范围。

对于八位二进制【无符号数】,表示范围是 0~255。

 当运算结果,达到 256 以及更大,就溢出了,特征是“进位为一”。

对于八位二进制【带符号数】,表示范围是 -128~+127。

 当运算结果,小于-128 或大于 127,就溢出了,特征是“符号错误”。

------------------------

按照 Intel 所设计 CPU 的特点,进位和溢出,是不同的。

  它们把“无符号数”的溢出,则称为“进位”。

  而如果“带符号数”的溢出,才称为“溢出”。

那么,进位一定溢出吗?

  显然不是的。

  它们两者,在 Intel 公司,根本就没有关系。

回答3:

额……进来晚了……LS说的对……