二进制中的反码、补码、原码是什么?

网上关于这三个的运算有好多文章介绍,我除了想知道运算的过程之外,还想知道的是他们是什么,用来干什么的

在计算机系统中,数值,一律采用补码表示和存储。

也就是说,在计算机中,只有补码,并没有原码和反码。

补码,实际上,也就是一个“代替负数”的正数。

所以,使用了补码之后,计算机中,就没有负数了。

而且,在计算机中,也就没有减法运算了。

因此,计算机只需有一个加法器,就可以打遍天下。

补码的功能之一,就是可以简化硬件!

原码和反码,都没有这种功能。

所以,计算机,根本就不用它们!

它们是干什么的呢?

就是用来唬人的。

是为了让这些计算机老师,混碗稀粥喝。

------------------------

补码(也就是正数),怎么就能代替负数呢?

其实,很简单。

你看钟表的时针,倒拨 3 小时、正拨 9 小时,效果相同吧?

你看三角函数,-π/2 和 +3π/2,两者的函数值,相同吧?

再看 2 位 10 进数,0~99,计数周期是 10^2。

可以看到:

   25 - 1 = 24

   25 + 99 = (一百)  24

你只要忽略进位(10^2),+99 和-1 就是等效的。

以上这些,有如下规律:

   正数 = 负数 + 周期。

这个正数,就是“负数的补数”,它就可以代替负数,进行运算。

在三角函数中,负角度,和正角度,是怎么变换的呢? 

也是用这样的公式: 正角度 = 负角度 + 周期(2π)。

----------------------

计算机用二进制,补数,就称为:补码。

8 位 2 进制数,它们可以构成 256 组代码。

所以,计数周期就是:2^8 = 256。

求补码的公式是: 补码 = 负数 + 周期(2^n)。

-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。


----------------------

计算机,只用补码,因为补码运算符合数学的规律。

而原码反码,都是人为虚构出来的。

即使把它们说出天花来,它们也是不存在的。

求反加一、符号位不变。。。是怎么回事?

老外数学不好,才会想出这些个烂办法。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-14
电脑只认识0和1所以都是用的二进制
所以,比如:
2
的原码
0010
(前面是都是0,省略)
反码
1101
(
就是把0与1反过来啊,
注意前面的0
都是1,全部反)
至于补码,
这就是要讨论的数值溢出,
因为位数太大,
我只先8位来说明明:
8位的最大数是:
0111
1111
再加1的话,会变成
1000
0000
这个就是负数了(1开头为负)
比如:127
+1
就会变成
-128
再+1
=
-127
一直加到127
相似回答