运算方法与运算器改_第1页
运算方法与运算器改_第2页
运算方法与运算器改_第3页
运算方法与运算器改_第4页
运算方法与运算器改_第5页
已阅读5页,还剩168页未读 继续免费阅读

下载本文档

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

文档简介

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

2.2定点加法、减法运算

2.3定点乘法运算

2.4定点除法运算

2.5定点运算器的组成

2.6浮点运算方法和浮点运算器本章小结运算方法和运算器第2页,共173页,2024年2月25日,星期天2.1数据与文字的表示方法2.1.1数据格式2.1.2数的机器码表示2.1.3字符与字符串的表示方法2.1.4汉字的表示方法2.1.5校验码数据与文字的表示方法第3页,共173页,2024年2月25日,星期天2.1.1数据格式

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

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

浮点格式(小数点位置浮动)容许的数值范围很大,但要求的处理硬件比较复杂。数据格式第4页,共173页,2024年2月25日,星期天1.

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

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

其中:x0符号位,0代表正号,1代表负号)小数点的位置约定在符号位x0的后面(不显示)小数点的位置约定在数值位xn的后面(不显示)定点数的表示方法第5页,共173页,2024年2月25日,星期天定点数例例:X=+1010110.纯整数:X=01010110.正数,符号位取0Y=-1101001.纯整数:Y=11101001.负数,符号位取1X=+0.11011Y=-0.10101符号位取0纯小数:X=0.11011符号位取1纯小数:X=1.10101第6页,共173页,2024年2月25日,星期天纯整数:X=01010110符号位取0纯整数:Y=11101001符号位取1符号位取0纯小数:X=0.11011符号位取1纯小数:X=1.10101注意到:无论是整数或是小数,在机器数的表示中,都不出现小数点“.”,只是约定其位置。定点数例第7页,共173页,2024年2月25日,星期天(x0x1x2…xn

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

(2.1)

纯整数的表示范围为:

0≤|x|≤2n-1

(2.2)

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

定点数的表示方法第8页,共173页,2024年2月25日,星期天例: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、浮点数的表示方法第9页,共173页,2024年2月25日,星期天浮点数表示可见:一个机器浮点数由阶码E和尾数M及其符号位组成。约定:尾数M用定点小数表示,给出有效数字的位数,M决定了浮点数的表示精度;

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

第10页,共173页,2024年2月25日,星期天注:阶码位数与尾数位数的关系在字长确定的情况下,阶码的位数增加,数的表示范围增加;但数的尾数的位数相应减少,则数的精度就降低。浮点数的规格化表示方法:规格化:其尾数的第一位为“1”,若不为1,则用左规的方法来实现。实例机器零当一个浮点数的尾数为0,不论阶码为何值,其结果为0阶码的值遇到比它能表示的最小值还小时,不管尾数为何值,其结果为0浮点数表示第11页,共173页,2024年2月25日,星期天注:阶码位数与尾数位数的关系例:说明以下数值是否为规格化数据210*0.11012-10*0.1101211*0.011012-11*0.001101规格化后:210*0.110129*0.1101返回浮点数表示第12页,共173页,2024年2月25日,星期天注:阶码位数与尾数位数的关系例:浮点数运算把一个真值为+23.25的十进制用浮点数格式1表示,要求如下:其原码设浮点数字长为16位,其中阶码5位,尾数10位,符号位1位。把一个真值为+23.25的十进制用浮点数格式2表示,要求如下:其原码设浮点数字长为16位,其中阶码5位(含1位符号位),尾数11位(含1位符号位)。浮点数表示第13页,共173页,2024年2月25日,星期天注:阶码位数与尾数位数的关系例:浮点数运算把一个真值为+23.25的十进制用浮点数格式1表示,要求如下:其原码设浮点数字长为16位,其中阶码5位,尾数10位,符号位1位。解1:令X=23.25表示成二进制为:10111.01用浮点数规格化表示其原码为【X】原=2+00101*0.1011101000则在机器中表示为:或【X】原=0,00101,1011101000浮点数表示第14页,共173页,2024年2月25日,星期天注:阶码位数与尾数位数的关系例:浮点数运算把一个真值为+23.25的十进制用浮点数格式1表示,要求如下:其原码设浮点数字长为16位,其中阶码5位,尾数10位,符号位1位。解2:令X=23.25表示成二进制为:10111.01用浮点数规格化表示其原码为【X】原=2+00101*0.1011101000则在机器中表示为:或【X】原=0,0101,0,1011101000浮点数表示第15页,共173页,2024年2月25日,星期天浮点数表示按照IEEE754的标准,32位浮点数(和64位)浮点数的标准格式为:其中:S=浮点数的符号位,0表示正数,1表示负数。

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

一个规格化的32位浮点数x的真值可表示为:X=(-1)S×(1.M)×2E-127

,e=E-127

其中尾数域所表示的值是1.M。因为规格化的浮点数的尾数域最左位(最高有效位)总是1,故这一位经常不予存储,而认为隐藏在小数点的左边。第16页,共173页,2024年2月25日,星期天浮点数表示几点注释:

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

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

第17页,共173页,2024年2月25日,星期天浮点数表示[解:]将16进制数展开后,可得到二进制数格式为:01000001001101100000000000000000指数e=阶码-127=10000010-01111111=00000011=(3)10包括隐藏位1的尾数1.M=1.01101100000000000000000=1.011011于是有:x=(-1)S×1.M×2e=(-1)0+(1.011011)×23

=+1011.011=(11.375)10[例1]:若浮点数x的二进制存储格式为(41360000)16,求其32位浮点数的十进制值。第18页,共173页,2024年2月25日,星期天浮点数表示[解:]首先分别将整数和分数部分转换成二进制数: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”被隐藏[例2]:将十进制数20.59375转换成位浮点数的二进制格式来存储。第19页,共173页,2024年2月25日,星期天

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

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

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

123C(+123)012D(-12)十进制数的表示方法第20页,共173页,2024年2月25日,星期天

在传统的计算机体系结构中,用指令本身来说明操作数据的类型。如:定点加法表示操作数是纯小数或纯整数;浮点加法表示操作数是浮点数;十进制加法表示操作数是BCD数。由于操作数据类型不同,要设三种不同的指令(操作码)来加以区分。4.自定义数据表示数串的表示第21页,共173页,2024年2月25日,星期天

自定义数据表示则用数据本身来说明数据类型。表示形式有两种,即标志符数据表示和描述符数据表示。标志符数据表示:要求对每一个数据都附加标志符,其格式如下:标识符数据其中:标志符指明后面的数据所具有的类型,如整数、浮点数、BCD数、字符串等。数串的表示第22页,共173页,2024年2月25日,星期天描述符数据表示:主要用来描述多维结构的数据类型,如向量、矩阵、记录等。其格式为:描述符标志位特征标记数据块长度数据块起始地址

指明这是一个数据描述符指明数据的特征指明数组中元素个数指明数据块的首地址注:描述符指令中并未给出具体数据,仅指出数据的性质和存储地点。标志符与描述符表示的区别:参见教材P23数串的表示第23页,共173页,2024年2月25日,星期天基本思想:把符号位和数字位一起编码来表示一个 实际的数。主要表示方法有:原码、补码、反码、移码等。各种编码表示的数称为机器数或机器码;其对应的真实数值称为该编码对应的真值。数的机器码表示2.1.2数的机器码表示第24页,共173页,2024年2月25日,星期天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>-1第25页,共173页,2024年2月25日,星期天对于定点整数

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

[x]原=x0x1x2…xn,

注意到:原码机器中“+0”、“-0”

有两种形式:对于定点小数:[+0]原=0.000…0[-0]原=1.000…0对于定点整数:[+0]原=0000…0.[-0]原=1000…0.数的原码表示x2n>x≥02n-x=2n+|x|

0≥x>-2n(2.8)符号数值第26页,共173页,2024年2月25日,星期天一般情况下,对于定点小数,其真值与原码之间的转换符合下面的规律:

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.数的原码表示第27页,共173页,2024年2月25日,星期天

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

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

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

∴设某数为x,当Mod=12时,x-3=x+9、x+7=x-5都是等价的。从这里可以得到一个启示,就是负数用补码表示时,可以把减法转化为加法。数的补码表示第29页,共173页,2024年2月25日,星期天补码的定义: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第30页,共173页,2024年2月25日,星期天

根据补码定义,求负数的补码时需作一次减法运算,这显然不是补码方法的初衷。后面将介绍反码表示法可以解决负数的求补问题。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第31页,共173页,2024年2月25日,星期天数的补码表示注:0的补码只有一种形式

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

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

因此,补码的表示范围相对于原码、反码来讲多一种,定点小数可以表示-1,n+1位定点整数可以表示-2n。第32页,共173页,2024年2月25日,星期天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)第33页,共173页,2024年2月25日,星期天由式(2.11)可以得出:[x]反+|x|=1.111…1=10.0…0-0.00…1=2-

2-n

得出:

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

0≥

x>-1数的反码表示第34页,共173页,2024年2月25日,星期天比较反码与补码的公式

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

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

的方法直接获得。数的补码与反码关系第35页,共173页,2024年2月25日,星期天例:已知 x=+0.1011, y=-0.1101,

求[x]补、[y]补按定义:[x]补=0.1011 (注:正数的补码就是该数本身)

[y]补=1.0010+0.0001 =1.0011 [y]反2-n注意到:1、0的反码不唯一:[+0]反=0.00…0;[-0]反=1.11…12、比较反码与补码的公式:[x]反=(2-2-n)+x

[x]补=2+x可知:补码与反码的关系为:[x]补=[x]反+2-n数的补码与反码关系第36页,共173页,2024年2月25日,星期天

上面的公式告诉我们,若要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最末位(2-n)上加1。对定点整数,反码表示的定义为:也可以用同样的方法得出定点整数的补码与反码的关系,找出利用反码求定点整数补码的方法。x2n

>x≥0

(2n+1-1)+x0≥

x≥-2n(2.13)数的补码与反码关系第37页,共173页,2024年2月25日,星期天

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

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

求[y]补解:[y]补=1.001

100保持不变逐位取反[y]反=1.001011[y]补=1.001011+0.000001=1.001100数的补码与反码关系第38页,共173页,2024年2月25日,星期天4.移码表示法

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

[x]移=2n+x

2n>x≥-2n(n为移码数值部分的位数)移码的表示方法第39页,共173页,2024年2月25日,星期天例:若阶码数值部分为5位,以x表示真值,则

[x]移=25+x

25>x≥-25

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

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

[解:]

原码、反码、补码表示分别示于下图。与原码、反码不同,在补码表示中“0”只有一种形式,且用补码表示负数时范围可到-2n

。机器码表示法小结第43页,共173页,2024年2月25日,星期天[例4]将十进制真值(-127,-1,0,+1,+127)列表表示成二进制数及原码、反码、补码、移码值。

[解:]

二进制真值x及其诸码值列于下表,其中0在[x]原[x]反中有两种表示。由表中数据可知,补码值与移码值差别仅在于符号位不同。机器码表示法小结第44页,共173页,2024年2月25日,星期天[例5]

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

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

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

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

最大正数值=(215-1)10=(+32767)10

=0111111111111111

最小负数值=-(215-1)10=(-32767)10

=1111111111111111

(15个1)机器码表示法小结(2)定点原码小数表示

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

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

第45页,共173页,2024年2月25日,星期天[例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机器码表示法小结第46页,共173页,2024年2月25日,星期天(4)最大负数

00000000000000000000000000000000x=-1.0×2-128

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

(3)最小负数机器码表示法小结第47页,共173页,2024年2月25日,星期天1.字符的表示方法

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

ASCII码规定8个二进制位的最高一位为0,余下的7位可以给出128个编码,表示128个不同的字符。字符和字符串的表示方法2.1.3字符与字符串的表示方法第48页,共173页,2024年2月25日,星期天表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_oDEL0-3位4-6位第49页,共173页,2024年2月25日,星期天2.字符串字符串:是指连续的一串字符,通常方式下,它们依次占用主存中连续的多个字节,每个字节存一个字符。[例]将字符串:

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。

字符和字符串的表示方法第50页,共173页,2024年2月25日,星期天IF空A>B空THEN空READ(C)空主存各字节单元内容字符和字符串的表示方法第51页,共173页,2024年2月25日,星期天2.1.4汉字的表示方法1.汉字的输入编码包括:数字码、拼音码和字形码数字码:常用的是国标区位码,用数字串代表一个汉字输入。数字编码输入的优点是无重码,且输入码与内部编码的转换比较方便;缺点是代码难以记忆。拼音码:拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字同音字太多,输入重码率很高,同音字选择影响了输入速度。字形码:字形编码是用汉字的形状来进行的编码(例:五笔字型)。把汉字的笔划部件用字母或数字进行编码,按笔划的顺序依次输入,就能表示一个汉字。汉字的表示方法(汉字的输入编码)第52页,共173页,2024年2月25日,星期天2.汉字内码

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

各种因素常常导致计算机在处理信息过程中出现错误。为了防止错误,可将信号采用专门的逻辑线路进行编码以检测错误,甚至校正错误。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。效验码第56页,共173页,2024年2月25日,星期天2.2定点加法减法运算

2.20二进制的运算规则2.2.1补码加法2.2.2补码减法2.2.3溢出概念与检验方法2.2.4基本的二进制加法、减法器2.2.5十进制加法器定点加减法运算第57页,共173页,2024年2月25日,星期天2.2.0二进制数的运算规则算术运算:加法规则:补码的加法0+0=0+1=1+0=1+1=01110益处例:110101+101101=110101101101+1010010第58页,共173页,2024年2月25日,星期天2.2.0二进制数的运算规则算术运算:减法规则:补码的加法0-0=0-1=1-0=1-1=0110向高位借位例:110101-101101=110101101101-001000注:当被减数小于减数的时候,可以将其互换位置,结果为负号。第59页,共173页,2024年2月25日,星期天2.2.0二进制数的运算规则算术运算:乘法规则:补码的加法0*0=0*1=1*0=1*1=0001例:110101*101101=110101101101*100101第60页,共173页,2024年2月25日,星期天2.2.0二进制数的运算规则算术运算:除法规则:补码的加法0/1=1/1=01例:110111/101=11011110110111110110110101011第61页,共173页,2024年2月25日,星期天2.2.0二进制数的运算规则逻辑运算:逻辑或规则:补码的加法0+0=0+1=1+0=1+1=0111例:110101+101101=110101101101+111101用“V”或“+”表示:第62页,共173页,2024年2月25日,星期天2.2.0二进制数的运算规则逻辑运算:逻辑与规则:补码的加法0。0=0。1=1。0=1。1=0001例:110101.101101=110101101101。100101用“/\”或“.”表示:第63页,共173页,2024年2月25日,星期天2.2.0二进制数的运算规则逻辑运算:逻辑非规则:补码的加法0=1=10例:110101=001010用“-”表示:第64页,共173页,2024年2月25日,星期天2.2.0二进制数的运算规则逻辑运算:逻辑异或规则:补码的加法0⊕0=0⊕1=1⊕0=1⊕1=0110例:110101⊕101101=110101101101⊕011000用⊕或表示:第65页,共173页,2024年2月25日,星期天2.2.1原码加法符号位相同的原码相加:直接相加符号位不同的原码相加:做减法运算补码的加法[例]:x=+0.1001,

y=+0.0101(+0.1001)

+(+0.0101)

+0.1110

所以x+y=+0.1110第66页,共173页,2024年2月25日,星期天2.2.1原码加法符号位相同的原码相加:直接相加符号位不同的原码相加:做减法运算补码的加法[例]:x=+0.1001,

y=-0.0101(+0.1001)

-(-0.0101)

+0.1110

所以x+y=+0.1110第67页,共173页,2024年2月25日,星期天2.2.1补码加法补码加法的公式是:[x]补+[y]补=[x+y]补(mod2)

补码的加法[例8]:[x]补=0.1001,[y]补=0.0101[x]补

0.1001+[y]补

0.0101

[x+y]补

0.1110

所以x+y=+0.1110第68页,共173页,2024年2月25日,星期天[例9]: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=最高位1自行丢失可见,补码加法的特点为:

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

2、要在模2的意义下相加,即超过2的进位要自动丢掉。整数的计算同样适合,只是模不同。补码的加法第69页,共173页,2024年2月25日,星期天2.2.2补码减法补码的减法公式如下:[x-y]补=[x]补-[y]补=[x]补+[-y]补补码的减法[例10]

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

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

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

[x1]补=1.0010[-x1]补=0.1110[x2]补=[-x2]补=0.11011.0011第70页,共173页,2024年2月25日,星期天[例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]补

补码的减法所以:x-y=+0.011110.0111溢出、舍掉第71页,共173页,2024年2月25日,星期天[又例]

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]补

所以:

x-y=补码的减法0.1101>00.1101第72页,共173页,2024年2月25日,星期天[又例]

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]补

所以:

x-y=补码的减法1.1000-0.1000第73页,共173页,2024年2月25日,星期天2.2.3溢出概念与检测方法

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

机器定点小数表示如:两个正数相加,结果为负(即:大于机器所能表示的最大正数),称为上溢。而两个负数相加,结果为正(即:小于机器所能表示的最小负数),称为下溢。溢出概念与检测方法第74页,共173页,2024年2月25日,星期天[例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两正数相加,结果为负,显然错误。(运算中出现了“上溢”)第75页,共173页,2024年2月25日,星期天[又例]

x=+0.1011,

y=+0.0010,

求x+y。[解:]

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

0.1011+[y]补

0.0010[x+y]补

溢出概念与检测方法无进位无进位0.1101两正数相加,结果为正,无溢出第76页,共173页,2024年2月25日,星期天[例13]

x=-0.1101,

y=-0.1011,

求x+y。[解:]

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

[x]补

1.0011

+[y]补

1.0101[x+y]补

两负数相加,结果为正,显然错误。(运算中出现了“下溢”)溢出概念与检测方法10.1000有溢出第77页,共173页,2024年2月25日,星期天[又例]

x=-0.1101,

y=-0.1011,

求x+y。[解:]

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

[x]补

1.0011

+[y]补

1.0101[x+y]补

两负数相加,结果为正,显然错误。(运算中出现了“下溢”)溢出概念与检测方法无进位有进位0.1000第78页,共173页,2024年2月25日,星期天[又例]

x=-0.1101,

y=-0.0010,

求x+y。[解:]

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

[x]补

1.0011

+[y]补

1.1110[x+y]补

1.0001两负数相加,结果为负,无溢出。溢出概念与检测方法有进位有进位第79页,共173页,2024年2月25日,星期天产生“溢出”的原因:

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

当最高有效位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢。溢出概念与检测方法第80页,共173页,2024年2月25日,星期天“溢出”检测方法:

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

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

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

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

(mod4)第81页,共173页,2024年2月25日,星期天

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

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

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

同样必须:第82页,共173页,2024年2月25日,星期天

[例14]

x=+0.1100,

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

:

[x]补=00.1100,[y]补=00.1000

[x]补

00.1100

+[y]补

00.1000

两个符号位出现“01”,表示已溢出,即结果大于+1。上溢01.0100第83页,共173页,2024年2月25日,星期天

[又例]

x=+0.1100,

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

:

[x]补=00.1100,[y]补=00.1000

[x]补

00.1100

+[y]补

00.0001

两个符号位=“00”,表示无溢出。00.1101第84页,共173页,2024年2月25日,星期天

[例15]

x=-0.1100,

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

:

[x]补=11.0100,[y]补=11.1000

[x]补

11.0100+[y]补

11.1000

两个符号位出现“10”,表示已溢出,即结果小于-1。下溢10.1100第85页,共173页,2024年2月25日,星期天

[又例]

x=-0.0100,

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

:

[x]补=11.1100,[y]补=11.1000

[x]补

11.1100+[y]补

11.1000

两个符号位出现“11”,表示无溢出。11.0100第86页,共173页,2024年2月25日,星期天溢出概念与检测方法由此可以得出如下结论:1.当以模4补码运算,运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。故溢出逻辑表达式为

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

第87页,共173页,2024年2月25日,星期天溢出概念与检测方法

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

故:溢出逻辑表达式为:

V=Cr⊕Co其中:

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

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

第88页,共173页,2024年2月25日,星期天2.3定点乘法运算

2.3.1原码一位乘法及其实现2.3.2定点补码一位乘法及其实现2.3.3原码两位乘法2.3.4补码两位乘法2.3.5定点除法及其实现定点乘法运算第89页,共173页,2024年2月25日,星期天2.3.1原码一位乘法及其实现在定点计算机中,用两个原码表示的数相乘,其乘积的符号由两数的符号位异或得到,乘积的数值部分是两数的绝对值相乘之积。例如,有两个数X和Y,[X]原=XsX1X2

…Xn[Y]原=YsY1Y2

…Yn则[X*Y]原=[X]原*[Y]原。乘积的符号位为:Xs⊕Ys乘积的数值部分为:(X1X2

…Xn)*(Y1Y2

…Yn)。第90页,共173页,2024年2月25日,星期天例如:X=0.1001,Y=0.1101求Z=X*Y

解:0.1001X0.110110010000100110010.01110101得到相乘结果X*Y=0.01110101第91页,共173页,2024年2月25日,星期天 在计算机中实现乘法运算的方法是:移们相加,即采用部分积右移的方法。其运算规则是:根据乘数Y绝对值每个数位上的值Yi是“1”还是“0”(从最低位Y0开始),决定本次部分积是加上被乘数X的绝对值,还是加上全“0”,得到的新部分积右移一位,再重复上面的动作,直到乘法做完为止。

第92页,共173页,2024年2月25日,星期天【例4.20】X=+11010,Y=+10110,求Z=X*Y

解:[X]原=0.11010,[Y]原=0.10110乘积的符号位Z0=0⊕0=0乘积的数值部分是两数的绝对值相乘。开始时,部分积为全“0”。第93页,共173页,2024年2月25日,星期天所得结果Z=+0.1000111100。有时部分积的符号位出现“1”,并不是出现了负数,而是部分积的值超出了“1”,右移时符号位应补“0”。

第94页,共173页,2024年2月25日,星期天部分积乘数判别位0.000000101101

X=110101,y=101101,求x*y+0.110101101101

+0.110101101101

+0.011010110110

1

+0.000000110110

1

+0.011010110110

1

+0.001101011011

0

1

+0.110101011011

01+1.000010011011

01第95页,共173页,2024年2月25日,星期天部分积乘数判别位X=110101,y=101101,求x*y+1.000010011011

01+0.1000010

01101

1

01+0.1101010

01101

1

01+1.0101100

01101

1

01+0.1010110

0

0110

1

1

01+0.0000000

0

0110

1

1

01+0.1010110

0

0110

1

1

01+0.01010110

0

01

1

0

1

1

01+0.11010110

0

01

1

0

1

1

01+1.00101010

0

01

1

0

1

1

01+0.100101010

0

01

1

0

1

1

01第96页,共173页,2024年2月25日,星期天要实现原码一位乘法,乘积的符号可以用异或门实现,异或门的两个输入为相乘两数的符号,输出即为乘积的符号。下图给出了实现原码一位乘法的逻辑电路框图,以实现对相乘两数的数值位相乘。

实现原码一位乘法的逻辑电路框图

RS基本触发器时钟脉冲判别位第97页,共173页,2024年2月25日,星期天主要组成部件有:寄存器A,存放计算的部分积Z,具有自动移位功能;寄存器B,存放被乘数X;寄存器C,存放乘数Y,具有自动移位功能;加法器F,进行部分积和被乘数相加;计数器i,用来控制逐位相乘的次数。控制信号A→F、B→F分别通过与门控制部分积、被乘数送入加法器F进行相加;控制信号A/2→A、C/2→C分别控制寄存器A、C自行右移一位。第98页,共173页,2024年2月25日,星期天2.3.2定点补码一位乘法及其实现(重点)假设两个数X和Y相乘,X=x0.x1x2x3…xn;Y=y0.y1y2y3…y两个正数补码数相乘,其结果应直接得到乘积的补码: [X]补*[Y]补=[X*Y]补因为:

[X*Y]补=X*Y=[X]原*[Y]原=[X]补*[Y]补那么:X、Y为任意符号呢?第99页,共173页,2024年2月25日,星期天⑴当被乘数X的符号为任意,乘数Y的符号为正。因为Y≥0,[Y]补=Y,则[X]补*[Y]补=[X]补*Y=[X*Y]补由于:[X]补*[Y]补=[X]补*Y =[X]补*(0.y1y2y3…yn)

=[X*Y]补第100页,共173页,2024年2月25日,星期天⑵当被乘数X的符号为任意,乘数Y的符号为负。因为Y<0,则(3)综上所述:这种情况,结果应该进行修正,把【X】补*2n作为修正值,其运算规则如下:A、符号位参加运算,结果和符号由运算结果得出,重复执行N步右移操作进行相加;B、当乘数Y为负数时,需进行N+1步操作,进行修正。C、当被乘数X与乘数Y均为任意的情况时,应该用比较法补码乘法。既BOOTH法第101页,共173页,2024年2月25日,星期天⑶BOOTH法假设两个数X和Y相乘,X=x0.x1x2x3…xn;Y=y0.y1y2y3…y当被乘数X和乘数Y的符号都任意时侯。

[X*Y]补=[X]补*(0.y1y2y3…yn)-[X]补*y0

=[X]补*(-y0+0.y1y2y3…yn)

=[X]补*(-y0+y1*2-1+y2*2-2+y3*2-3…yn*2-n)=[X]补*{(y1-y0)+(y2-y1)*2-1+(y3-y2)*2-2+(y4-y3) *2-3…(yn-yn-1)*2-(n-1)+(0-yn)*2-n}第102页,共173页,2024年2月25日,星期天写成递推公式:[Z0]补=0[Z1]补=2-1*{[Z0]补+(Yn+1-Yn)*[X]补

}

Yn+1=0[Z2]补=2-1*{([Z1]补+(Yn-Yn-1)*[X]补)}[Z3]补=2-1*{([Z2]补+(Yn-1-Yn-2)*[X]补)} ┇[Zi]补=2-1*{([Zi-1]补+(Yn-i+2-Yn-i+1)*[X]补)} ┇[Zn+1]补=([Zn]补+(Y1-Y0)*[X]补)最后乘积为[Zn+1]补式中,Yn+1为附加位,在Yn+1以后,Yn+1=0。第103页,共173页,2024年2月25日,星期天由此,可以总结出比较法补码乘法的规则:在作补码一位乘法时,在乘数的最末位后面再加一位附加位yn+1。开始时,yn+1=0,第一步运算是根据yn+1yn这两位的值判断后决定,然后再根据ynyn-1这两位的值判断第二步该作什么运算,再根据yn-2yn-3这两位的值判断第三步该作什么运算,如此等等。因为每进行一步,乘数都要右移一位,yn-1yn

就移到ynyn+1位置上。作第三步时,原来的yn-2yn-1移到了yn-1yn位置上。所以每次只要判断ynyn+1这两位

温馨提示

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

评论

0/150

提交评论