610 likes | 715 Views
第二章 数据编码与运算. 第一节 数据编码 第二节 定点数加减法运算 第三节 定点数乘除法运算 第四节 浮点数运算和运算器. 一、定点数的编码. 定点整数 数值表示: x = x 0 x 1 x 2 … x n x i ={0,1}, 0≤ i ≤ n x 0 2 n + x 1 2 n -1 + … + x n -1 2 1 + x n 数值范围 0≤ x ≤2 n +1 -1 定点小数 数值表示 x = x 0 . x 1 x 2 … x n x i ={0,1}, 0≤ i ≤ n
E N D
第二章 数据编码与运算 • 第一节 数据编码 • 第二节 定点数加减法运算 • 第三节 定点数乘除法运算 • 第四节 浮点数运算和运算器
一、定点数的编码 • 定点整数 • 数值表示: x = x0x1x2…xn xi={0,1}, 0≤i≤n x02n + x12n-1 + … + xn-121 + xn • 数值范围 • 0≤x≤2n+1-1 • 定点小数 • 数值表示 • x = x0 .x1x2…xn xi={0,1}, 0≤i≤n • x12-1 + … + xn-12-n+1 + xn2-n • 数值范围 • 0≤x≤1-2-n
1. 原码表示法 简便编码方法:加符号位
补码编码的简便方法 • 方法1:正值直接取其原来的二进制码,对于负数是在对其按位取反之后再在最低位加1。 • 例:[10101010]补= 01010101+1 = 01010110 • 方法2:从最低位开始,对遇到的0和第一个1取其原码,从第一个1以后开始直到最高位均取其按位反码。
模4补码 例: 00.1010110 11.0101001
4. 移码表示法 特点:保持了数据原有的大小顺序,便于进行比较操作。
移码在数轴上的表示 注意:定点小数没有移码定义 移码与补码的关系 编码与数值混淆 习题:2
二、浮点数的编码 • E的编码:移码或补码 • S与M的编码:原码或补码 • R进制的含义:多个二进制位构成一组,代表一个R进制位
浮点数的编码 • 规格化: • 为了在尾数中表示最多的有效数据位 • 为了数据表示的唯一性。 • 机器零: • 全部为0,特殊的数据编码 • 浮点数的表示范围
浮点数标准(IEEE754) • 三种格式:短实数、长实数、临时实数 • 无定义数据(NaN): • 发信号的NaN,不发信号的NaN • 无穷大:+INF, -INF • 规格化数: (-1)s×1.f×2e-127 • 非规格化数: (-1)s×0.f×2e-126
三、检错码 • 数据校验码:分组码、卷积码 • 奇偶校验码 • 码距:两个合法代码对应位上编码不同的位数 • 例:偶校验 0000 00000 0001 00011 0010 00101
奇偶校验码的原理 • 在编码中引入一定的冗余,增加代码的最小码距,使得编码中出现一个错误时就成为非法代码。
四、纠错码 • 线性码:任意两个合法码字求和可得到另一个合法码字。 • 海明码:(n,k) • 码长n=2m - 1 • 信息位数k=2m - m - 1 • 校验位数m= n - k • 最小码距d = 3
(7,4)海明码的例子 c1 = x1 + x2 + x3 c2 = x2 + x3 + x4 c3 = x1 + x2 + x4 将这些信息位和校验位构成码字w,即 w = {x1,x2,x3,x4,c1,c2,c3}={w1,w2,w3,w4,w5,w6,w7}。 校验方程: w1 + w2 + w3 + w5 = 0 w2 + w3 + w4 +w6 = 0 w1 + w2 + w4 + w7 = 0
四、纠错码(续) • 循环码 • 线性码中若一个n位编码V = {v0,v1,v2,…,vn-1}是码C的一个码字,那么V向右循环移动一位后的n位编码V1 = {vn-1,v0,v1,…,vn-2}也是码C的一个码字。 • 码字多项式表示: V(x) = vn-1xn-1 + … + v1x + v0 • 循环码的特性:生成多项式可整除循环码多项式。
编码方法二——生成多项式法 例 对四位信息码1010进行CRC编码,生成多项式是G(x) = x3 + x + 1。 解:(1) 将4位信息码表示为多项式B(x): B(x) = x3 + x (2) 将信息码多项式与生成多项式相乘,得码字多项式: V(x) = B(x)G(x) = (x3+x)(x3+x+1) = x6 + x3+x2+x (3) 将码字多项式转换成代码表示,得CRC编码结果: 1001110
第二节 定点数加减法运算 • 一、补码加法 • 根据补码加法公式,补码可以直接相加。 • 二、补码减法 • 根据补码减法公式,补码可以直接相减。
第三节 定点数乘除法运算一、原码一位乘法 二进制乘法过程: 0 0 1 0 × 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
一、原码一位乘法(续) 实现方法:阵列乘法器,循环乘法器 0 0 0 0 0 0 0 0 + 0 0 1 0 0 0 0 0 0 0 1 0 + 0 0 1 0 0 0 0 0 0 1 1 0 + 0 0 0 0 0 0 0 0 0 1 1 0 +0 0 0 0 0 0 0 0 0 1 1 0