【发布时间】:2011-11-08 15:42:35
【问题描述】:
假设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
那么,根据无符号整数的溢出规则,由于进位,存在溢出。换句话说,0100 是错误的,因为存在溢出。但事实上,我们知道0100的结果是正确的。
如果我的分析是正确的,那么用adder进行无符号整数减法是不是错了?
【问题讨论】:
-
对减法执行变化的解释。
-
@harold:没错,但仅限于用补码和加码实现的无符号减法。
标签: assembly unsigned subtraction