定点数表示
数值的表示
根据是否有符号位,数值型数据可以分为带符号数和不带符号数。
根据小数点位置是否固定,数值型数据可以分为小数点位置固定的定点数,和小数点位置不固定的浮点数。对于定点表示,纯整数默认小数点在最右侧,表示范围\(0 \le |x| \le 2^n -1\);纯小数小数点默认在符号位后面,表示范围\(0 \le |x| < 1-2^{-n} \)。
定点数的机器码表示
原码
原码的表示方法一般用最高位表示数的正负,其余位表示数的绝对值。
当X为纯小数时:\begin{align} &0+X_{真值}=X_{真值} && 0 \le X <1 \\ & 1-X_{真值}=1+|X_{真值}| && -1 < X \le 0 \end{align} \[范围:2^{-n} -1 \sim 1-2^{-n} (n+1位数)\]
X为纯整数时:\begin{align} & 0+X_{真值}=X_{真值} \qquad && 0\le X < 2^n \\ & 2^n+|X| \qquad &&-2^n <X \le 0 \end{align} \[范围:1-2^n \sim 2^n – 1 (n+1位数) \]
注意:在原码的表示中0有正负两种形式。
补码
虽然原码表示形式简单易懂,但是原码不易于加减法的运算。故为方便计算机中简单的运算引出补码的概念。通过补码能将减法运算变为加法运算。
补码的规则:正数不变,负数在原码的基础上除符号位外各位置取反末尾加一。
补码的基本定义:
通式\([X]_{补}=M+X \pmod M\)
n位纯小数的补码表示:\begin{align} & X \qquad && 0 \le X <1 \\ & 2+X \qquad && -1 \le X < 0 \end{align} \[范围:-1 \sim 1-2^{-n+1}\]
n位纯整数的补码表示:\begin{align} & X \qquad && 0\le X < 2^{n-1} \\& 2^n+X \qquad && -2^{n-1} \le X < 0 \end{align} \[范围:-2^{n-1} \sim 2^{n-1} -1\]
反码
反码规则:正数与原码补码相同。负数的符号位不变,将其余位取反。
纯小数的反码表示:\begin{align} & X \qquad && 0 \le X <1 \\ &(2-2^{-n+1})+X \qquad && -1 < X \le 0 \end{align}
纯整数的反码表示:\beign{align} & X \qquad && 0 \le X < 2^{n-1} \\& (2^n-1)+X \qquad && -2^{n-1} < X \le 0 \end{align}
注意:0在补码中只有一种形式,但是在反码中仍然有正负之分。
移码
移码的出现方便了不同数之间大小的比较,可以认为它给所有数都加上了一个偏移量。一般对于n位,偏移量为\(2^{n-1}\)。形式上它在符号位上与补码相反,其余数值部分相同。其表示范围与补码相同。
纯小数:\([X]_{移}=1+X \qquad -1 \le X < 1\)
纯整数:\([X]_{移} = 2^m +X \qquad -2^m \le X < 2^m\)