原码 反码 补码
以3位整数举例, 如果是无符号整数, 可以表示0到7共23=8个数字;
如果要表示有符号数,对负数采用同余的做法,用图1的4表示图2的-4, 用图1的5表示图2的-3等等,最终的范围:正数0到3, 负数从-4到-1
如果取第1位表示符号位,则可以表示
[
−
3
,
−
0
]
∪
[
0
,
3
]
[-3,-0] \cup[0,3]
[−3,−0]∪[0,3]
此时在计算机内部计算1+(-1)时:
(
001
)
2
+
(
101
)
2
=
(
110
)
2
=
−
2
(001)_2 +(101)_2=(110)_2=-2
(001)2+(101)2=(110)2=−2
这显然不对了, 所以原码的表示方式对计算机不友好
为了对计算机友好, 人们发明了反码的表示方法,可以实现
(
−
1
)
+
(
+
1
)
=
0
(-1)+(+1)=0
(−1)+(+1)=0
又为了在+0和-0的表示方法中只留下+0, 又发明了补码的表示方法. 这部分内容可以看原码、反码、补码的产生、应用以及优缺点有哪些, 作者写得很通俗易懂。
最
大
的
正
整
数
=
2
n
−
1
−
1
最大的正整数=2^{n-1} -1
最大的正整数=2n−1−1
最
小
的
负
整
数
=
−
2
n
−
1
最小的负整数=-2^{n-1}
最小的负整数=−2n−1