计算机数据的表示及运算

297 阅读9分钟

编码:采用少量的基本符号,选用一定的组合规则,来表示大量复杂多样的信息。

1 进制及转换

  • 常用进位计数制:二进制(B)、八进制(O)、十进制(D)、十六进制(H)

  • 共同特点:

    • 固定的符号集:r 进制,只用 r 个基本符号表示数值

      • 🌰:十进制的符号集 0~9,二进制的符号集 0、1
    • 使用位置表示法:处于不同位置的数符,根据所在位置的权值而代表不同的值

      • r 进制的位权是基数 r 的某次幂

      • 🌰:123.45 = 1x102 + 2x101 + 3x100 + 4x10-1 + 5x10-2

r 进制转十进制

r 进制数的每一位数乘以它的权,然后相加,得对应十进制数: 1_4. 二进制转十进制.png

十进制转 r 进制

  • 十进制转二进制:整数除 2 取余 + 小数乘 2 取整
  • 十进制转八进制:整数除 8 取余 + 小数乘 8 取整
  • 十进制转十六进制:整数除 16 取余 + 小数乘 16 取整

注意整数部分从后往前取余计算机数据的表示及运算.001.png

二进制转 r 进制

  • 二进制转八进制:从小数点起,每 3 位分为一组,每组转为等值八进制数,按顺序排列

    • 不足 3 位,整数侧左边补 0,小数侧右边补 0

    • 🌰: 1001011.1011 B = 001 001 011.101 100 B = 113.54 O
      
  • 二进制转十六进制:从小数点起,每 4 位分为一组,每组转为等值十六进制数,按顺序排列

    • 不足 4 位,整数侧左边补 0,小数侧右边补 0

    • 🌰: 1001011.111 B = 0100 1011.1110 B = 4B.E H
      

2 逻辑运算

  • 与(&&、 *、 ∩ 、 ∧、 AND) ,逻辑乘:A·B,在 A 与 B 都时为,否则为
  • 或(||、 +、 ∪ 、 ∨、 OR) ,逻辑加:A+B,在 A 与 B 都时为,其他情况为
  • 非(! 、 ﹃、 ~、 NOT),求反运算
  • 异或(⊕ 、 XOR),半加运算:A ⊕ B,当且仅当 A 和 B 的值不同时为

常用逻辑公式

1_5常用的逻辑公式.png

3 机器数与码制

机器数:各种数据在计算机中表现的形式。

特点:采用二进制计数制,数的符号用0、1表示,小数点隐含表示不占位置。

真值:机器数的实际数值。

机器字长:若字长为 n,则采用 n 个二进制位表示数据。

  • 带符号数
    • 机器数的最高位是表示正、负的符号位,其余位表示数值
    • 小数点在最低数值位之后为纯整数;小数点在最高数值位之前(符号位之后)为纯小数
  • 无符号数:数的全部二进制位均代表数值,没有符号位

带符号机器数的编码方法

  • 原码:数值 X 的原码记为 [X]

    • 机器字长为 n,最高位 0 表示正号,1 表示负号,其余 n-1 位表示数值的绝对值
    • 若机器字长 n=8:
      • [-0]=10000000
      • [+1]=00000001, [-1]=10000001
      • [+0.5]=0◊1000000, [-0.5]=1◊1000000
  • 反码:数值 X 的反码记为 [X]

    • 机器字长为 n,最高位 0 表示正号,1 表示负号,其余 n-1 位表示数值的绝对值
    • 正数的反码与原码相同,负数的反码是其绝对值按位求反
    • 若机器字长 n=8:
      • [-0]=11111111
      • [+1]=00000001, [-1]=11111110
      • [+0.5]=0◊1000000, [-0.5]=1◊0111111
  • 补码:数值 X 的补码记为 [X]

    • 机器字长为 n,最高位 0 表示正号,1 表示负号,其余 n-1 位表示数值的绝对值

      • 例外:当符号位为 1,而数值位全部为 0 时,表示整数 -2n-1,此时符号位的 1 既表示负数又表示数值

        • 8 位字长表示补码最小整数是 -128,即 -27,用 10000000 表示
      • 由于符号位可以表示数值,很难直接判断补码的真值大小

    • 正数的补码与其反码、原码相同,负数的补码等于其反码的末尾加 1

    • 若机器字长 n=8:

      • [-0]=00000000,补码中 0 有唯一的编码,正负表示一致
      • [+1]=00000001, [-1]=11111111
      • [+0.5]=0◊1000000, [-0.5]=1◊1000000
  • 移码:数值 X 的移码记为 [X]

    • 在数 X 上增加一个偏移量,常用于表示浮点数的阶码
    • 机器字长为 n,偏移量为 2n-1,将补码的符号位取反即为对应的移码
      • 码值大则对应的真值就大
    • 若机器字长 n=8:
      • [+0]=10000000, [-0]=10000000,移码中 0 有唯一的编码,正负表示一致
      • [+1]=10000001, [-1]=01111111
      • [+0.5]=1◊1000000, [-0.5]=0◊1000000

4 定点数与浮点数

定点数

  • 表示数据时小数点的位置固定不变:

    • 定点整数:纯整数,小数点固定在最低有效数值位之后(最高位是符号位)

    • 定点小数:纯小数,小数点固定在最高有效位之前,整数位用于表示符号

  • 在 n 位二进制表示下,定点整数:

    • 原码、 反码表示的数据范围: -(2n-1-1) ~ + (2n-1-1),0 的表示占用了两个编码

    • 补码、 移码表示的数据范围: -2n-1 ~ +(2n-1-1)

  • 定点数所能表示的数值范围较小,运算时容易溢出

浮点数

  • 小数点的位置不固定,能表示更大范围的数

  • 浮点表示法:

    • 计算机中,浮点数 N 通常分为阶码 (E) 和尾数 (F) 两部分组成:
    • 阶码为带符号的纯整数,尾数为带符号的纯小数
    • N = (数符 x F) x 2阶符 x E
      • 11100.101 = 0.11100101 x 20101
  • 小数点位置改变后对应的阶码也相应改变,可以由多种浮点形式表示同一个数

  • 数值范围主要由阶码决定,所表示数值的精度由尾数决定

  • 浮点数运算

    • 计算机中只设加法器,减法运算转换为加法运算来实现

    • 补码减运算的方式比原码减运算简便得多

    • 只有当两个同符号数相加(或异符号数相减)时,运算结果才有可能溢出

    • 浮点加减先进行对阶,把阶码小的数的尾数右移阶码差的位数

5 常用的字符编码

  • BCD 码(8421BCD 码)
    • 每位十进制数用 4 位二进制数表示,0000 ~ 1001 表示 0 ~ 9
  • ASCII 码
    • 用 7 位二进制位表示一个字符,低 4 位用作行编码,高 3 位用作列编码
      • 典型 ASCII 对应:09: 4857,AZ: 6590,az: 97122
    • 最多可以表示 128 个字符,编码为 0~127:
      • 10 个数字符,52 个大小写英文字母,32 个标点符号和运算符,34 个控制符
  • 汉字字符编码:先对汉字进行编码,转换为若干位二进制数
    • 输入码:数字码、拼音码、字形码(五笔)
    • 内部码(机内码):汉字在设备和信息处理系统内部存储、处理、传输用的代码
      • 国标码:国家标准局 GB2312-1980 中规定的汉字机内码,是其他汉字编码的基础
    • 字形码(输出码):表示汉字字形的字模数据
      • 点阵方式:编码存储简单,字形放大后产生的效果差
      • 矢量函数方式:将汉字看作由笔画组成的图形,提取每个笔画的坐标
  • Unicode:容纳世界上所有文字和符号的字符编码标准,包括字符集、编码方案等

6 校验码

确保数据在计算机各个部件间进行交换的传送过程中正确无误,使用校验码来检测是否出错;

对数据可能出现的编码分为两类:

  • 合法编码,用于传送数据
  • 错误编码,不允许在数据中出现的编码,数据在传送过程中出错就会变成错误编码

码距:一个编码系统中任意两个合法编码之间至少有多少个二进制位不同

奇偶校验码

  • 通过增加一位校验位使得编码中1的个数恒为奇数或偶数进行检错,使码距变为 2
    • 是一种检错码,可检查 1 位的错误,不可纠错
  • 由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码
    • 奇校验:整个校验码(有效信息位和校验位)中“1” 的个数为奇数
    • 偶校验:整个校验码(有效信息位和校验位)中“1” 的个数为偶数
  • 3种方式:
    • 水平奇偶校验码:信息位与校验位出于同一行
    • 垂直奇偶校验码:把数据分为若干组,一组数据占一行排列整齐,再加一行校验码;信息位与校验位出于同一列
    • 水平垂直校验码:在垂直校验码的基础上,对每行数据在增加一位水平校验位

海明码(8421 码)

  • 在 n 个数据位之间插入 k 个校验码,通过扩大码距来实现检错和纠错,也利用了奇偶性
    • k 的个数应满足公式:2k - 1 >= n + k
    • 校验位一般设置在 2i 位置,如 1、2、4、8 等
  • 多用于多位并行数据检错纠错处理

循环冗余校验码(CRC)

  • 利用生成多项式为 k 个数据位产生 r 个校验位进行编码,长度为 k + r
  • 多用于数据通信领域和磁介质存储系统中
  • 左边为信息码(数据),右边为校验码
    • 信息码占 k 位,校验码占 n-k 位,又称(n, k)码
    • 校验码位数越长,校验能力越强
  • 采用模 2 运算:按位运算,不发生借位和进位