补数的加减法本文内容参考自hldmn老师的 《深入理解计算机网络》 一书中国水利水电出版社
一、补数加法: 1、补数的加法
将两个机器数相加的补数是通过先将两个机器数分别求补数再相加而得到的。 以补数形式表示时,相加后可以将符号比特和数值比特一起运算,符号比特进位而盈利时直接舍弃。 结果是两个数之和的补数形式。
例1 :求出两个十进制数之和35 18。
首先,字长只能用8位,也就是8位的二进制表示。
35个源代码: 00100011。
18个源代码: 00010010。
35和18都是正数,因此补码与原始代码完全匹配。
35的补数: 00100011。
18的补数: 00010010。
补数可以与符号位一起运算,因此运算法则与无符号二进制运算相同。 00100011---35二进制表示00010010---18二进制表示00110101-----转换为进制数时为53。 结果是正确的! 例2 :求出两个十进制数之和35(-18 )。
与例1一样,只能用8位表示。
35个源代码: 00100011。
-18的源代码: 10010010。
35是正数,因此补码与原始代码完全匹配,而-18是负数,需要转换补码。
35的补数: 00100011。
-18的补码:从源代码中去除符号位,取反,在最低位1,得到11101110的结果。 这种情况下都是补数,运算规则与无符号二进制加法相同。 00100011 11101110 100010001---前面规定字长为8位,这里出现了9位,所以最高位截断,截断的结果为00010001,变换为十进制,为17。 结果是正确的! (超过字长的部分直接舍弃)二、补数减法: 1、补数减法
减法实际上是加上负数。 算法和加法实际相符!