第2章 运算方法和运算器

2.1 复习笔记

一、数据与文字的表示方法

1数据格式

(1)定点数表示方法

假设用一个n+1位的字来表示一个定点数x,xn放在最左位置,并用数值0和1分别代表正号和负号,其余位数代表它的量值,小数点根据数值大小放在相应两个位数之间,如图2-1所示。

图2-1 定点数表示方法

定点格式的表示范围为:

若x表示纯小数,即小数点在xn与xn1之间,则0≤|x|≤1-2-n

若x表示纯整数,即小数点在x0右侧,则0≤|x|≤2n-1。

(2)浮点数的表示方法

浮点数的表示方法是在计算机的存储单元中将数的有效数字和数的范围分开表示,数的小数点位置随比例因子的不同而在一定范围自由浮动。按IEEE754标准,32位浮点数和64位浮点数的标准格式如图2-2所示。

图2-2 浮点数的标准格式

其中各部分含义为:

符号位S

S是浮点数的符号位,占1位,安排在最高位,S=0表示正数,S=1表示负数。

尾数域M

由于规格化的浮点数的尾数域最左位(最高有效位)总是1,因此尾数域所表示的值是1.M。

阶码E

将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。

【说明】二进制与十进制转换规则举例:

1111.1111=(1×23+1×22+1×21+1×20).(1×21+1×22+1×23+1×24

(3)十进制数串的表示方法

字符串形式

即一个字节存放一个十进制的数位或符号位,需要给出该数在主存中的起始地址和位数(串的长度),这种方式表示的十进制字符串主要用在非数值计算的应用领域中。

压缩的十进制数串形式

压缩的十进制数串是用一个字节存放两个十进制的数位,即每个数位占用4个二进制位,同时用冗余的状态值表示正负,符号位放在数字位之后,规定数位加符号位之和必须为偶数,当和不为偶数时,应在最高数字位之前补一个0。如图2-3所示,采用12(C)和13(D)分别表示正负。

图2-3 压缩的十进制数串表示

2数的机器码表示

(1)原码表示法

原码的表示为符号位加上二进制数的绝对值,首位用1来表示负,用0来表示正,但它的最大缺点是加法运算复杂。真值转换为原码的方式:首位用0或1来表示真值的正负、其余位表示真值绝对值的二进制数。

(2)补码表示法

若真值为正,则原码=反码=补码;

若真值为负,则原码、反码、补码的转换关系为:

原码与反码的转换

符号位保持不变、其余位按位取反,如x真值为-105,则[x]=11101001,[x]=10010110,反码再取反码为原码。

原码与补码的转换

先将原码转换成反码,再在反码末位上加1即为补码,如x真值为-105,则[x]=10010111,补码再取补码为原码。

(3)移码表示法

移码通常用于表示浮点数的阶码,其目的是较为容易比较浮点数之间的大小。计算方法为:

补码的首位取反(无论0或1)即为移码,阶码为移码的末位减1。

3字符与字符串的表示方法

(1)字符

计算机处理字符数据采用ASCII编码方式,ASCII码共有8位,最高位为0,是一个偶校验位,如表2-1所示。

表2-1 ASCII字符编码表

(2)字符串

字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字符。当主存字由2个或4个字节组成时,在同一个主存字中,既可按从低位字节向高位字节的顺序存放字符串内容,也可按从高位字节向低位字节的顺序存放字符串内容。

4汉字的表示方法

(1)汉字的输入编码

数字编码;

拼音码;

字形编码。

(2)汉字内码

一般采用两个字节表示,同时两个字节的最高位均规定为“1”,应用于内部处理。

(3)汉字字模码

汉字字模码应用于汉字的输出。

5校验码

最常用的校验码为奇偶校验码,奇偶校验位定义为

一个字传输前后的奇偶校验位发生错误则可以表示收到的信息有误,但其只能提供奇数个错误检测,不能检测偶数个错误,更不能确定错误信息的位置。

二、定点加减法运算

1补码加法

补码加法的公式是:

[x]+[y]=[x+y]

【说明】由上式可知,只要求出x与y的补码,即可求出x+y,但需注意两点:

符号位要参与运算;

超过原码位数的进位要舍掉。

2补码减法

数用补码表示时,减法运算的公式为

[x-y]=[x]-[y]=[x]+[-y]

【说明】由上可知,若要求x-y,则只需求x补码及-y补码即可,将y的首位取反即得-y。

3溢出

(1)概述

在运算过程中如出现大于字长绝对值的现象,称为“溢出”。

(2)检测方法

双符号位法

双符号位法即变形补码,用两个二进制位来表示数字的符号位,其余与补码相同。其中用“00”表示正,用“11”表示负,也称为模4的补码。用变形补码进行加减运算时有如下情况:

a.“00”:结果为正,且无溢出;

b.“11”:结果为负,且无溢出;

c.“01”:结果正溢出;

d.“10”:结果负溢出。

单符号位法。

溢出逻辑表达式为

其中Cf为符号位产生的进位,C0为最高有效位产生的进位。

三、定点乘法运算

1机器算法方式

设x与y的原码分别为

则乘积算法与十进制乘法相似,为

2不带符号的阵列乘法器

不带符号的阵列乘法器是对机器算法的基本实现,分为被加数产生部件和被加数求和部件。被加数产生部件会产生乘数和被乘数的乘积aibj,通过被加数求和部件将所有被加数求和得到结果。

3带符号的阵列乘法器

带符号的阵列乘法器计算步骤为:

输入原码数据[x]与[y]

n位算前求补器输出不带符号的x与y;

乘法阵列计算n位乘n位不带符号的乘法阵列,输出不带符号的乘法结果;

2n位算后求补器输出带符号x×y的原码,得到结果。

四、定点除法运算

1原码除法

两个原码表示的数相除时,商的符号由两数的符号按位相加求得,商的数值部分由两数的数值部分相除求得。

2恢复余数法

恢复余数法由于除法进行过程的步数不固定,因此控制比较复杂。实际中常用不恢复余数法,又称加减交替法。

3不恢复余数法

以4位乘4位阵列除法器为例,假设有x=0.101001,y=0.111,则先求得[x]=0.101001,[y]=0.111,[-y]=1.001,则除法的计算过程可描述为如图2-4所示。

图2-4 不恢复余数的除法步骤

五、定点运算器的组成

1概述

运算器必须要有的结构有:

算术/逻辑运算单元;

数据缓冲寄存器和通用寄存器;

多路转换器;

数据总线等逻辑构件。

2逻辑运算

(1)逻辑数

逻辑数,是指不带符号的二进制数。

(2)逻辑运算的内容

计算机中的逻辑运算,主要有四种:

逻辑非运算

逻辑非运算又称求反,常用变量上方加一横来表示。

逻辑加运算

对两个数进行逻辑加,就是按位求它们的“或”,所以逻辑加又称逻辑或,常用记号“+”来表示。

逻辑乘运算

对两数进行逻辑乘,就是按位求它们的“与”,所以逻辑乘又称逻辑与,常用记号“*”来表示。

逻辑异运算

对两数进行逻辑异就是按位求它们的模2和,所以逻辑异又称按位加,常用记号“⊕”来表示。

3多功能算术/逻辑运算单元(ALU)

(1)加法/减法器存在的问题

由于串行进位,加法/减法器的运算时间很长;

就行波进位加法器本身,它只能完成加法和减法两种操作而不能完成逻辑操作。

(2)串行与并行加法器区别

串行进位

串行进位又称为行波进位,每一级进位直接依赖于前一级的进位,即进位信号是逐级形成的。其最长运算时间主要是由进位信号的传递时间决定的,位数越多延迟时间就越长。

并行进位

各级进位信号同时形成,又称为先行进位,同时进位。原理是将各级的低一级送入的进位和本级产生的进位同时送入高一级的全加器,以便它们同时形成进位信号,其主要依赖于初始进位输入,而不依赖于低一级的进位输入。

(3)多功能算术/逻辑运算单元(ALU)的优点

不仅具有多种算术运算和逻辑运算的功能,而且具有先行进位逻辑,从而能实现高速运算。

4内部总线

(1)按总线所处位置

内部总线

内部总线是指CPU内各部件的连线。

外部总线

外部总线是指系统总线,即CPU与存储器、I/O系统之间的连线。

(2)按总线逻辑结构

单向传送总线

单向总线是指信息只能向一个方向传送。

双向传送总线

双向总线是指信息可以向两个方向传送,既可以发送数据,也可以接收数据。

5定点运算器的基本结构

计算机的运算器大体有如下三种结构形式:

(1)单总线结构的运算器

单总线结构的运算器如图2-5所示。其优点是电路结构简单、但是操作速度较慢。

图2-5 单总线结构的运算器

(2)双总线结构的运算器

双总线结构的运算器如图2-6所示。结构相对复杂,但数据传送更灵活。

图2-6 双总线结构的运算器

(3)三总线结构的运算器

三总线结构的运算器如图2-7所示。其特点是ALU的两个输入端分别由两条总线供给,而输出则由第三条总线供给,因此操作速度特别快。

图2-7 三总线结构的运算器

六、浮点运算方法和浮点运算器

1浮点加法、减法运算

浮点数加减法操作流程如图2-8所示。

图2-8 浮点数加减法的流程

2浮点乘法、除法运算

浮点乘除法的操作流程如图2-9所示。

图2-9 浮点数乘除法的操作流程