计算机组成原理运算方法运算器解析课件_第1页
计算机组成原理运算方法运算器解析课件_第2页
计算机组成原理运算方法运算器解析课件_第3页
计算机组成原理运算方法运算器解析课件_第4页
计算机组成原理运算方法运算器解析课件_第5页
已阅读5页,还剩236页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章运算方法与运算器

运算方法和运算器第二章运算方法与运算器运算方法和运算器本章内容:2.1数据与文字的表示方法

2.2定点加法、减法运算

2.3定点乘法运算

2.4定点除法运算

2.5定点运算器的组成

2.6浮点运算方法和浮点运算器本章小结运算方法和运算器本章内容:2.1数据与文字的表示方法运算方法和运算器2.1数据与文字的表示方法2.1.1数据格式2.1.2数的机器码表示2.1.3字符与字符串的表示方法2.1.4汉字的表示方法2.1.5校验码数据与文字的表示方法2.1数据与文字的表示方法2.1.1数据格式数据与文字的2.1.1数据格式

计算机中常用的数据表示格式有两种:(1)定点格式(2)浮点格式

定点格式(小数点位置固定)容许的数值范围有限,但要求的处理硬件比较简单。

浮点格式(小数点位置浮动)容许的数值范围很大,但要求的处理硬件比较复杂。数据格式2.1.1数据格式计算机中常用的数据表示格式有两1.

定点数的表示方法定点表示:约定机器中所有数据的小数点位置是按约定固定不变的,小数点就不再使用记号“.”来表示。定点数据的形式:纯小数或纯整数。

(设:定点数表示为x=x0x1x2…xn

其中:x0符号位,0代表正号,1代表负号)小数点的位置约定在符号位x0的后面(不显示)小数点的位置约定在数值位xn的后面(不显示)定点数的表示方法1.

定点数的表示方法定点表示:约定机器中所有数据的小数点定点数例例:X=+1010110.纯整数:X=01010110.正数,符号位取0Y=-1101001.纯整数:Y=11101001.负数,符号位取1X=+0.11011Y=-0.10101符号位取0纯小数:X=0.11011符号位取1纯小数:X=1.10101定点数例例:纯整数:X=01010110.正数,符号位取纯整数:X=01010110符号位取0纯整数:Y=11101001符号位取1符号位取0纯小数:X=0.11011符号位取1纯小数:X=1.10101注意到:无论是整数或是小数,在机器数的表示中,都不出现小数点“.”,只是约定其位置。定点数例纯整数:X=01010110符号位取0纯整数:Y=1(x0x1x2…xn

各位均为0时最小;各位均为1时最大)纯小数的表示范围:0≤|x|≤1-2-n

(2.1)

纯整数的表示范围为:

0≤|x|≤2n-1

(2.2)

目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算。

定点数的表示方法(x0x1x2…xn各位均为0时最小;各位均为1时最大)定2、浮点数的表示方法例:156.78 =15.678×101

=

1.5678×102

=0.15678×103=M×RE其中:M为尾数;R为基数;E为阶码(指数)。二进制数在定点计算机中,一般约定:尾数|M|<1.0,并按此原则确定各数据的浮点表示格式。∴上例+156.67=0.15678×103

(规格化表示法)同理:对于二进制数+1011.1101=+0.10111101×2+4

=0.10111101×2+100=M×RE那么,计算机中究竟采用哪种数据形式?显然存在多种数据形式浮点数的表示方法2、浮点数的表示方法例:156.78 =15.678×浮点数表示可见: 一个机器浮点数由阶码E和尾数M及其符号位组成。约定:尾数M用定点小数表示,给出有效数字的位数,M决定了浮点数的表示精度;

阶码E:用整数形式表示,指明小数点在数据中的位置,其决定了浮点数的表示范围。∴浮点数的一般形式为:

浮点数表示可见:浮点数表示按照IEEE754的标准,32位浮点数和64位浮点数的标准格式为:其中:S=浮点数的符号位,0表示正数,1表示负数。

M=尾数,23位,用纯小数表示。E=阶码,8位,阶符采用隐含方式,即采用移码方式来表示正负指数。

其中:S=浮点数的符号位,0表示正数,1表示负数。

M=尾数,52位,用纯小数表示。E=阶码,11位,阶符采用隐含方式,即采用移码方式来表示正负指数。

浮点数表示按照IEEE754的标准,32位浮点数和64位浮点数表示几点注释:

为了提高数据的表示精度,当尾数的值不为

0时,其绝对值|M|应≥0.5,即:尾数绝对值域的最高有效位应为1,否则通过修改阶码同时左右移小数点的办法,使其变成这一表示形式,这称为浮点数的规格化表示。浮点数所表示的范围显然远比定点数大。以下两种情况计算机都把该浮点数看成零值,称为机器零。⑴当浮点数的尾数M为0;(不论其阶码E为何值)⑵当阶码E的值<Emin值时。(不管其尾数M为何值)

浮点数表示几点注释:浮点数表示[解:]首先分别将整数和分数部分转换成二进制数:20.59375=10100.10011然后移动小数点,使其在第1,2位之间

10100.10011=1.010010011×24

小数点被左移了4位,于是得到:e=4

尾符

S=0,阶码

E=4+127=131,尾数

M=010010011最后得到32位浮点数的二进制存储格式为:01000001101001001100000000000000

=(41A4C000)16此“1”被隐藏[例]:将十进制数20.59375转换成位浮点数的二进制格式来存储。浮点数表示[解:]此“1”被隐藏[例]:将十进制数20.5

3.十进制数串的表示方法十进制数串在计算机内主要有两种表示形式:

1.字符串形式字符串形式:每一个十进制的数位或符号位都用一个字节存放。如:+12

+12-38-382.压缩的十进制数串形式压缩的十进制数串形式:一个字节存放两个十进制的数位。如:+123、-12

123C(+123)012D(-12)十进制数的表示方法

3.十进制数串的表示方法十进制数串在计算机内主要有两种表示在传统的计算机体系结构中,用指令本身来说明操作数据的类型。如:定点加法表示操作数是纯小数或纯整数;浮点加法表示操作数是浮点数;十进制加法表示操作数是BCD数。由于操作数据类型不同,要设三种不同的指令(操作码)来加以区分。4.

自定义数据表示数串的表示在传统的计算机体系结构中,用指令本身来说明操4.自定义数据自定义数据表示则用数据本身来说明数据类型。表示形式有两种,即标志符数据表示和描述符数据表示。标志符数据表示:要求对每一个数据都附加标志符,其格式如下:标识符数据其中:标志符指明后面的数据所具有的类型,如整数、浮点数、BCD数、字符串等。数串的表示自定义数据表示则用数据本身来说明数据类型。表示形式有两种,即描述符数据表示:主要用来描述多维结构的数据类型,如向量、矩阵、记录等。其格式为:描述符标志位特征标记数据块长度数据块起始地址

指明这是一个数据描述符指明数据的特征指明数组中元素个数指明数据块的首地址注:描述符指令中并未给出具体数据,仅指出数据的性质和存储地点。标志符与描述符表示的区别:参见教材P23数串的表示描述符数据表示:主要用来描述多维结构的数据类型,如向量、矩2.1.2数的机器码表示

基本思想:把符号位和数字位一起编码来表示一个 实际的数。主要表示方法有:原码、补码、反码、移码等。各种编码表示的数称为机器数或机器码;其对应的真实数值称为该编码对应的真值。数的机器码表示2.1.2数的机器码表示基本思想:把符号位和数字位一1.原码表示法若定点小数为:x=±0.x1x2…xn,则其原码表示的定义是:式中[x]原是机器数,x是真值。例如,x=+0.1001,则[x]原=0.1001x=-0.1001,则[x]原=1.1001数值符号数的原码表示x1>x≥01-x=1+|x|0≥

x>-11.原码表示法若定点小数为:x=±0.x1x2…xn,对于定点整数

x=±x1x2…xn,则原码的定义是:对于定点整数,其原码形式为:

[x]原=x0x1x2…xn,数的原码表示x2n>x≥02n-x=2n+|x|

0≥x>-2n(2.8)符号数值例如,x=+11001,则[x]原=011001x=-10101,则[x]原=110101对于定点整数x=±x1x2…xn,则原码的定义是:数的原数的原码表示注意到:“+0”、“-0”

原码在机器中有两种形式:对于定点小数:[+0]原=0.000…0[-0]原=1.000…0对于定点整数:[+0]原=0000…0.[-0]原=1000…0.数的原码表示注意到:“+0”、“-0”原码在机器中有两种形

对于定点小数,其真值与原码之间的转换一般符合下面的规律:

x=+0.x1x2…xn[x]原=0.x1x2…xnx=-0.x1x2…xn[x]原=1.x1x2…xn

对于定点整数,其真值与原码之间的转换一般符合下面的规律:

x=+x1x2…xn[x]原=0x1x2…xn.x=-x1x2…xn[x]原=1x1x2…xn.∴对于定点小数,其真值与原码之间的转换

原码表示法的主要特点是简单、易懂,但它的最大缺点是:由于数值部分采用绝对值表示,因而使得加减法运算比较复杂,而加减法运算正是计算机中最常使用的运算。所以,必须探讨解决方法——补码则正是一种解决方法。数的原码表示原码表示法的主要特点是简单、易懂,但它的最大缺数的2.补码表示法

补码的概念(以钟表对时为例)

假设现在的标准时间为4点正;而有一只表已经7点了,为了校准时间,可以采用两种方法:一是将时针退3格(7-3=4);另一方法是将时针向前拨9格(7+9=16----4)。显然:这两种方法都能对准到4点,由此可以看出,减3和加9是等价的。所以称:当模数Mod=12时,9是(-3)补码。用数学公式表示:-3=+9 (mod12)“模”表示被丢掉的数值。上式在数学上称为同余式。

∴设某数为x,当Mod=12时,x-3=x+9、x+7=x-5都是等价的。从这里可以得到一个启示,就是当负数用补码表示时,可以把减法转化为加法。数的补码表示2.补码表示法补码的概念(以钟表对时为例)数的补码表示补码的定义:1、定点小数例如

x=+0.1011,则[x]补=0.1011;x=-0.1011,则[x]补=10+x=10.0000-0.1011

=1.0101正数的补码就是本身负数的补码需作运算数的补码表示x1>x≥02+x=2-|x|0≥

x≥-1(mod2)10.0000

-0.10111.0101补码的定义:1、定点小数例如 x=+0.1011,则[x]补

可见,根据补码定义,求负数的补码时需作一次减法运算,这显然不是补码方法的初衷。后面将介绍反码表示法可以解决负数的求补问题。2、定点整数例:已知 x=+10111, y=-11011,求[x]补、[y]补

(n=5)按定义:[x]补=010111 [y]补=25+1+y=1000000-11011=100101数的补码表示x2n

>x≥0

2n+1+x=2n+1-|x|0≥

x≥-2n(mod

2n+1)

100000011011100101注:上式机器数的位数为n+1可见,根据补码定义,求负数的补码时需作一次减法运算,数的补码表示注:0的补码只有一种形式

对于定点小数:[+0]补=[-0]补=0.0000

对于定点整数:[+0]补=[-0]补=00000.

因此,补码的表示范围相对于原码、反码来讲多一种,定点小数可以表示-1,n+1位定点整数可以表示-2n。数的补码表示注:0的补码只有一种形式3.反码表示法二进制数求反:就是二进制的各位数码0变为1,1变为0。即:若xi=0,则=1。若xi=1,则=0.对定点小数,反码的定义参见书(2.11)式。数的反码表示正数的反码就是本身负数的反码则是:符号位为1,数值位求反。x1>x≥0(2-

2-n)

+x=(2-

2-n)_|x|0≥

x>-1(2.11)3.反码表示法二进制数求反:就是二进制的各位数码0变为1,由式(2.11)可以得出:[x]反+|x|=1.111…1=10.0…0-0.00…1=2-

2-n

得出:

[x]反=(2-2-n)+x

0≥

x>-1数的反码表示由式(2.11)可以得出:数的反码表示比较反码与补码的公式

[x]反=(2-2-n)+x

[x]补=2+x可得到:[x]补=[x]反+2-n由此可知一个由反码求补码的重要公式,即:一个负数的补码,可以通过将该数:符号位置1,其余取反,然后在最末位(2-n

)上加1

的方法直接获得。数的补码与反码关系比较反码与补码的公式[x]反=(2-2-n例:已知 x=+0.1011, y=-0.1101,求[x]补、[y]补按定义:[x]补=0.1011 (注:正数的补码就是该数本身)

[y]补=1.0010+0.0001 =1.0011 [y]反2-n注意到:0的反码不唯一即:[+0]反=0.00…0;[-0]反=1.11…1数的补码与反码关系例:已知 x=+0.1011, y=-0.1101,求对定点整数,反码表示的定义为:也可以用同样的方法得出定点整数的补码与反码的关系,找出利用反码求定点整数补码的方法。x2n

>x≥0

(2n+1-1)+x0≥

x≥-2n(2.13)_数的补码与反码关系x2

求一个负数的补码的另一种有效的转换方法:

对于负数,将原码的符号位不变(或直接将符号位置1),数值部分由低位向高位转换,对开始遇到的0和第一个1取其原值不变,第一个1以后的各位均取反。例:y=-0.110100,求[y]补解:[y]补=1.001

100保持不变逐位取反[y]反=1.001011[y]补=1.001011+0.000001=1.001100数的补码与反码关系求一个负数的补码的另一种有效的转换方法:保持不变逐位4.移码表示法

在计算机中,移码通常用于表示浮点数的阶码。由于阶码一般取整数,所以移码通常只用于整数的表示。对定点整数,移码的定义是:

[x]移=2n+x

2n>x≥-2n(n为移码数值部分的位数)移码的表示方法4.移码表示法在计算机中,移码通常用于表示浮点移码的表例:若阶码数值部分为5位,以x表示真值,则

[x]移=25+x

25>x≥-25

又例:当正数x=+10101时,[x]移=1,10101

当负数x=-10101时,[x]移=25+x=25-10101=0,01011。注意到:

移码中的逗号不是小数点,而是表示左边一位是符号位。显然,移码中符号位x0表示的规律与原码、补码、反码相反。移码在数值上与补码一致,但是符号位与补码正好相反!移码的表示方法例:若阶码数值部分为5位,以x表示真值,则移码的表示方法机器码表示法小结:在数据的四种机器码表示法中:正数的原码、反码、补码等于真值,只有负数才分别有不同的表示方法。补码和移码的0只有一种表示方法,因此其表示范围相对于原码和反码多一种,定点小数可表示-1(移码没有小数形式),正数可表示-2n。移码表示法主要用于表示浮点数的阶码,可以直接比较大小。表示范围和补码相同,只有最高位相反。机器码表示法小结机器码表示法小结:在数据的四种机器码表示法中:机器码表示法小由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。在这类机器中数用补码表示,补码存储,补码运算。(也有些机器,数用原码进行存储和传送,运算时改用补码。还有些机器在做加减法时用补码运算,在做乘除法时用原码运算)机器码表示法小结由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码[例3]以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。

[解:]

原码、反码、补码表示分别示于下图。与原码、反码不同,在补码表示中,“0”只有一种形式,

且用补码表示负数时范围可到-2n

机器码表示法小结[例3]以定点整数为例,用数轴形式说明原码、反码、补码表示[例4]将十进制真值(-127、-1、0、+1、+127)列表表示成二进制数及原码、反码、补码、移码值。

[解:]

二进制真值x及其诸码值列于下表,其中0在[x]原[x]反中有两种表示。由表中数据可知,补码值与移码值差别仅在于符号位不同。机器码表示法小结[例4]将十进制真值(-127、-1、0、+1、+127)列[例5]

设机器字长16位,定点表示,尾数15位,数符1位,问:

(1)定点原码整数表示时,最大正数是多少?最小负数是多少?

(2)定点原码小数表示时,最大正数是多少?最小负数是多少?

[解:]定点原码整数表示

最大正数值=0111111111111111

=+(215-1)10=(+32767)10

最小负数值=1111111111111111

=-(215-1)10=(-32767)10(15个1)机器码表示法小结(2)定点原码小数表示

最大正数值=(+0.111...11)=(1-2-15)10

最小负数值=(-0.111..11)=-(1-2-15)10

[例5]设机器字长16位,定点表示,尾数15位,数符1位,[例6]假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数x,真值表示为:

x=(-1)s×(1.M)×2E-128

问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?

[解:](1)最大正数11111111111111111111111111111110x=[1+(1-2-23)]×2127(2)最小正数

00000000000000000000000000000000x=1.0×2-128机器码表示法小结[例6]假设由S,E,M三个域组成的一个32位二进制字所表示(4)最大负数

00000000000000000000000000000000x=-1.0×2-128

11111111111111111111111111111111x=-[1+(1-2-23)]×2127

(3)最小负数机器码表示法小结(4)最大负数00000000000000000000002.1.3字符与字符串的表示方法1.字符的表示方法

目前国际上普遍采用的字符系统是七单位的ASCII码(美国国家信息交换标准字符码),它包括10个十进制数码,26个英文字母和一定数量的专用符号,如$,%,+,=等,共128个元素,因此二进制编码需7位,加一位偶校验位,共8位一个字节。

ASCII码规定8个二进制位的最高一位(b7)恒为0,余下的7位可以给出128个编码,表示128个不同的字符。字符和字符串的表示方法2.1.3字符与字符串的表示方法1.字符的表示方法字符和字表2.1ASCII字符编码表0000010100111001011101110000NULDELSP0@Pp0001SOHDC1!1AQaq0010STXDC2“2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111DELETB7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\1|1101CRGS-=M]m}1110SORS.>Nn~1111SIUS/?O_oDELb3b2b1b0位b6b5b4位表2.1ASCII字符编码表00000101001112.字符串字符串:是指连续的一串字符,通常方式下,它们依次占用主存中连续的多个字节,每个字节存一个字符。[例]将字符串:

IF└┘A>B└┘THEN└┘READ(C)

从高位字节到低位字节依次存在主存中。[解:]设:主存单元长度由4个字节组成。每个字节中存放相应字符的ASCII值,文字表达式中的空格“└┘”在主存中也占一个字节的位置。因而每个字节分别存放十进制的73、70、32、65、62、66、32、84、72、69、78、32、82、69、65、68、40、67、41、32。

字符和字符串的表示方法2.字符串字符串:是指连续的一串字符,通常方式下,它们依次IF空A>B空THEN空READ(C)空主存各字节单元内容字符和字符串的表示方法IF空A>B空THEN空READ(C)空主存各字节单元内容字2.1.4汉字的表示方法1.汉字的输入编码包括:数字码、拼音码和字形码数字码:常用的是国标区位码,用数字串代表一个汉字输入。区位码是将国家标准局公布的6763个两级汉字分为94个区,每个区分94位,实际上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。数字编码输入的优点是无重码,且输入码与内部编码的转换比较方便,。缺点是代码难以记忆。拼音码:拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字同音字太多,输入重码率很高,同音字选择影响了输入速度。汉字的表示方法(汉字的输入编码)2.1.4汉字的表示方法1.汉字的输入编码汉字的表示字形码:字形编码是用汉字的形状来进行的编码(例:五笔字型)。把汉字的笔划部件用字母或数字进行编码,按笔划的顺序依次输入,就能表示一个汉字。为了加快输入速度,在上述方法基础上,发展了词组输入\联想输入等多种快速输入方法。但是都利用了键盘进行“手动”输入。理想的输入方式是利用语音或图象识别技术“自动”将拼音或文本输入到计算机内,使计算机能认识汉字,听懂汉语,并将其自动转换为机内代码表示。目前这种理想已经成为现实。

汉字的表示方法(汉字的输入编码)字形码:字形编码是用汉字的形状来进行的编码(例:五笔字型)。2.汉字内码

汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。英文字符的机内代码是七位的ASCII码,当用一个字节表示时,最高位为“0”。为了与英文字符能相互区别,汉字机内代码中两个字节的最高位均规定为“1”。注意:有些系统中字节的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。汉字的表示方法(汉字的内码)2.汉字内码汉字的表示方法3.汉字字模码字模码是用点阵表示的汉字字形代码,它是汉字的输出形式。。例如:字模码汉字的表示方法(汉字字模码)此例,汉字的字模码为:16位×16位=32字节3.汉字字模码字模码是用点阵表示的汉字字形代码,它是汉字注意到:字模点阵只能用来构成汉字库,而不能用于机内存储。字库中存储了每个汉字的点阵代码,用于汉字的显示输出或打印输出。当显示输出或打印输出时才检索字库,输出字模点阵,得到字形。汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同用途的编码,不要混为一谈。汉字的表示方法(汉字字模码)注意到:汉字的表示方法

各种因素常常导致计算机在处理信息过程中出现错误。为了防止错误,可将信号采用专门的逻辑线路进行编码以检测错误,甚至校正错误。2.1.5校验码

最简单且应用广泛的检错码方法是奇偶校验法,即:采用一位校验位的奇校验或偶校验的方法。设x=(x0x1…xn-1)是一个n位字,则奇校验位C定义为:C=x0⊕x1⊕…⊕xn-1,式中⊕代表按位加,只有当x中包含有奇数个1时,才使C=1,即C=0。同理,偶校验位C定义为:C=x0⊕x1⊕…⊕xn-1

即x中包含偶数个1时,才使C=0。效验码各种因素常常导致计算机在处理信息过程中出现错误。为了2.

假设一个字x从部件A传送到部件B。在源点A,校验位C可用上面公式算出来,并合在一起将(x0x1…xn-1C)送到B,采用偶效验。假设,在B点真正接收到的是x=(x‘0x’1…x‘n-1C’),然后计算:F=x'0⊕x'1⊕…⊕x'n-1⊕C‘

若F=1,意味着收到的信息有错,若F=0,表明x字传送正确。奇偶校验可提供奇数个错误检测,但无法检测偶数个错误,更无法识别错误信息的位置。(循环校验码CRC可解决此问题)效验码假设一个字x从部件A传送到部件B。在源点A,校验[例7]见书 P30数据偶校验编码C奇校验编码C101010100101010000000000011111111111111110101010-01010100-00000000-01111111-11111111-10101010-01010100-00000000-01111111-11111111-效验码[例7]见书 P30数据偶校验编码C奇校验编码C10[解]假如校验位后传送的数码为:数据偶校验编码C奇校验编码C1010101001010100000000000111111111111111101010100010101001000000000011111111111111110101010101010101000000000001011111110111111111效验码[解]数据偶校验编码C奇校验编码C1010102.2定点加法减法运算

2.2.1补码加法2.2.2补码减法2.2.3溢出概念与检验方法2.2.4基本的二进制加法、减法器2.2.5十进制加法器定点加减法运算2.2定点加法减法运算2.2.1补码加法定点加减法运算2.2.1补码加法补码加法的公式是:[x]补+[y]补=[x+y]补(mod2)

现分四种情况来证明。假设采用定点小数表示,因此证明的先决条件是:︱x︱﹤1,︱y︱﹤1,︱x+y︱﹤1。(1)x﹥0,y﹥0,则x+y﹥0。

相加两数都是正数,故其和也一定是正数。正数的补码和原码是一样的,可得:

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

(mod2)补码的加法2.2.1补码加法补码加法的公式是:补码的加法(2)x﹥0,y﹤0,则x+y>0或x+y<0。相加的两数一个为正,一个为负,因此相加结果有正、负两种可能。根据补码定义,

[x]补=x(正),

[y]补=2+y(负)

∴[x]补+[y]补=x+2+y=2+(x+y)当x+y>0时,2+(x+y)>2,进位2必丢失,又因(x+y)>0,所以:

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

(mod2)当x+y<0时,2+(x+y)<2,又因(x+y)<0,所以:

[x]补+[y]补=2+(x+y)=[x+y]补

(mod2)补码的加法(2)x﹥0,y﹤0,则x+y>0或x+y<0。补码的加法(3)x<0,y>0,则x+y>0或x+y<0。这种情况和第2种情况一样,把x和y的位置对调即得证。(4)x<0,y<0,则x+y<0。相加两数都是负数,则其和也一定是负数。∵[x]补=2+x,

[y]补=2+y∴[x]补+[y]补=2+x+2+y=2+(2+x+y)上式右边分为”2”和(2+x+y)两部分.既然(x+y)是负数,而其绝对值又小于1,那么(2+x+y)就一定是小于2而大于1的数,进位”2”必丢失.又因(x+y)<0,所以[x]补+[y]补=2+(x+y)=[x+y]补

(mod2)至此我们证明了,在模2意义下,任意两数的补码之和等于该两数之和的补码.这是补码加法的理论基础,其结论也适用于定点整数。补码的加法(3)x<0,y>0,则x+y>0或x+y<0。补码的加法[例]:[x]补=0.1001,[y]补=0.0101,计算x+y=?[x]补

0.1001+[y]补

0.0101

[x+y]补

0.1110

所以x+y=+0.1110

补码的加法[例]:[x]补=0.1001,[y]补=0.0101,[例]:x=+0.1011,y=-0.0101,求x+y。[解:][x]补=0.1011,

[y]补=1.1011[x]补

0.1011+[y]补1.1011

[x+y]补

10.0110

所以x+y=0.0110最高位1自行丢失可见,补码加法的特点为:

1、符号位作为数的一部分直接参加运算;

2、要在模2的意义下相加,即超过2的进位要自动丢掉。整数的计算同样适合,只是模不同。补码的加法[例]:x=+0.1011,y=-0.0101,求x+y2.2.2补码减法

由补码的原理可知,补码可以通过加法器来完成减法计算,进而简化运算器的结构。补码的减法公式如下:[x-y]补=[x]补-[y]补=[x]补+[-y]补公式的证明简单,只需证明:[-y]补=-[y]补即可。(见书P32)补码的减法2.2.2补码减法由补码的原理可知,补码可以通补码的减法

现证明如下:∵[x+y]补=[x]补+[y]补

(mod2)∴[y]补=[x+y]补-[x]补

(2.19a)∵[x-y]补=[x+(-y)]补=[x]补+[-y]补∴[-y]补=[x-y]补-[x]补

(2.19b)

将式(2.19a)与(2.19b)相加,得

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

=[x+x]补-[x]补-[x]补=0

故:[-y]补=

-[y]补(2.20)补码的减法现证明如下:补码的减法剩下的问题:只要给出[-y]补如何求取即可。已知[y]补,求取[-y]补的方法:

对[y]补包括符号位一起,各位求反且最末位加1,即可得到[-y]补。

即:[-y]补=[y]补+2-n

其中符号[y]补表示对[y]补做:包括符号位在内的求反操作,2-n表示最末位的1。连同符号位取反+2-n为末位+1补码的减法剩下的问题:只要给出[-y]补如何求取即可。已知[[例10]

已知x1=-0.1110,x2=+0.1101,

求:[x1]补,[-x1]补,

[x2]补,[-x2]补。[解:]

[x1]补=1.0010

[-x1]补=[x1]补+2-4=0.1101+0.0001=0.1110

[x2]补=0.1101

[-x2]补=[x2]补+2-4=1.0010+0.0001=1.0011补码的减法[例10]已知x1=-0.1110,x2=+0.11[例11]

x=+0.1101,y=+0.0110,求x-y。[解]:[x]补=0.1101

[y]补=0.0110

[-y]补=1.1010[x]补

0.1101+[-y]补

1.1010

[x-y]补

10.0111所以:

x-y=+0.0111补码的减法[例11]x=+0.1101,y=+0.0110,求[又例]

x=+0.0111,y=-0.0110,求x-y。补码的减法[解]:

[x]补=0.0111

[y]补=1.1010

[-y]补=0.0110

[x]补

0.0111+[-y]补

0.0110

[x-y]补

0.1101>0所以:x-y=+0.1101[又例]

x=+0.0111,y=-0.0110,求x[又例]

x=+0.0110,y=+0.1110,求x-y。[解]:

[x]补=0.0110

[y]补=0.1110

[-y]补=1.0010

[x]补

0.0110+[-y]补

1.0010

[x-y]补

1.1000<0所以:

x-y=-0.1000补码的减法[又例]

x=+0.0110,y=+0.1110,求x-2.2.3溢出概念与检测方法

以定点小数为例:在定点小数机器中,数的表示范围为|x|<1.在运算过程中如出现大于1的现象,称为“溢出”。(这在定点机中是不允许的)

机器定点小数表示特征:两个正数相加,结果为负(即:大于机器所能表示的最大正数),称为上溢。两个负数相加,结果为正(即:小于机器所能表示的最小负数),称为下溢。溢出概念与检测方法2.2.3溢出概念与检测方法以定点小数为例:

[例12]

x=+0.1011,y=+0.1001,求x+y。[解:]

[x]补=0.1011,[y]补=0.1001[x]补

0.1011+[y]补

0.1001[x+y]补

1.0100

两正数相加,结果为负,显然错误。(运算中出现了“上溢”)溢出概念与检测方法有进位无进位[例12]x=+0.1011,y=+0.1001,[又例]

x=+0.1011,y=+0.0010,求x+y。[解:]

[x]补=0.1011,[y]补=0.1001[x]补

0.1011+[y]补

0.0010[x+y]补

0.1101两正数相加,结果无溢出溢出概念与检测方法无进位无进位[又例]x=+0.1011,y=+0.0010,求[例13]

x=-0.1101,y=-0.1011,求x+y。[解:]

[x]补=1.0011[y]补=1.0101

[x]补

1.0011

+[y]补

1.0101[x+y]补

0.1000两负数相加,结果为正,显然错误。(运算中出现了“下溢”)溢出概念与检测方法无进位有进位[例13]x=-0.1101,y=-0.1011,[又例]

x=-0.1101,y=-0.0010,求x+y。[解:]

[x]补=1.0011[y]补=1.1110

[x]补

1.0011

+[y]补

1.1110[x+y]补

1.0001两负数相加,结果为负,无溢出。溢出概念与检测方法有进位有进位[又例]x=-0.1101,y=-0.0010,求产生“溢出”的原因:

分析可知,当最高有效数值位的运算进位与符号位的运算进位不一致时,将产生运算“溢出”。进一步结论:

当最高有效位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢。溢出概念与检测方法产生“溢出”的原因:

分析可知,当最高有效数值位的运“溢出”检测方法:

为了判断“溢出”是否发生,可采用两种检测的方法。第一种方法:采用双符号位法,这称为“变形补码”或“模4补码”,从而可使模2补码所能表示的数的范围扩大一倍。变形补码定义为(mod4)

:x2>x≥04+x=4-|x|0≥

x≥-2(2.22)溢出概念与检测方法或用同余式表示:[x]补=4+x(mod4)下式也同样成立:

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

(mod4)“溢出”检测方法:为了判断“溢出”是否发生,可采用

1.两个符号位都看作数码一样参加运算

2.两数进行以4位模的加法,即最高符号位上产生的进位要丢掉。

采用变形补码后,如果两个数相加后,其结果的符号位出现“01”或“10”两种组合时,表示发生溢出。这是因为两个绝对值小于1的数相加,其结果不会大于或等于2。所以,最高符号位所表示的是结果的正确符号。溢出概念与检测方法为了得到两数变形补码之和等于两数之和的变形补码,

样必须:1.两个符号位都看作数码一样参加运算溢出概念与检测方法[例14]x=+0.1100,y=+0.1000,求x+y。溢出概念与检测方法

[解]

:[x]补=00.1100,

[y]补=00.1000

[x]补

00.1100

+[y]补

00.1000

01.0100

两个符号位出现“01”,表示已溢出,即结果大于+1。上溢[例14]x=+0.1100,y=+0.1000,求x+[又例]x=+0.1100,y=+0.0001,求x+y。溢出概念与检测方法

[解]

:[x]补=00.1100,

[y]补=00.1000

[x]补

00.1100

+[y]补

00.0001

00.1101

两个符号位=“00”,表示无溢出。[又例]x=+0.1100,y=+0.0001,求x+y[例15]

x=-0.1100,y=-0.1000,求x+y溢出概念与检测方法

[解]

:[x]补=11.0100,

[y]补=11.1000

[x]补

11.0100+[y]补

11.1000

10.1100

两个符号位出现“10”,表示已溢出,即结果小于-1。下溢[例15]x=-0.1100,y=-0.1000,求x+

[又例]

x=-0.0100,y=-0.1000,求x+y。溢出概念与检测方法[解]

:[x]补=11.1100,

[y]补=11.1000

[x]补

11.1100+[y]补

11.1000

11.0100

两个符号位出现“11”,表示无溢出。[又例]x=-0.0100,y=-0.1000,求x溢出概念与检测方法由此可以得出如下结论:当以模4补码运算,运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。故:溢出逻辑表达式为

V=Sf1⊕Sf2,其中Sf1和Sf2分别为最高符号位和第二符号位。此逻辑表达式可用异或门实现。2.模4补码相加的结果,不论溢出与否,最高符号位始终指示正确的符号。

溢出概念与检测方法由此可以得出如下结论:溢出概念与检测方法

第二种溢出检测方法:采用“单符号位法”。从例1和例2中看到:(1).当最高有效位产生进位而符号位无进位时,产生上溢;(2).当最高有效位无进位而符号位有进位时,产生下溢。

故:溢出逻辑表达式为:

V=Cf⊕Co其中:

Cf为符号位产生的进位,Co为最高有效位产生的进位。(显然:此逻辑关系可用异或门方便地实现)。

在定点机中,当运算结果发生溢出时,机器通过逻辑电路自动检查出溢出故障,并进行中断处理。

溢出概念与检测方法第二种溢出检测方法:采用“单符号位法”二进制加法/减法器2.2.4基本的二进制加法/减法器

两个二进制数字Ai,Bi和一个进位输入Ci相加,产生一个和输出Si,以及一个进位输出Ci+1。表2.2中列出一位全加器进行加法运算的输入输出真值表。根据表2.2所示的真值表,三个输入端和两个输出端可按如下逻辑方程进行联系:

Si=Ai⊕Bi⊕Ci

Ci+1=AiBi+BiCi+CiAi1111110011101010100110110010100110000000Ci+1SiCiBiAi输出输入表2.2一位全加器真值表(2.23)二进制加法/减法器2.2.4基本的二进制加法/减法器11二进制加法/减法器按表达式(2.23)组成的一位全加器(FA)示意图2.2(b)对一位全加器(FA)来说,Si的时间延迟为6T(每级异或门延迟3T),Ci+1的时间延迟为5T,其中T被定义为相应于单级逻辑电路的单位门延迟。T通常采用一个“与非”门或一个“或非”门的时间延迟来作为度量单位。3T+3T3T+T+T二进制加法/减法器按表达式(2.23)组成的一位全加器(FA二进制加法/减法器

教材第35页图2.2(a)示出了补码运算的二进制加法/减法器的逻辑结构图。由图看到,n个1位的全加器(FA)可级联成一个n位的行波进位加减器。M为方式控制输入线,当M=0时,作加法(A+B)运算;当M=1时,作减法A-B运算,在后一种情况下,[A]补+[B]补运算转化成[A]补+[-B]补运算,求补过程由B+1来实现。因此,图中最右边的全加器的起始进位输入端被连接到功能方式线M上,作减法时M=1,相当于在加法器的最低位上加1。另外,图中左边还表示出单符号位法的溢出检测逻辑;当Cn=Cn-1时,运算无溢出;而当Cn≠Cn-1时,运算有溢出,经异或门产生溢出信号。

电路示意图二进制加法/减法器教材第35页图2.2(a)示出了补二进制加法/减法器二进制加法/减法器二进制加法/减法器现在我们计算一个n位的行波进位加法器的时间延迟。(见书P35-36)假如采用图2.2(a)所示的一位全加器并考虑溢出检测,那么n位行波进位加法器的延迟时间ta为:ta=n·2T+9T=(2n+9)T(2.24)9T为最低位上的两级“异或”门;再加上溢出“异或”门(3T),2T为每级进位链的延迟时间。

当不考虑溢出检测时,有

ta=(n-1)·2T+9T

(2.25)

ta意味着加法器的输入端输入加数和被加数后,在最坏情况下加法器输出端得到稳定的求和输出所需的最长时间。显然这个时间越小越好。注意,加数、被加数、进位与和数都是用电平来表示的,因此,所谓稳定的求和输出,就是指稳定的电平输出。(CAI演示)二进制加法/减法器现在我们计算一个n位的行波进位加法器的时间二进制加法/减法器延迟时间ta为:2T延迟时间ta为:3T考虑溢出检测时,延迟时间ta为:ta=n·2T+9T=(2n+9)T当不考虑溢出检测时,有:ta=(n-1)·2T+9T二进制加法/减法器延迟时间ta为:2T延迟时间ta为:十进制加法器2.2.5十进制加法器

十进制加法器可由BCD码(二-十进制码)来设计,它可以在二进制加法器的基础上加上适当的“校正”逻辑来实现,该校正逻辑可将二进制的“和”改变成所要求的十进制格式。

n位BCD码行波式进位加法器的一般结构如图2.3(a)所示,它由n级组成,每一级将一对4位的BCD数字相加,并通过一位进位线与其相邻级连接。而每一位十进制数字的BCD加法器单元的逻辑结构示于图2.3(b)。(见书P36)

四位二进制数表示十进制数的一位(0-9),即数据范围:0000-1001十进制加法器2.2.5十进制加法器十进制加法器例:设Xi=0110=(6)10 Yi=0111=(7)10

则:Si’=Xi+Yi=0110+0111=1101=(13)10

十位数:1个位数:3

对Si’进行“加6校正”后:

Si=Si’+6=1101+0110=10011 1 3Si’>9的情况:Si’= 1010, 1011, 1100, 1101, 1110, 1111.

当Si’>9时,要求:

(1).产生向高位的进位信号Ci+1;(2).对Si’进行“+6”校正,得出本位的十进制数值。实现:(6)10+(7)10

进位十进制加法器该位的和十进制加法的校正十进制加法器例:设Xi=0110=(6)10 Yi十进制加法器

在十进制运算时,当相加二数之和大于9时,便产生进位。可是用BCD码完成十进制数运算时,当和数大于9时,必须对和数进行加6修正。这是因为,采用BCD码后,在二数相加的和数小于等于9时,十进制运算的结果是正确的;而当相加的和数大于9时,结果不正确,必须加6修正后才能得出正确的结果。因此,当第一次近似求值时,可将它看成每一级是一个4位二进制加法器来执行,就好像xi和yi是普通4位二进制数一样。设S‘i代表这样得到的4位二进制数和,C’i+1为输出进位,而Si代表正确的BCD和,Ci+1代表正确的进位,那么:

当xi+yi+Ci<10时,Si=S‘I(无须校正)

当Xi+Yi+Ci≥10时,

Si=S‘i+6(需要”+6”校正)显然,对于十进制加法来说,当C'i+1=1或S'i≥10时,应当有:输出进位Ci+1=1。因此,可利用Ci+1的状态来产生所要求的校正因子:

Ci+1=1时校正因子为6;Ci+1=0时校正因子为0。在图2.3(b)中,4位行波式进位的二进制加法器计算出和S'i,然后S'i经过第二级二进制加法器加上0或6,进而产生最终十进制结果Si。十进制加法器在十进制运算时,当相加二数之和大于9时,十进制加法器和大于9?和有进位校正:Ci+1=0时:+0;

Ci+1=1时:+6;十进制加法器和大于9?和有进位校正:Ci+1=0时:+0;2.3定点乘法运算

2.3.1原码并行乘法2.3.2补码并行乘法定点乘法运算2.3定点乘法运算2.3.1原码并行乘法定点乘法运算2.3.1原码乘法1.人工算法与机器算法的同异性在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。

设n位被乘数和乘数用定点小数表示(定点整数也同样适用)

被乘数

[x]原=xf.xn-1…x1x0

乘数

[y]原=yf.yn-1…y1y0

则乘积:

[z]原=(xf⊕yf)+(0.xn-1…x1x0)(0.yn-1…y1y0)(2.26)

式中,xf为被乘数符号,yf为乘数符号。

原码乘法运算2.3.1原码乘法1.人工算法与机器算法的同异性原码乘法运乘积符号的运算法则是:同号相乘为正,异号相乘为负。由于被乘数和乘数的符号组合只有四种情况(xfyf=00,01,10,11),因此积的符号可按“异或”(按位加)运算得到。数值部分的运算方法与普通的十进制小数乘法类似,不过对于用二进制表达式的数来说,其乘法规则更为简单一些。设x=0.1101,y=0.1011.让我们先用习惯方法求其乘积,观察其过程:原码乘法运算0.1101(x)X0.1011(y)

110111010000+11010.10001111(z)乘积符号的运算法则是:同号相乘为正,异号相乘为负。由于被乘数

运算的过程与十进制乘法相似:

从乘数y的最低位开始,若这一位为“1”,则将被乘数x写下;若这一位为“0”,则写下全0。然后再逐次完成对乘数y各高位的乘法运算,其规则同上。不过高一位乘数的权比低一位乘数的权大一级(21=2),因此被乘数x要左移一位。以此类推,直到乘数各位全部乘完为止,最后将它们统统加起来,变得到最后乘积z。如果被乘数和乘数用定点整数表示,运算过程也完全一样。原码乘法运算运算的过程与十进制乘法相似:从乘数y的最低位开始,

然而,人们习惯的算法对机器并不完全适用。原因之一:机器通常只有n位长,两个n位数相乘,乘积可能为2n位。原因之二:只有两个操作数相加的加法器难以胜任将n个位积一次相加起来的运算。早期计算机中为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论