搞懂计算机中原码、反码、补码,仅需这一篇就够了!!!
做而论道_CS:
补码的原理,与 “取反加一” 毫无关系。
补码的来源,可以用十进制来说明。
假定,只使用两位数:0~99。
此时,-1 就可以用 +99 代替。
如:24-1 = 23
24 + 99 = (一百) 23
忽略进位,只取两位,这两种算法的功能相同。
三角函数中,也有:减 90°与加 270°等价。
【限定了位数,数值的变化,就有了周期性。】
正数(补码),就可以代表负数;
加法,就可以代替减法。
因此,有一个加法器就可走遍天下。
------------
计算机,有 8 位机、16 位机。
每次运算,就只用到 8、16 位二进制数。
即:参加运算的位数,是限定的。
那么,45-45 = 0,八位机将如下计算:
0010 1101 + xxxx xxxx = 0000 0000。
其中的 xxxx xxxx,就是【-45 的八位补码】。
这个补码,到底是什么?
你自己也能推导出来。
先移项:xxxx xxxx = 0000 0000-0010 1101,
可得出:xxxx xxxx = (借位 1) 1101 0011,
取八位:xxxx xxxx = 1101 0011。
至此,就求出了 [-45]补 = 1101 0011。
求负数的补码,就这么简单。
-----------------
实际上,任意负数(-X)的补码,都是:0 - X。
你用二进制简单算一下,立刻就能得到结果。
(-128 的 8 位补码,也就是这样求出来的。)
同理,任意正数(+X)的补码,也都是:0 + X。
0 + X,不就是 X 吗?
即,正数的补码,就是 X 本身!
-----------------
计算机中,只配置了加法器,并没有减法器。
任何负数,都必须先转换成正数,再做加法。
这个正数,计算机专家就称之为【补码】。
怎么求 -X 对应的正数(补码)?
用 X-X = 0 就能推出来。
这个公式,太初级了,还需要证明吗?
专家(如盖茨之流)从小就迷上了计算机,没正经上过学。
这些基本常识,显然都很模糊。
而且,大家都知道:老外的算术能力很差。
用二进制计算 0-X,也许得掰出脚趾头。
没办法,他们只好自己编造【谬论】:
真值机器数符号位原码反码取反加一符号位不变模同余 ...
我们的老师水平太洼,也弄不懂补码!
只知道忽悠学生、抓你挂科。
|