电路中的加法
原码、反码、补码
加法也是一个二元运算,会不会刚好是一种逻辑运算?
(资料图)
对此,我们列出加法表:
但是,在产生了进位,结果是两位数,显然不同于任何逻辑运算。但是,我们发现,如果不看进位,是异或运算;如果我们只看进位,是与运算。于是,我们设计出一位加法器:
我们把它称为半加器,为本位输出,为进位输出。
但是半加器对于进位并没有再次相加,于是我们需要两个半加器组成全加器:
是进位输入,是本位输出,是进位输出。
我们用全加器组成完整的加法器:
因为它是一位一位出结果的,所以我们把它叫为行进波进位加法器。
我们前面所讲的所有二进制数都是原码。
我们之前所讲的二进制数都是正数,但是我们不知道怎么表示负数。
于是我们把一个二进制数的最高位变为符号位,表示负数,表示正数。
例如。
符号位权值为负数。
但是这样的负数直接与正数相加会产生错误结果,于是有了反码与补码。
反码在原码基础上保留符号位,其余位按位取反,比如。
补码在反码基础上加上,比如。
在计算机中,正数用原码存储,负数用补码存储。
正数原码加负数补码得到正确的结果,我们利用这点可以用加法器计算减法。