作者:Liew.Y
AIGC声明:部分使用AIGC
-
对于正数,补码与原码相同的。
-
负数在计算机中是使用其补码来表示的
-
对于负数,补码是将原码的符号位保持不变,数值位按位取反后加1
1 | 原码:10000001 |
在计算机中,反码(One’s Complement) 是一种数值的二进制表示方法,常用于辅助补码的计算。它的规则相对简单,但存在一些局限性。以下是关于反码的详细说明:
一、反码的定义与计算规则
1. 正数的反码
与原码相同,即 符号位为 0,数值位不变。
示例:
- 十进制数
+5(4 位)的原码和反码均为:0101。
2. 负数的反码
符号位为 1,数值位按位取反(0 变 1,1 变 0)。
示例:
- 十进制数
-5(4 位)的原码为1101,反码为1010(符号位不变,数值位101→010)。
二、反码的特点
-
存在 “负零” 问题
- 十进制
0的反码有两种表示:+0的反码:0000(4 位)。-0的反码:1111(4 位)。
- 这会导致逻辑判断混乱(例如
0000和1111都表示 0),因此反码在实际计算机中很少直接使用,而是作为补码的中间步骤。
- 十进制
-
取值范围
- n 位反码的取值范围为:
-(2^{n-1}-1)~+(2^{n-1}-1)。 - 示例(4 位):
- 最小值:
1111(反码)→ 对应十进制-7。 - 最大值:
0111(反码)→ 对应十进制+7。
- 最小值:
- n 位反码的取值范围为: