为什么补码会比原码多一个数
做而论道_CS:
计算机中,只有补码,根本就没有原码和反码。
原码反码,不值一提。
码长八位时,各码的表示范围如下。
原码:-127 ~ +127;
反码:-127 ~ +127;
补码:-128 ~ +127。
-128 只有补码,没有原码和反码!
没有原码,拿什么取反?
没有反码,拿什么加一?
既然取反加一不可用,那么,
-128 的补码,又是怎么来的?
是特殊规定的吗?
其实,各个数的补码,都是算出来的,并不是规定的。
取反加一,并非是补码的来源。
计算机的字长,是固定的。
八位机,每次计算,就是 8 位数。
而且,计算机中,只有加法器,没有减法器。
想要做减法,就要用【加上补码】来实现。
那么,45-45 = 0,八位机计算如下:
0010 1101 + xxxx xxxx = 0000 0000。
其中的:xxxx xxxx,就是【-45 的八位补码】。
这个补码,到底是什么?
你自己也能推导出来。
先移项:xxxx xxxx = 0000 0000-0010 1101,
可得出:xxxx xxxx = (借位 1) 1101 0011,
只取八位结果,即:1101 0011。
至此,就求出了 [-45]补 = 1101 0011。
求负数的补码,就是这么简单!
-----------------
实际上,任意负数(-X)的补码,都是:0 - X。
你用二进制简单算一下,立刻就能得到结果。
(-128 的 8 位补码,也就是这样求出来的。)
同理,任意正数(+X)的补码,也都是:0 + X。
0 + X,不就是 X 吗?
所以,零和正数的补码,就是 X 本身!
-----------------
在计算机中,只有加法器,只能使用补码。
所以,计算机中,根本就没有原码和反码。
不存在的东西,为什么还要讲、还要学、还要考研?
其实,计算机专家和老师,就是指望这个混饭吃!
顺便,再抓几个不及格的,抖一下威风。
大家都知道,老外的算术能力太差,
算个简单的数,都恨不得掰出脚趾头。
所以,计算机专家就编造了一套谎言:
机器数真值符号位原码反码补码正数三码相同
负数取反加一符号位不变符号位也参加运算模同余 ...
写这些,明显就是【拿个鞋拔子当做玉如意】。
假货,不仅仅在古董行业才有啊!
|