第13章:减法器的实现
Last updated
Last updated
减法可以通过加法实现。考虑8位二进制的减法 ,其还能被表示为
即先对b取1的补数,再将结果与和分别相加。对于最后的-256,
如果,那么的结果会大于256,即最高位的进位输出为1。
如果,此时的结果为负数,对于无符号整数减法来说发生了下溢,此时的结果就小于256,即最高位的进位输出为0。
我们依照上述逻辑将第12章的加法器改造成加/减法器。
(1) 我们首先增加加/减法的选择开关,对于减法的情况,加/减法器的一输入端需要进行取补操作,我们采用异或门来实现:
(2) 对于减法操作,只需要将最低位的接地线改为进位输入即可。
(3) 我们还需要一个操作来判断最高位的进位输出,对于加法进位输出为1时发生上溢错误,对于减法输出为0时发生下溢错误。
改进后的加/减法器的实现如下:
在有符号的8位二进制数中,我们的表示范围不再是,而应该是。我们仍旧采用取反加1的方式来表示负数,即用的方式表示。举个例子,对于,我们对取反再,即为。注意到取补运算是可逆的。
注:
有符号整数的第8位实际为符号位,表示正数,表示负数。
有符号的减法实质是就是两个有符号整数的加法。
如果两个输入数字符号相同,而结果符号与之相反,则发生了上溢/下溢,其结果非法。