做而论道_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 来求解。