做而论道_CS:

其实,对于补码的理解,不用那么麻烦的。

而且,你就是把 “符号位原码反码取反加一” 这些都背熟了,

你也不知道:计算机怎么就省略了减法器!

我们熟悉的十进制,也有 “补码” 的。

你看:27 + 99 = (一百) 26。

如果你弄丢了进位,就是:减去了 100。

那么,你再加 99,也就是-1。

此时,就是:27-1 = 26。

同理,你加上 98,也就是-2。

。。。

舍弃了进位:

用正数,就能代替负数。这就是 “补码” 的来源。

用加法,就能完成减法运算。这就可以简化硬件。

计算机用二进制数。

八位数的范围是:0000 0000 ~ 1111 1111。

(对应十进制的:0 ~ 255。)

产生进位,就是:2^8 = 256。

做加法时,如果丢了进位,255 就是:-1。

同理,254 (1111 1110),就是:-2。

那么,-3,应该用什么代替?

你一定会算。

这些 “代替负数” 的正数,就是:补码。

例:-57 的 8 位补码是多少?

解:2^8-57 = 199 = 1100 0111 (二进制)。

如果是 16 位的变量,就要用:2^16 = 65536 来求解。