假设A
和B
是带正号的正整数,则对于A-B
,它是使用A+2
的的补码计算的B
。
例如,在4位二进制系统中,对于有符号整数,我们有
7-3=0111-0011=0111+1101=(1)0100
,括号中的1是进位位。根据有符号整数的溢出规则,我们知道没有溢出,因此结果是正确的。
但是,对于无符号整数,如果我们计算会发生什么7-3
?如果我们使用上面提到的相同方法:
7-3=0111-0011=0111+1101=(1)0100
Run Code Online (Sandbox Code Playgroud)
然后,根据无符号整数的溢出规则,由于进位而导致溢出。换句话说,这0100
是错误的,因为存在溢出。但实际上,我们知道结果0100
是正确的。
如果我的分析是正确的,那么使用加法器执行无符号整数减法是不是错误?