这道题不懂?

如题所述

第1个回答  2019-10-07
勿需怀疑,补码加法的规则就是书上这样的,数学已经证明可以这样来运算。
我说一下自己对补码加法的认识,现在可能不好理解,慢慢思考会有所裨益。
一个补码x0x1x2...xn,其真值公式为:
-x0 + x1x2...xn
0、1、2...n都是下标,x0是符号位。本来这个公式是给带一位整数的定点小数用的,但灵活一些,也可以作为整数的真值公式来理解,毕竟小数和整数只差有无小数点而已。比如书上的10111010,真值就是-1+0111010,灵活一些,因-1处最高位,扩展为-10000000 + 0111010 = -1000110 = -70。同样作扩展,另一个11001001 = -10000000 + 1001001 = -110111 = -55。两数相加的结果10000011 = -10000000 + 0000011 = -125。
以上运算是纯粹的数学上的二进制运算。
我们不但绕过了补码-反码-原码的转换过程,还从真值公式及三个数的转换过程发现了补码可以看成:最高位表示的一个符号数(即有符号的,但低位全为0的数) + 一个低位构成的正数。最高位为1时,表示一个很大的负数,为0时,却只能表示一个无用的正0。加法中最高位相加,不妨理解成异或运算(也就是书上说的自然丢失),这样就不会被字面上的“溢出”弄昏了头。
最后来看看两个补码相加时,最高位的运算,把溢出的错误认识彻底纠正。(一)0+0=0,表示两个正数相加得正数,正确。如果低位有进位到最高位,即0+0+1=1,得负数,没有其他解释,只能是溢出了。(二)0+1或1+0,表示正、负数相加,不管低位有无进位,符号位如何变化,均不可能溢出。(三)1+1=0,从字面就看出,两个负数相加得正数,溢出。如低位有进位,1+1+1=1,这倒正常了,因为正数的1与其中的一个负数的1,作1+1=0抵消了,剩下的一个负数的1正好表示最终结果为负数,所以说这是正确结果。这里的1+1,说明了符号位相加得到的进位1没有影响到计算结果,被舍弃也是很合理的处理方式
将来如学到补码乘法,对加法器的分类有了更深认识,就会发现把正数相加的进位,和符号位的进位区分开来之后,补码也能做乘法了。这里只说明一个结果,符号位进位是拖后腿的,越往上进位,结果越小。正数位进位是积极的,结果会变大本回答被提问者采纳
相似回答