详解原码反码补码
首先给出定义
∙
\qquad\bullet
∙正数的原码反码补码相同等于其本身
∙
\qquad\bullet
∙负数的原码
=
=
=本身,负数的反码
=
=
=原码除符号位外按位取反,补码
=
=
=反码
+
1
+1
+1
举个例子
一个有符号位 8 位二进制数 一个有符号位8位二进制数 一个有符号位8位二进制数
10
原码 00001010
反码 00001010
补码
-10
原码 10001010
反码 11110101
补码 11110110
思考补码的作用
以十进制为例
76
−
23
=
53
76 - 23=53
76−23=53
76
+
77
=
153
76+77=153
76+77=153
可以发现
76
−
23
76-23
76−23和
76
+
(
100
−
23
)
76+(100-23)
76+(100−23)结果后两位是一样的,而
77
77
77既是
23
23
23的补码,这样可以把减法计算转化为加法计算,从而让计算机只需要进行加法计算就可以了,大大减少了计算机设计时的复杂度
而二进制下以 8 8 8位二进制为例
00001010
按位取反后
11110101
可以发现原码 + + +反码 = 11111111 =11111111 =11111111但是离 1000000000 1000000000 1000000000还差 1 1 1,所以反码 + 1 +1 +1才能变成补码