一:原码,反码,补码的概念
原码:是计算机对数字的二进制的表示方法,第一位为符号位,0为正数,1为负数。
反码:符号位不变,对原码其余位数取反(0变1,1变0)后得到的即为反码。
补码:反码加1,得到补码。
例:
需要注意的是,正整数的原码反码补码都相同。
在计算机中,都以补码来储存,当用到的时候计算机会把补码重新转换为原码来表示一个数。
-------------------------------------------------------------------------------------------------------------------------------
二:反码,补码的由来
如果我们用原码进行1加-1的运算:
0000 0001
+1000 0001
1000 0010
诚然,结果为-2,证明这个结果是错误的。
于是反码诞生了,接下来我们用1与-1的反码进行运算:
0000 0001
+1111 1110
1111 1111
这次的真值显然是对了,我们再使用别的数相加减进行验证:
例 5+(-5)
0000 0101
+1111 1010
1111 1111
显然,使用反码进行相加减得到的真值是正确的,但是又产生了另外一个问题,0的反码有两个,一个为1111 1111,一个为0000 0000,但一个为正,一个为负,为了解决这个问题,补码出现了。
这次我们用1与-1的补码进行运算:
0000 0001
+1111 1111
0000 0000
这次我们的0就没有了正负之分,问题也完美的得到了解决。
使用补码,我们就可以在进行运算时统一加减,简化了计算机的设计。