补码可以将减法转化为加法,但有些电路需要判断加法是否溢出。
判断方法
判断加法是否溢出的条件是最高有效位和符号有效位。
判断情况
对于Nbit的二进制数,符号位为最高位,最高有效位为符号位的低1位。加法有四种情况
[正]+[负]
[负]+[正]
[正]+[正]
[负]+[负]
其中[负]+[正] 和[正]+[负]是一定不会溢出的,但是它们的符号位进位和有效位进位有可能有变化。所以也需要考虑进来。
判断枚举
以4bit的二进制为例,
正大Pmax_4 = 0111 (7)
正小Pmin_4 = 0001 (7)
负大Nmax_4 = 1111 (-1)
负小Nmin_4 = 1000 (-8)
不考虑0000,因为它对加法实际没影响。
已经排除交换律的组合。
情况 | 符号位 | 最高有效位 | 符号位进位 | 最高有效位进位 | 溢出 |
---|---|---|---|---|---|
P m a x + P m a x = 1110 P_{max}+P_{max}=1110 Pmax+Pmax=1110 | 1 | 0 | N | Y | Y |
P m a x + P m i n = 1000 P_{max}+P_{min}=1000 Pmax+Pmin=1000 | 1 | 0 | N | Y | Y |
P m i n + P m i n = 0010 P_{min}+P_{min}=0010 Pmin |