“为什么负数在计算机中要用补码表示”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) (建立内容为“因为取补码可以简化二进制加减法运算。 假如我们不使用补码,以4个字节的 int 为例,第1位是符号位,0代表正数,1代码…”的新页面) |
Jihongchang(讨论 | 贡献) |
||
| 第1行: | 第1行: | ||
因为取补码可以简化二进制加减法运算。 | 因为取补码可以简化二进制加减法运算。 | ||
| − | |||
假如我们不使用补码,以4个字节的 int 为例,第1位是符号位,0代表正数,1代码负数 | 假如我们不使用补码,以4个字节的 int 为例,第1位是符号位,0代表正数,1代码负数 | ||
| 第15行: | 第14行: | ||
|- | |- | ||
| colspan="2" | -2就是: | | colspan="2" | -2就是: | ||
| − | |1000 0000 0000 0000 0000 0000 0000 0001 | + | |1000 0000 0000 0000 0000 0000 0000 0010 |
| + | |} | ||
| + | -2+1应该等于-1,这个时候我们发现: | ||
| + | {| class="wikitable" | ||
| + | | | ||
| + | |1000 0000 0000 0000 0000 0000 0000 0010 | ||
| + | |(-2) | ||
| + | |- | ||
| + | | + | ||
| + | |0000 0000 0000 0000 0000 0000 0000 0001 | ||
| + | |(+1) | ||
| + | |- | ||
| + | |= | ||
| + | |1000 0000 0000 0000 0000 0000 0000 0011 | ||
| + | |(-3) | ||
| + | |} | ||
| + | 这并不符合我们的期待。 | ||
| + | |||
| + | |||
| + | |||
| + | 相反,如果我们应用补码: | ||
| + | {| class="wikitable" | ||
| + | | +1是: | ||
| + | |0000 0000 0000 0000 0000 0000 0000 0001 | ||
| + | |- | ||
| + | | -1就是: | ||
| + | |1111 1111 1111 1111 1111 1111 1111 1111 | ||
|} | |} | ||
| − | |||
2022年9月3日 (六) 10:31的版本
因为取补码可以简化二进制加减法运算。
假如我们不使用补码,以4个字节的 int 为例,第1位是符号位,0代表正数,1代码负数
| +1是: | 0000 0000 0000 0000 0000 0000 0000 0001 | |
| -1就是: | 1000 0000 0000 0000 0000 0000 0000 0001 | |
| +2是: | 0000 0000 0000 0000 0000 0000 0000 0010 | |
| -2就是: | 1000 0000 0000 0000 0000 0000 0000 0010 | |
-2+1应该等于-1,这个时候我们发现:
| 1000 0000 0000 0000 0000 0000 0000 0010 | (-2) | |
| + | 0000 0000 0000 0000 0000 0000 0000 0001 | (+1) |
| = | 1000 0000 0000 0000 0000 0000 0000 0011 | (-3) |
这并不符合我们的期待。
相反,如果我们应用补码:
| +1是: | 0000 0000 0000 0000 0000 0000 0000 0001 |
| -1就是: | 1111 1111 1111 1111 1111 1111 1111 1111 |