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