正负数字,存放在计算机中,就称为:补码。
正数,就直接以二进制存放。
负数,则需要变换一下,再存放。
--------------
如果,仅使用两位十进制数,就是 00~99,共有 100 个数字。
减一,就可以用 +99 代替:
28 - 1 = 27
28 + 99 = (1) 27
忽略进位,结果就是相同的。
于是,99,就是-1 的补数;
同理,98,就是-1 的补数;
利用【补数】,就可把“相减”运算,改为“相加”。
利用【补数】,就可把“负数”改为“正数”。
对于“-1”,其对应的【补数】就是:100-1 = 99。
-------------
计算机中,没有数字。1 和 0,都是代码。
八位二进制代码,称为一个字节。
0000 0000~1111 1111,共有 256 个代码。
-1,就可以用 256- 1 = 255 (=1111 1111) 代替,
-2,就可以用 256- 2 = 254 (=1111 1110) 代替,
那么,1111 1111 就称为-1 的补码;
同理,1111 1110 也就是-2 的补码。
-------------
计算机中,只有加法器,没有减法器。
做减法运算,必须使用【补码】,用加法来操作。
补码的定义式,如下:
正数的补码,就是该数字本身。
负数的补码,就用“模”,加上该负数,即可。
求补码,并不需要学习“原码反码符号位 ”这些垃圾知识。
什么是补码?
补码,就是一个“代替负数”做运算的正数。
使用了补码,计算机中,就没有负数了,也就没有了减法运算。
因此,计算机只需要一个加法器,就可以走遍天下。
--------------------
补码(一个正数),怎么就能代替负数呢?
你看 2 位 10 进制数(00 ~ 99)的运算:
25 - 1 = 24
25 + 99 = (一百) 24
只要你把超出 2 位的进位,舍弃掉,+99 就能代替-1。
加法,也就能代替减法。
同理,+98,也可以代替-2。
。。。
这些正数,就是“负数的补数”。
求补数的公式,是:补数=负数+周期(一百)。
通用的周期,就是:10^n,n 是位数。
--------------------
计算机用二进制,这就是“补码”了?
8 位 2 进制数,是:0 ~ 255。
计数周期是:2^8 = 256。
-1 就可用 255 = 1111 1111 代替。
。。。
-128 就用 128 = 1000 0000 代替。
这些二进制数,就是负数的补码。
-----------------------
补码,就是补码,和原码反码符号位,没有任何关系。
从原码开始学补码,就弄不懂“什么是补码”。
老外脑子不好,也弄不懂什么了。
所以他们才编造了“取反加一...”。