定点数表示

数值的表示

根据是否有符号位,数值型数据可以分为带符号数和不带符号数。

根据小数点位置是否固定,数值型数据可以分为小数点位置固定的定点数,和小数点位置不固定的浮点数。对于定点表示,纯整数默认小数点在最右侧,表示范围\(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\)

发表评论