Upload
oscar-lambert
View
127
Download
0
Embed Size (px)
DESCRIPTION
第二章 数据编码与运算. 第一节 数据编码 第二节 定点数加减法运算 第三节 定点数乘除法运算 第四节 浮点数运算和运算器. 一、定点数的编码. 定点整数 数值表示: 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 - PowerPoint PPT Presentation
Citation preview
第二章 数据编码与运算
• 第一节 数据编码• 第二节 定点数加减法运算• 第三节 定点数乘除法运算• 第四节 浮点数运算和运算器
一、定点数的编码• 定点整数
– 数值表示: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. 原码表示法
定义(编码规则)
[x ]原 = x x
x x x
n
n n n
,
,
0 2
2 2 2 0
[x ]原
x x
x x x
,
,
0 1
1 1 1 0
数值(求值方法)x = (-1)x0( x 12n-1 + … x n-12 + x n) x = (-1)x0( x 12 -1 + … x n-12 -(n-1) + x n2 -n)数值范围
-2n +1 ≤ x ≤ 2n -1 -1+2 -n ≤ x≤ 1-2 -n
简便编码方法:加符号位
带符号数的原码表示x0x1x2x3 作为原码编码时代表的值
0000 0
0001 +1
0010 +2
0011 +3
0100 +4
0101 +5
0110 +6
0111 +7
1000 -0
1001 -1
1010 -2
1011 -3
1100 -4
1101 -5
1110 -6
1111 -7
原码在数轴上的表示
数值0
0
7-7
157编码
2. 补码表示法编码规则
[x]补 = x x
x x
n
n n
,
,
0 2
2 2 01
求值方法x = -x02
n + x12n-1 + … + xn-12 + xn
例如:10000100的真值为- 128+4=- 124
数值范围-2n≤ x ≤ 2n -1
补码编码的简便方法
• 方法 1:正值直接取其原来的二进制码,对于负数是在对其按位取反之后再在最低位加 1。
– 例: [10101010] 补= 01010101+1 = 01010110
• 方法 2:从最低位开始,对遇到的 0和第一个 1取其原码,从第一个 1以后开始直到最高位均取其按位反码。
带符号数的原码和补码表示x0x1x2x3 原码 补码0000 0 0
0001 +1 +1
0010 +2 +2
0011 +3 +3
0100 +4 +4
0101 +5 +5
0110 +6 +6
0111 +7 +7
1000 -0 -8
1001 -1 -7
1010 -2 -6
1011 -3 -5
1100 -4 -4
1101 -5 -3
1110 -6 -2
1111 -7 -1
补码在数轴上的表示
数值0
0
-8 7
157编码
模 4补码
[x]补 = x x
x x
n
n n
,
,
0 2
2 2 02
例: 00.1010110
11.0101001
[x]补 =
01,4
10,
xx
xx
3. 反码表示法
[x]反 = x x
x x
n
n n
,
,
0 2
2 1 2 01
x = -x0 (2n - 1) + x12
n-1 + … + xn-12 + xn
-2n +1≤ x ≤ 2n -1
带符号数的原码、补码和反码表示x0x1x2x3 原码 反码 补码0000 0 0 0
0001 +1 +1 +1
0010 +2 +2 +2
0011 +3 +3 +3
0100 +4 +4 +4
0101 +5 +5 +5
0110 +6 +6 +6
0111 +7 +7 +7
1000 -0 -7 -8
1001 -1 -6 -7
1010 -2 -5 -6
1011 -3 -4 -5
1100 -4 -3 -4
1101 -5 -2 -3
1110 -6 -1 -2
1111 -7 -0 -1
反码在数轴上的表示
数值-7
157
70
0编码
4. 移码表示法
定义[x]移 = 2n+x, -2n ≤ x < 2n
数值范围-2n ≤ x ≤ 2n - 1
特点:保持了数据原有的大小顺序,便于进行比较操作。
带符号数的四种编码表示x0x1x2x3 原码 反码 补码 移码0000 0 0 0 -8
0001 +1 +1 +1 -7
0010 +2 +2 +2 -6
0011 +3 +3 +3 -5
0100 +4 +4 +4 -4
0101 +5 +5 +5 -3
0110 +6 +6 +6 -2
0111 +7 +7 +7 -1
1000 -0 -7 -8 0
1001 -1 -6 -7 1
1010 -2 -5 -6 2
1011 -3 -4 -5 3
1100 -4 -3 -4 4
1101 -5 -2 -3 5
1110 -6 -1 -2 6
1111 -7 -0 -1 7
移码在数轴上的表示
数值
15
7-8 0
0编码
注意:定点小数没有移码定义移码与补码的关系编码与数值混淆
习题: 2
二、浮点数的编码
构成:阶码 E,尾数M,符号位 S,基数 R
N = (-1)S× M× RE
S E M
• E 的编码:移码或补码• S与M 的编码:原码或补码• R 进制的含义:多个二进制位构成一组,代表一个 R 进制位
浮点数的编码
•规格化:–为了在尾数中表示最多的有效数据位–为了数据表示的唯一性。
•机器零:–全部为 0,特殊的数据编码
•浮点数的表示范围 负上溢 负下溢 正下溢 正上溢
图 2-2 浮点数的表示范围- +负数 正数0
浮点数的表示范围
例 : 以 R 为 基 数 , 有 1 位 符 号 位 、 p 位 阶 码 和 m 位 二 进 制尾 数 代 码 的 浮 点 数 , 阶 码 采 用 移 码 表 示 , 求 数 值 表 示 范 围及 可 表 示 的 数 据 个 数 。解 : 最 小 规 格 化 尾 数 : 1 / R
最 大 规 格 化 尾 数 : 1 - 2 - m
最 大 阶 码 : 2 p - 1 - 1
最 小 阶 码 : - 2 p - 1
最 小 正 值 : 122 11
/1
pp
RRR
最 大 正 值 : )21(12 1 mp
R
规 格 化 尾 数 个 数 为 2 m× ( R - 1 ) / R
可 表 示 的 数 据 个 数 为 2 p + m + 1 ( R - 1 ) / R + 1 。
浮点数标准 (IEEE754)•三种格式:短实数、长实数、临时实数
•无定义数据 (NaN) :– 发信号的 NaN,不发信号的 NaN
•无穷大: +INF, -INF
•规格化数:(-1)s×1.f×2e-127
•非规格化数:(-1)s×0.f×2e-126
浮点数标准 (IEEE754)表 2-3 IEEE单精度浮点数编码格式符号位 阶码 尾数 表示
0/1 255 非 0 S
0/1 255 非 0 Q
0 255 0 +INF
1 255 0 -INF
0/1 1-254 f (-1)s× 1.f× 2e-127
0/1 0 f(非 0) (-1)s× 0.f× 2e-126
0/1 0 0 +0/-0
IEEE754浮点数的范围格式 最小值 最大值单精度 E=1, M=0,
1.0× 21-127 = 2-126E=254, f=.1111…,1.111…1× 2254-127
= 2127× (2-2-23)
双精度 E=1, M=0,1.0× 21-1023 =2-1022
E=2046, f=.1111…,1.111…1× 22046-1023
=21023× (2-2-52)
习题:15、16、19
三、检错码
• 数据校验码:分组码、卷积码• 奇偶校验码• 码距:两个合法代码对应位上编码不同的位数
• 例:偶校验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
(7,4) 海明码的例子 ( 续 )矩阵表示:
H×W = 1110100
0111010
1101001
w
w
w
1
2
7
...
= 0
H称为校验矩阵。校正子:S = H×Y = H (W+E) = H×E 其中Y为接收的码字校正表:
表2-6 (7,4)海明码校正表e1e2e3e4e5e6e7s1s2s31000000101
0100000111
0010000110
0001000011
0000100100
0000010010
0000001001
0000000000
四、纠错码 ( 续)
• 循环码•线性码中若一个 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
•循环码的特性:生成多项式可整除循环码多项式。
编码方法一——求余法
xBx
Gx
r()
() = Q(x) +
Rx
Gx
()
()
xrB(x) = Q(x)G(x) + R(x)
等式两边加上R(x)xrB(x) + R(x) = Q(x)G(x)
编码方法二——生成多项式法
例 对四位信息码 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
编码方法三——生成矩阵法
G
D G
D G
G
k
k
1
2
例:G(x) = x3 + x + 1,其生成矩阵是
G =
1 0 1 1 0 0 0
0 1 0 1 1 0 0
0 0 1 0 1 1 0
0 0 0 1 0 1 1
[1 0 1 0]G = [1 0 0 1 1 1 0]
习题:5
第二节 定点数加减法运算
• 一、补码加法– 根据补码加法公式,补码可以直接相加。
• 二、补码减法– 根据补码减法公式,补码可以直接相减。
三、溢出及其检测方法一——符号位判断
V= x0 y0 z0 + x0 y0
z0
判断电路
FA
V
z0y0
x0
判断电路
方法二——双符号位判断
V= z0'z0 + z'0 z0 = z0'z0
00.xxxx 11.xxxx
+ 00.xxxx 或 + 111.xxxx
00.xxxx 11.xxxx
判断电路
FA
FA
V
c’0
z’0
c1
c0
z0
x’0
y’0
y0
x0
逻辑符号
二选一电路
异或门
或非门
与非门
非门
或门
A+B
A或者 B
AB
A+B
AB
AB
B
B
B
B
B
AA
A
B
A
A
A
A
A与门
门电路
01
方法三——判断符号位与最高数值位
V= C0 C1 + C0
C1
判断电路
FA
FA
z1
z0V
c1
c0
y1
x1
y0
x0
四、基本算逻部件
b
a
取反进位输入
控制线数据线
进位输出
FA r10
(b) 行波进位32位ALU
进位输出C
r0
r1
溢出V
取反
r31a31b31
a1b1
±
±
±b0a0
四、基本算逻部件(续)逻辑电路
(a) 1位加法器电路
b
a
操作取反 进位输入
控制线数据线
进位输出
r
2
0
1
10
(b) 行波进位32位ALU
进位输出C
r0
r1
溢出V
操作取反
r31a31b31
a1b1
ALU31
ALU1
ALU0b0a0
四、基本算逻部件(续)
00 01 10 00 01 10 00 01 10s1s0
a0a1a2
bn-1
b0b1
b3
b2
习题:7、8
第三节 定点数乘除法运算一、原码一位乘法
二进制乘法过程: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
乘法器电路之一
64位被乘数
32位乘数
64位乘积
64位ALU 控制
乘法器电路之二
32位被乘数
32位乘数
64位乘积
32位ALU 控制
乘法器电路之三
图2-4 实现32位定点原码一位乘法的方案
R2
R1R0
32位ALU 控制
32位被乘数
64位乘积
乘法流程
图 2-5 实现 32位定点原码一位乘法的流程图
开始
R1最低位为 1?
第 32次循环?
1a. R0+R2 R0 1b. R0 + 0 R0
2. R0,R1右移一位
完成
Y N
N
Y
乘法计算过程表2-9 原码一位乘法计算23的过程循环 步骤 乘积(R0,R1)0 初始值 0000 00111 1a: 加0010 0010 0011
2: 右移1位 0001 00012 1a: 加0010 0011 0001
2: 右移1位 0001 10003 1b: 加0 0001 1000
2: 右移1位 0000 11004 1b: 加0 0000 1100
2: 右移1位 0000 0110
二、补码一位乘法Booth算法:
原理:将乘法转换为对 2n的加法
如: 6x=8x-2x
即: 0110x = 1000x–0010x
表 2-10 Booth算法操作表示yi yi+1 操作 说明0 0 无 处于 0串中,不需要操作0 1 加 x 1串的结尾1 0 减 x 1串的开始1 1 无 处于 1串中,不需要操作
Booth乘法流程
00,11 01 10
1a
图 2-6 实现 32位 Booth乘法算法的流程图
开始
yi yi+1= ?
N
Y
第 32次循环?
1b. R0 + R2 R0 1c. R0 - R2 R0
2. 乘积寄存器右移一位
完成
表 2-11 用 Booth补码一位乘法计算 2(-3) 的过程
循环 步骤 乘积(R0R1)0 初始值 0000 1101 01 1c: 减 0010 1110 1101 0
2: 右移 1位 1111 0110 12 1b: 加 0010 0001 0110 1
2: 右移 1位 0000 1011 03 1c: 减 0010 1110 1011 0
2: 右移 1位 1111 0101 14 1a: 无操作 1111 0101 1
2: 右移 1位 1111 1010 1
三、定点数除法运算
手工计算过程: 00110010)00000111 0010 00011
0010 0001
硬件计算过程: 0 0 1 10010 ) 0 0 0 0 0 1 1 1
- 0 0 1 0 1 1 1 0 + 0 0 1 0 0 0 0 0 1
- 0 0 1 0 1 1 1 1+ 0 0 1 0
0 0 0 1 1- 0 0 1 0
0 0 0 1 1- 0 0 1 0
0 0 0 1
除法器电路之一
64位除数
32位商
64位余数
64位ALU 控制
除法器电路之二
32位除数
32位商
64位余数
32位ALU 控制
除法器电路之三
图 2-7 实现32位定点原码一位除法的方案
R2
R1R0
32位ALU 控制
32位除数
64位余数和商
除法流程
图 2-8 实现 32位定点原码一位除法的流程图
R0 < 0 ?
第 32次循环?
3a. 商 1 3b. R0 + R2 R0, 商 0
4. R0, R1左移
1. R0, R1左移, 商 0
2. R0 - R2 R0
5. R0右移
YN
N
Y
除法计算过程循环 步骤 余数(R0 R1)
0 初始值 0000 0111
1: 左移,商 0 0000 1110
2: 减 0010 1110 1110
1 3b: 加 0010,商 0 0000 1110
4: 左移 1位 0001 1100
2: 减 0010 1111 1100
2 3b: 加 0010,商 0 0001 1100
4: 左移 1位 0011 1000
2: 减 0010 0001 1000
3 3a: 商 1 0001 1000
4: 左移 1位 0011 0001
2: 减 0010 0001 0001
4 3a: 商 1 0001 0001
4: 左移 1位 0010 0011
5: R0右移 0001 0011
习题: 10 、 13
第四节 浮点数运算和运算器一、浮点数加减法
• 五个基本步骤–对阶–尾数加减–规格化(左规,右规)–舍入(截去、 0舍 1入、冯诺依曼舍入)–检查溢出
例 2-9 两浮点数 x = 201×0.1101, y = 211×(-0.1010) 。假设尾数在计算机中以补码表示,可存储 4 位尾数, 2 位保护位,阶码以原码表示,求 x+y。
解:将 x,y 转换成浮点数据格式[x] 浮 = 00 01, 00.1101
[y] 浮 = 00 11, 11.0110
步骤 1 :对阶,阶差为 11-01=10 ,即 2 ,因此将 x 的尾数右移两位,得[x] 浮 = 00 11, 00.001101
步骤 2 :对尾数求和,得 :
[x+y] 浮 = 00 11, 11.100101
步骤 3 :由于符号位和第一位数相等,不是规格化数,向左规格化,得[x+y] 浮 = 00 10, 11.001010
步骤 4 :截去。[x+y] 浮 = 00 10, 11.0010
步骤 5: 数据无溢出,因此结果为x+y = 210×(-0.1110)
浮点运算电路
图 2-10 浮点加法器原理框图
MES MES
小 ALU
大 ALU控制
右移
左移或右移
舍入部件
阶码差
加 1或减 1
MES
1 1
1
0 0
0
二、浮点数乘除法
• 五个基本步骤– 阶码加减– 尾数乘除– 规格化– 舍入– 检查溢出
习题
用浮点数计算的五个步骤对下列数据进行二进制运算,假定可存储 1位符号位, 5位阶码, 10 位尾数, 2位保护位,基数为 2。(1) 56 + 55
(2) 56 × 55