移码,常用来表示浮点数的阶码。它只能表示整数。
当机器字长为
n
+
1
n+1
n+1(第1位是符号位,后n位是数值部分)时:
[
X
]
移
=
2
n
+
x
(
−
2
n
<
x
<
2
n
)
[X]_移=2^n+x(-2^n<x<2^n)
[X]移=2n+x(−2n<x<2n)
对应的补码:
当
−
2
n
≤
x
≤
0
-2^n\leq x \leq0
−2n≤x≤0时:
[
X
]
补
=
2
n
+
1
+
x
[X]_补=2^{n+1}+x
[X]补=2n+1+x
因为此时真值x为负数,而符号位对应的是
2
n
2^n
2n上的数值,此时补码符号位为1(可以理解为符号位原本是10,加上一个负数之后变成了01),移码符号位为0,数值部分相同。
当
0
≤
x
≤
2
n
0\leq x \leq2^n
0≤x≤2n时:
[
X
]
补
=
0
,
x
[X]_补=0,x
[X]补=0,x
此时补码符号位为0,而移码符号位为1,数值部分相同。
综上,相同位数的移码和补码只差一个符号位。
若字长为
n
+
1
n+1
n+1,移码的数据表示范围为
−
2
n
≤
x
≤
2
n
−
1
-2^n\leq x\leq2^n-1
−2n≤x≤2n−1,与补码的范围相同。