网上有关“如何检查补码加减运算中的溢出问题?”话题很是火热,小编也是针对如何检查补码加减运算中的溢出问题?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
通常有三种表述方式(说法):
(1) 两个符号相同的补码数相加,如果和的符号与加数的符号相反,或两个符号相反的补码数相减,差的符号与减数的符号相同,都属于运算结果溢出.这种判别方法比较复杂,要区别加还是减两种不同运算情况,还要检查结果的符号与其中一个操作数的符号的同异,故很少使用;
(2) 两个补码数相加减时,若最高数值位向符号位送的进位值与符号位送向更高位的进位值不相同,也是运算结果溢出.
(3) 在采用双符号位(如定点小数的模4补码)运算时,若两个符号位的得值不同(01或10)则是溢出.01表明两个正数相加,结果大于机器所能表示的最大正数,称为"上溢";10表明两个负数相加,结果小于机器所能表示的最小负数,称为"下溢";双符号位的高位符号位,不管结果溢出否,均是运算结果正确的符号位,这个结论在乘法运算过程中是很有实际意义的.请注意,在采用双符号位的方案中,在寄存器和内存储器存储数据时,只需存一位符号,双符号位仅用在加法器线路部分.
再次强调,这三种不同说法是对同一个事实的略有区别的表述,实现时用到的线路可以有所区别,但问题的实质是完全一样的.
不一定。进位是指最高位进1,溢出是指最高位和次高位进位不一样。进位表示无符号数运算超范围,溢出表示有符号数超范围。溢出可分3中情况分析,以加法为例:1.都是正数,最高位都是0,如果次高位进位,结果最高位为1,因为是补码运算,即结果是负数,出错。2.一正一负,永远不会出错,最高位一个1一个0,结果次高位进位最高位就会进位,永远不溢出。3.2个负数,最高位都是1,最到位肯定进位,如果不进位最高位结果为0正数,不对。所以溢出是补码运算结果超出表示范围的意思。
1111 1111 -1
+1111 1111 -1
--------------
1 1111 1110 -2
进位不溢出。
关于“如何检查补码加减运算中的溢出问题?”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
本文来自作者[傲蕾]投稿,不代表濮阳号立场,如若转载,请注明出处:https://www.pyyp.cn/py/992.html
评论列表(3条)
我是濮阳号的签约作者“傲蕾”
本文概览:网上有关“如何检查补码加减运算中的溢出问题?”话题很是火热,小编也是针对如何检查补码加减运算中的溢出问题?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,...
文章不错《如何检查补码加减运算中的溢出问题-》内容很有帮助