61
第第第 第第第第第第第 •第 第 第第第第 • 第第第 第第第第第第第第 • 第第第 第第第第第第第第 • 第第第 第第第第第第第第第

第二章 数据编码与运算

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

Page 1: 第二章 数据编码与运算

第二章 数据编码与运算

• 第一节 数据编码• 第二节 定点数加减法运算• 第三节 定点数乘除法运算• 第四节 浮点数运算和运算器

Page 2: 第二章 数据编码与运算

一、定点数的编码• 定点整数

– 数值表示: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

Page 3: 第二章 数据编码与运算

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

简便编码方法:加符号位

Page 4: 第二章 数据编码与运算

带符号数的原码表示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

Page 5: 第二章 数据编码与运算

原码在数轴上的表示

数值0

0

7-7

157编码

Page 6: 第二章 数据编码与运算

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

Page 7: 第二章 数据编码与运算

补码编码的简便方法

• 方法 1:正值直接取其原来的二进制码,对于负数是在对其按位取反之后再在最低位加 1。

– 例: [10101010] 补= 01010101+1 = 01010110

• 方法 2:从最低位开始,对遇到的 0和第一个 1取其原码,从第一个 1以后开始直到最高位均取其按位反码。

Page 8: 第二章 数据编码与运算

带符号数的原码和补码表示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

Page 9: 第二章 数据编码与运算

补码在数轴上的表示

数值0

0

-8 7

157编码

Page 10: 第二章 数据编码与运算

模 4补码

[x]补 = x x

x x

n

n n

,

,

0 2

2 2 02

例: 00.1010110

11.0101001

[x]补 =

01,4

10,

xx

xx

Page 11: 第二章 数据编码与运算

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

Page 12: 第二章 数据编码与运算

带符号数的原码、补码和反码表示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

Page 13: 第二章 数据编码与运算

反码在数轴上的表示

数值-7

157

70

0编码

Page 14: 第二章 数据编码与运算

4. 移码表示法

定义[x]移 = 2n+x, -2n ≤ x < 2n

数值范围-2n ≤ x ≤ 2n - 1

特点:保持了数据原有的大小顺序,便于进行比较操作。

Page 15: 第二章 数据编码与运算

带符号数的四种编码表示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

Page 16: 第二章 数据编码与运算

移码在数轴上的表示

数值

15

7-8 0

0编码

注意:定点小数没有移码定义移码与补码的关系编码与数值混淆

习题: 2

Page 17: 第二章 数据编码与运算

二、浮点数的编码

构成:阶码 E,尾数M,符号位 S,基数 R

N = (-1)S× M× RE

S E M

• E 的编码:移码或补码• S与M 的编码:原码或补码• R 进制的含义:多个二进制位构成一组,代表一个 R 进制位

Page 18: 第二章 数据编码与运算

浮点数的编码

•规格化:–为了在尾数中表示最多的有效数据位–为了数据表示的唯一性。

•机器零:–全部为 0,特殊的数据编码

•浮点数的表示范围 负上溢 负下溢 正下溢 正上溢

图 2-2 浮点数的表示范围- +负数 正数0

Page 19: 第二章 数据编码与运算

浮点数的表示范围

例 : 以 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 。

Page 20: 第二章 数据编码与运算

浮点数标准 (IEEE754)•三种格式:短实数、长实数、临时实数

•无定义数据 (NaN) :– 发信号的 NaN,不发信号的 NaN

•无穷大: +INF, -INF

•规格化数:(-1)s×1.f×2e-127

•非规格化数:(-1)s×0.f×2e-126

Page 21: 第二章 数据编码与运算

浮点数标准 (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

Page 22: 第二章 数据编码与运算

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

Page 23: 第二章 数据编码与运算

三、检错码

• 数据校验码:分组码、卷积码• 奇偶校验码• 码距:两个合法代码对应位上编码不同的位数

• 例:偶校验0000 00000

0001 00011

0010 00101

Page 24: 第二章 数据编码与运算

奇偶校验码的原理• 在编码中引入一定的冗余,增加代码的最小码距,使得编码中出现一个错误时就成为非法代码。

合法代码

合法代码

非法代码

合法代码

合法代码

非法代码

非法代码

Page 25: 第二章 数据编码与运算

四、纠错码

• 线性码:任意两个合法码字求和可得到另一个合法码字。

•海明码:( n , k )– 码长 n=2m - 1– 信息位数 k=2m - m - 1– 校验位数m= n - k– 最小码距 d = 3

Page 26: 第二章 数据编码与运算

(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

Page 27: 第二章 数据编码与运算

(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

Page 28: 第二章 数据编码与运算

四、纠错码 ( 续)

• 循环码•线性码中若一个 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

•循环码的特性:生成多项式可整除循环码多项式。

Page 29: 第二章 数据编码与运算

编码方法一——求余法

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)

Page 30: 第二章 数据编码与运算

编码方法二——生成多项式法

例 对四位信息码 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

Page 31: 第二章 数据编码与运算

编码方法三——生成矩阵法

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

Page 32: 第二章 数据编码与运算

第二节 定点数加减法运算

• 一、补码加法– 根据补码加法公式,补码可以直接相加。

• 二、补码减法– 根据补码减法公式,补码可以直接相减。

Page 33: 第二章 数据编码与运算

三、溢出及其检测方法一——符号位判断

V= x0 y0 z0 + x0 y0

z0

判断电路

FA

V

z0y0

x0

判断电路

Page 34: 第二章 数据编码与运算

方法二——双符号位判断

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

Page 35: 第二章 数据编码与运算

逻辑符号

二选一电路

异或门

或非门

与非门

非门

或门

A+B

A或者 B

AB

A+B

AB

AB

B

B

B

B

B

AA

A

B

A

A

A

A

A与门

门电路

01

Page 36: 第二章 数据编码与运算

方法三——判断符号位与最高数值位

V= C0 C1 + C0

C1

判断电路

FA

FA

z1

z0V

c1

c0

y1

x1

y0

x0

Page 37: 第二章 数据编码与运算

四、基本算逻部件

b

a

取反进位输入

控制线数据线

进位输出

FA r10

(b) 行波进位32位ALU

进位输出C

r0

r1

溢出V

取反

r31a31b31

a1b1

±

±

±b0a0

Page 38: 第二章 数据编码与运算

四、基本算逻部件(续)逻辑电路

(a) 1位加法器电路

b

a

操作取反 进位输入

控制线数据线

进位输出

r

2

0

1

10

(b) 行波进位32位ALU

进位输出C

r0

r1

溢出V

操作取反

r31a31b31

a1b1

ALU31

ALU1

ALU0b0a0

Page 39: 第二章 数据编码与运算

四、基本算逻部件(续)

00 01 10 00 01 10 00 01 10s1s0

a0a1a2

bn-1

b0b1

b3

b2

习题:7、8

Page 40: 第二章 数据编码与运算

第三节 定点数乘除法运算一、原码一位乘法

二进制乘法过程: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

Page 41: 第二章 数据编码与运算

一、原码一位乘法 ( 续 )

实现方法:阵列乘法器,循环乘法器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

Page 42: 第二章 数据编码与运算

乘法器电路之一

64位被乘数

32位乘数

64位乘积

64位ALU 控制

Page 43: 第二章 数据编码与运算

乘法器电路之二

32位被乘数

32位乘数

64位乘积

32位ALU 控制

Page 44: 第二章 数据编码与运算

乘法器电路之三

图2-4 实现32位定点原码一位乘法的方案

R2

R1R0

32位ALU 控制

32位被乘数

64位乘积

Page 45: 第二章 数据编码与运算

乘法流程

图 2-5 实现 32位定点原码一位乘法的流程图

开始

R1最低位为 1?

第 32次循环?

1a. R0+R2 R0 1b. R0 + 0 R0

2. R0,R1右移一位

完成

Y N

N

Y

Page 46: 第二章 数据编码与运算

乘法计算过程表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

Page 47: 第二章 数据编码与运算

二、补码一位乘法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串中,不需要操作

Page 48: 第二章 数据编码与运算

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. 乘积寄存器右移一位

完成

Page 49: 第二章 数据编码与运算

表 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

Page 50: 第二章 数据编码与运算

三、定点数除法运算

手工计算过程: 00110010)00000111 0010 00011

0010 0001

Page 51: 第二章 数据编码与运算

硬件计算过程: 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

Page 52: 第二章 数据编码与运算

除法器电路之一

64位除数

32位商

64位余数

64位ALU 控制

Page 53: 第二章 数据编码与运算

除法器电路之二

32位除数

32位商

64位余数

32位ALU 控制

Page 54: 第二章 数据编码与运算

除法器电路之三

图 2-7 实现32位定点原码一位除法的方案

R2

R1R0

32位ALU 控制

32位除数

64位余数和商

Page 55: 第二章 数据编码与运算

除法流程

图 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

Page 56: 第二章 数据编码与运算

除法计算过程循环 步骤 余数(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

Page 57: 第二章 数据编码与运算

第四节 浮点数运算和运算器一、浮点数加减法

• 五个基本步骤–对阶–尾数加减–规格化(左规,右规)–舍入(截去、 0舍 1入、冯诺依曼舍入)–检查溢出

Page 58: 第二章 数据编码与运算

例 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)

Page 59: 第二章 数据编码与运算

浮点运算电路

图 2-10 浮点加法器原理框图

MES MES

小 ALU

大 ALU控制

右移

左移或右移

舍入部件

阶码差

加 1或减 1

MES

1 1

1

0 0

0

Page 60: 第二章 数据编码与运算

二、浮点数乘除法

• 五个基本步骤– 阶码加减– 尾数乘除– 规格化– 舍入– 检查溢出

Page 61: 第二章 数据编码与运算

习题

用浮点数计算的五个步骤对下列数据进行二进制运算,假定可存储 1位符号位, 5位阶码, 10 位尾数, 2位保护位,基数为 2。(1) 56 + 55

(2) 56 × 55