原码、反码、补码
在计算机系统中,数值,一律采用补码表示和存储。
也就是说,在计算机中,只有补码,并没有原码和反码。
补码,实际上,也就是一个“代替负数”的正数。
所以,使用了补码之后,计算机中,就没有负数了。
而且,在计算机中,也就没有减法运算了。
因此,计算机只需有一个加法器,就可以打遍天下。
补码的功能之一,就是可以简化硬件!
原码和反码,都没有这种功能。
所以,计算机,根本不使用它们!
------------------------
补码(就是正数),怎么就能代替负数呢?
其实,很简单。
你看钟表的时针,倒拨 3 小时、正拨 9 小时,效果相同吧?
你看三角函数,-π/2 和 +3π/2,两者的函数值,相同吧?
再看 2 位 10 进数,0~99,计数周期是 10^2。
可以看到:
25 - 1 = 24
25 + 99 = (一百) 24
只要你忽略进位(10^2),+99 和-1 就是等效的。
以上这些,有如下规律:
正数 = 负数 + 周期
这个正数,就是“负数的补数”,它就可以代替负数,进行运算。
----------------------
计算机用二进制,补数,就称为:补码。
8 位 2 进制数,共可以构成 256 组代码。
所以,计数周期,就是 2^8 = 256。
-1 的补码就是:-1 + 256 = 255
= 1111 1111 (二进制)。
-2 的补码就是:254 = 1111 1110。
。。。
-128 的补码就是:128 = 1000 0000。
以上就是 256 组代码中的 128 个负数补码。
正数,必须直接参加运算,不许做任何变换。
正数本身,已经就是正数,所以并不存在什么“正数的补码”。
-------------------------
举例说明,如: 5 - 7 = -2。
用八位补码计算的过程如下:
5 = 0000 0101
-7的补码= 1111 1001
--相加-------------
得: (1) 1111 1110 = -2 的补码
舍弃进位,只保留八位,这就用加法,实现了 5-7。
----------------------
计算机,只用补码。
原码反码,都是虚构出来的。
即使把它们说出天花来,它们也是不存在的。
求反加一、符号位不变。。。是怎么回事?
老外数学不好,才会想出这些个烂办法。
原码111010110
反码将各位的值取反000101001
补码+1
000101010
这样应该明白了吧
如果你对我的答案还满意
请选个满意答案
呵呵