数据在计算机中的表示主要分为两大类:定点数和浮点数。本篇主要是定点数在计算机中表示与运算的一个小结
1. 机器数定点表示。
定点数表述约定机器数中小数点的位置固定不变
定点小数(纯小数)
小数点的位置固定在最高位之前。 --> 0.XXX
定点整数(纯整数)
小数点的位置固定在最低位之后。 --> XXX.0
2. 原码补码反码移码
原码
用机器数的最高位表示该数的符号,其余各位表示数的绝对值。
补码 (纯小数)
[ x ] 补 = { x 1 > x ≥ 0 2 + x = 2 − ∣ x ∣ 0 > x ≥ − 1 [x]_补 = \begin{cases} x & 1>x\geq0 \\ 2+x = 2-\vert x\vert &0>x\geq-1\\ \end{cases} [x]补={ x2+x=2−∣x∣1>x≥00>x≥−1
补码 (纯整数)
[ x ] 补 = { 0. x 2 n > x ≥ 0 2 n + 1 + x = 2 n + 1 − ∣ x ∣ 0 > x ≥ − 2 n [x]_补 = \begin{cases} 0.x & 2^n>x\geq0 \\ 2^{n+1}+x = 2^{n+1}-\vert x\vert &0>x\geq-2^n\\ \end{cases} [x]补={ 0.x2n+1+x=2n+1−∣x∣2n>x≥00>x≥−2n
反码
用机器数的最高位表示该数的符号,其余各位表示数的绝对值。
移码
[ x ] 移 = 2 n + x ( 2 n > x ≥ − 2 n ) ( 机 器 字 长 为 n + 1 ) [x]_移 = 2^n+x (2^n>x\geq-2^n)(机器字长为n+1) [x]移=2n+x(2n>x≥−2n)(机器字长为n+1)
3. 移位运算
逻辑移位
将操作数视为无符号数。逻辑左移时,高位移丢,低位添0;逻辑右移时,低位移丢,高位添0。
算术移位
对象是有符号数,在移位过程中符号位保持不变。
空位添补规则:
码制 | 填补代码 | |
---|---|---|
正数 | 原码、补码、反码 | 0 |
原码 | 0 | |
负数 | 补码 | 左移添0、右移添1 |
反码 | 1 |
4. 原码定点数加减法(略)
5. 补码定点数加减法
补码加减法运算规则简单,易于实现,因此计算机系统中普遍采用补码加减运算。
符号位与数值位按照相同的规则参与运算,运算产生的进位舍弃
[ A + B ] 补 = [ A ] 补 + [ B ] 补 ( m o d M ) [ A − B ] 补 = [ A ] 补 + [ − B ] 补 ( m o d M ) [A+B]_补 = [A]_补+[B]_补 (mod M)\\ [A-B]_补 = [A]_补+[-B]_补 (mod M) [A+B]补=[A]补+[B]补(modM)[A−