假设我们具有以下二进制数字及其表示形式:
| bin | unsigned | signed |
|:---:|----------|----------|
| 110 | 6 | -2 |
| 111 | 7 | -1 |
现在,无论有符号或无符号,111 + 110 = 1101
,现在,我可以将结果1101
解释为有符号或无符号,即:
| bin | unsigned | signed |
|:----:|----------|----------|
| 1101 | 13 | -3 |
与十进制运算符匹配:
6+7 = 13
-1-2 = -3
[signed addition
或unsigned addition
之间没有区别。那么,为什么CPU具有不同的电路/指令来进行这种操作?
因为2的补码加/减与无符号加/减是相同的二进制运算。但是对于比较(以及除法和扩大乘法)而言,将MSB解释为符号位还是无关紧要。