版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、运算方法与运算器,2/00,本章内容: 1 数据与文字的表示方法 2 定点加法、减法运算 3 定点乘法运算 4 定点除法运算 5 定点运算器的组成 6 浮点运算方法和浮点运算器,3/00,1 数据与文字的表示方法,本节内容: 1.1 数据格式 1.2 数的机器码表示 1.3 字符与字符串的表示方法 1.4 汉字的表示方法 1.5 校验码,4/00,1.1 数据格式,计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式。 一般来说,定点格式容许的数值范围有限,但要求的处理硬件比较简单。而浮点格式容许的数值范围很大,但要求的处理硬件比较复杂。,5/00,定点数的表示方法,定点表示:约定机器
2、中所有数据的小数点位置是固定不变的。由于约定在固定的位置,小数点就不再使用记号“.”来表示。通常将数据表示成纯小数或纯整数。 定点数012 n 在定点机中表示如下(0 :符号位,0代表正号,1代表负号): 纯小数的表示范围为(012 n各位均为0时最小;各位均为1时最大): 0|12n,6/00,纯整数的表示范围为: 0|2n1 目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算。,7/00,浮点数的表示方法,电子的质量(91028克)和太阳的质量(21033克)相差甚远,在定点计算机中无法直接来表示这个数值范围。要使它们送入定点计算机进行某种运算,必须对它们分别取不同的比
3、例因子,使其数值部分绝对值小于1,即: 9 10 28 0.9 1027 2 10330.2 1034,8/00,这里的比例因子1027 和 1034要分别存放在机器的某个存储单元中,以便以后对计算结果按这个比例增大。显然这要占用一定的存储空间和运算时间。因此得到浮点表示法如下: 浮点表示法:把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示,这种把数的范围和精度分别表示的方法,数的小数点位置随比例因子的不同而在一定范围内自由浮动。,9/00,任意一个十进制数 可以写成: N = 10E.M 同样,在计算机中一个任意进制数 可以写成 e. 其中: :尾数,是一个纯小数。 e :比
4、例因子的指数,称为浮点数的指数,是一个整数。 R :比例因子的基数,对于二进计数值的机器是一个常数,一般规定 为2,8或16。 一个机器浮点数由阶码和尾数及其符号位组成(尾数:用定点小数表示,给出有效数字的位数决定了浮点数的表示精度; 阶码:用整数形式表示,指明小数点在数据中的位置,决定了浮点数的表示范围。):,10/00,为便于软件移植,按照 IEEE754 标准,32位浮点数和64位浮点数的标准格式为 :,11/00,32位的浮点数中, :浮点数的符号位,1 位,0表示正数,1表示负数。 :尾数,23位,用小数表示,小数点放在尾数域的最前面。 :阶码(8 位),阶符采用隐含方式,即采用移码
5、方式来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数真值e 变成阶码 时,应将指数 e 加上一个固定的偏移值127(01111111),即 e127.,12/00,IEEE754 标准中,一个规格化的32位浮点数的真值可表示为: (1)s(1.)2127 e127 一个规格化的64位浮点数的真值为 : (1)s(1.)21023 e1023,13/00,同一个浮点数的表示方法不是唯一的,如: (1.75)10=1.1120 (IEEE规格化表示) =0.11121 (传统规格化表示) =0.011122 =0.001
6、1123,14/00,为提高数据的表示精度,当尾数的值不为 0 时,尾数域的最高有效位应为1,否则以修改阶码同时左右移小数点的办法,使其变成这一表示形式,这称为浮点数的规格化表示。 当浮点数的尾数为 0,不论其阶码为何值,或者当阶码的值遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值,称为机器零。,15/00,当阶码E 为全0且尾数M 也为全0时,表示的真值x 为零,结合符号位S 为0或1,有正零和负零之分。当阶码E 为全1且尾数M 为全0时,表示的真值x 为无穷大,结合符号位S 为0或1,也有+和-之分。这样在32位浮点数表示中,要除去E 用全0和全1(255)10
7、表示零和无穷大的特殊情况,指数的偏移值不选128(10000000),而127(01111111)。对于规格化浮点数,E 的范围变为1到254,真正的指数值e 则为-126到+127。因此32位浮点数表示的绝对值的范围是10-381038(以10的幂表示)。 浮点数所表示的范围远比定点数大。一台计算机中究竟采用定点表示还是浮点表示,要根据计算机的使用条件来确定。一般在高档微机以上的计算机中同时采用定点、浮点表示,由使用者进行选择,而单片机中多采用定点表示。,16/00,例1 若浮点数的754标准存储格式为(41360000)16,求其浮点数的十进制数值。,17/00,解: 将十六进制数展开后,
8、可得二进制数格式为: 指数e阶码127100000100111111100000011=(3)10 包括隐藏位1的尾数1.M1.011 0110 0000 0000 0000 00001.011011 于是有(1)s1.M2e (1.011011)231011.011(11.375)10,18/00,例2 将(20.59375)10转换成754标准的32位浮点数的二进制存储格式。,19/00,解: 首先分别将整数和分数部分转换成二进制数: 20.5937510100.10011 然后移动小数点,使其在第1,2位之间 10100.100111.01001001124e4 于是得到: S0,E41
9、27131,M010010011 最后得到32位浮点数的二进制存储格式为: 0100 0001 1010 0100 1100 0000 0000 0000(41A4C000)16,20/00,1.2 数的机器码表示,在计算机中对数据进行运算操作时,符号位如何表示呢?是否也同数值位一道参加运算操作呢?为了妥善的处理好这些问题,就产生了把符号位和数字位一起编码来表示相应的数的各种表示方法,如原码、补码、反码、移码等。为了区别一般书写表示的数和机器中这些编码表示的数,通常将前者称为真值,后者称为机器数或机器码。,21/00,1.原码表示法 (1)若定点小数的原码形式为x0 x1 x2 xn,则原码表
10、示的定义是 式中原是机器数,是真值 例如,+0.1001,则原0.1001 -0.1001,则原1.1001 对于0,原码机器中往往有“+0”、“-0”之分,故有两种形式: +0原=0.000.0 -0原=1.000.0,22/00,(2)若定点整数的原码形式为x0 x1 x2 xn,则原码表示的定义是 采用原码表示法简单易懂,但它的最大缺点是加法运算复杂。这是因为,当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号。为了解决这些矛盾,人们找到了补码表示法。,23/00,2.补码表示法 我们先以钟表对时为例
11、说明补码的概念。假设现在的标准时间为4点正; 而有一只表已经7点了,为了校准时间,可以采用两种方法:一是将时针退 7-4=3 格;一是将时针向前拨12-3=9格。这两种方法都能对准到4点,由此可以看出,减3和加9是等价的,就是说9是(-3)对12的补码,可以用数学公式表示 -3+9(mod12) mod12的意思就是12模数,这个“模”表示被丢掉的数值。上式在数学上称为同余式。 上例中其所以7-3和7+9(mod12)等价,原因就是表指针超过12时,将12自动丢掉,最后得到16-12=4。从这里可以得到一个启示,就是负数用补码表示时,可以把减法转化为加法。这样,在计算机中实现起来就比较方便。,
12、24/00,(1)若定点小数补码形式为x0 . x1 x2 xn,则补码表示的定义是 例如,+0.1011,则补0.1011 -0.1011, 则补10+10.0000-0.10111.0101 对于0,0补0补0.0000 (mod 2) 注意,0的补码表示只有一种形式。,25/00,(2)对定点整数,补码表示的定义是 采用补码表示法进行减法运算就比原码方便得多了。因为不论数是正还是负,机器总是做加法,减法运算可变为加法运算。但根据补码定义,求负数的补码要从2减去|x|。为了用加法代替减法,结果还得在求补码时作一次减法,这显然是不方便的。下面介绍的反码表示法可以解决负数的求补问题。,26/0
13、0,3.反码表示法 所谓反码,就是二进制的各位数码0变为1,1变为0。 即:若xi=1,则反码为xi=0;若xi=0,则反码xi=1。 在计算机中用触发器寄存数码,若触发器Q端输出表示原码,则其Q端输出就是反码。由此可知,反码是容易得到的。,27/00,(1)对定点小数,反码表示的定义为 其中n代表数的位数。 在一些文献中,这种以2为基数的反码又称为1的补码。,28/00,一般情况下, 对于正数 0. x1 x2 xn, 则 反0. x1 x2 xn 对于负数 0. x1 x2 xn,则有 反1. x1 x2 xn 对于0,有0反和0反 之分: 0反0.00.0 0反1.11.1,29/00,
14、比较反码与补码的公式 反(22n) 补2 可得到 补反2n 这就是通过反码求补码的重要公式。这个公式告诉我们,若要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最末位(2-n)上加1。,30/00,(2)对定点整数,反码表示的定义为:,31/00,4.移码表示法 移码通常用于表示浮点数的阶码。由于阶码是个n位的整数,假定定点整数移码形式为 x1 x2 xn时,对定点整数,移码的传统定义是真值加上一个固定常数2n,32/00,若阶码数值部分为7位,以表示真值,则 移27 = 128 + 128 128 例如,当正数1010101 时, 移1,1010101 ; 当负数1010
15、1 01时, 移27271010101 10000000 - 1010101 = 0,0101011。 移码中的逗号不是小数点,而是表示左边一位是符号位。,33/00,小结:上面的数据四种机器表示法中,移码表示法主要用于表示浮点数的阶码。由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。在这类机器中,数用补码表示,补码存储,补码运算。也有些机器,数用原码进行存储和传送,运算时改用补码。还有些机器在做加减法时用补码运算,在做乘除法时用原码运算。,34/00,例3以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。 解: 原码、反码、补码表示分别示于下图。
16、与原码、反码不同,在补码表示中“0”只有一种形式,且用补码表示负数时范围可到2n 。,35/00,例4将十进制真值(127,1,0,1,127)列表表示成二进制数及原码、反码、补码、移码值。 解:二进制真值及其诸码值列于下表,其中0在原反中有两种表示。由表中数据可知,补码值与移码值差别仅在于符号位不同。,36/00,例5设机器字长16位,定点表示,尾数15位,数符1位,问: (1)定点原码整数表示时,最大正数是多少?最小负数是多少? (2)定点原码小数表示时,最大正数是多少?最小负数是多少?,37/00,解: (1)定点原码整数表示 最大正数值(2151)10(32767) 10 最小负数值(
17、2151) 10(32767) 10 (2)定点原码小数表示 最大正数值(1215) 10(0.111.11)2 最小负数值(1 215) 10 (0.111.11) 2,38/00,例6假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数,真值表示为: (1)s(1.M)2E128 问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?,39/00,解: (1)最大正数 1(12-23)2127 (2)最小正数 1.02128 (3)最小负数 1(12-23)2127 (4)最大负数 1.02128,40/00,1.3 字符与字符串的表示方法,1.字符的表示方
18、法 现代计算机不仅处理数值领域的问题,而且处理大量非数值领域的问题。这样一来,必然要引入文字、字母以及某些专用符号,以便表示文字语言、逻辑语言等信息。 目前国际上普遍采用的字符系统是七单位的ASCII码(美国国家信息交换标准字符码),它包括10个十进制数码,26个英文字母和一定数量的专用符号,如$,%,等,共128个元素,因此二进制编码需7位,加一位偶校验位,共8位一个字节。ASCII码规定8个二进制位的最高一位为0,余下的7位可以给出128个编码,表示128个不同的字符。其中95个编码,对应着计算机终端能敲入并且可以显示的95个字符,打印机设备也能打印这95个字符,如大小写各26个英文字母,
19、09这10个数字符,通用的运算符和标点符号,*,/, 等等。另外的33个字符,其编码值为031和127,则不对应任何一个可以显示或打印的实际字符,它们被用作控制码,控制计算机某些外围设备的工作特性和某些计算机软件的运行情况。,41/00,2.字符串 字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字符。当主存字由2个或4个字节组成时,在同一个主存字中,既可按从低位字节向高位字节的顺序存放字符串的内容,也可按从高位字节向低位字节的次序顺序存放字符串的内容。,42/00,1.4 汉字的表示方法,1.汉字的输入编码 为了能直接使用西文标准键盘把汉字输入到计算机,就必
20、须为汉字设计相应的输入编码方法。当前采用的方法主要有以下三类: 数字编码 常用的是国标区位码,用数字串代表一个汉字输入。区位码是将国家标准局公布的6763个两级汉字分为94个区,每个区分94位,实际上把汉字表示成二维数组,每个汉字在数组中的下标就是区位码。区码和位码各两位十进制数字,因此输入一个汉字需按键四次。 数字编码输入的优点是无重码,且输入码与内部编码的转换比较方便,缺点是代码难以记忆。 拼音码 拼音码是以汉字拼音为基础的输入方法。使用简单方便,但汉字同音字太多,输入重码率很高,同音字选择影响了输入速度。 字形编码 字形编码是用汉字的形状来进行的编码。把汉字的笔划部件用字母或数字进行编码
21、,按笔划的顺序依次输入,就能表示一个汉字。,43/00,2.汉字内码 汉字内码是用于汉字信息的存储、交换、检索等操作的机内代码,一般采用两个字节表示。英文字符的机内代码是七位的ASCII码,当用一个字节表示时,最高位为“0”。为了与英文字符能相互区别,汉字机内代码中两个字节的最高位均规定为“1”。 注意:有些系统中字节的最高位用于奇偶校验位,这种情况下用三个字节表示汉字内码。,44/00,3.汉字字模码 字模码是用点阵表示的汉字字形代码,它是汉字的输出形式。 根据汉字输出的要求不同,点阵的多少也不同。字模点阵的信息量很大,所占存储空间也很大。因此字模点阵只能用来构成汉字库,而不能用于机内存储。
22、字库中存储了每个汉字的点阵代码。当显示输出或打印输出时才检索字库,输出字模点阵,得到字形。,45/00,汉字的字模点阵及编码 注意,汉字的输入编码、汉字内码、字模码是计算机中用于输入、内部处理、输出三种不同用途的编码,46/00,1.5 校验码,1 问题提出,47/00,元件故障噪声干扰等各种因素常常导致计算机在处理信息过程中出现错误。为了防止错误,可将信号采用专门的逻辑线路进行编码以检测错误,甚至校正错误。通常的方法是,在每个字上添加一些校验位,用来确定字中出现错误的位置。 最简单且应用广泛的检错码是采用一位校验位的奇校验或偶校验。,48/00,设(012 n-1)是一个n位字,则奇校验位定
23、义为 C0 1 n-1 式中代表按位加,表明只有当中包含有奇数个1时,才使C1,即C0。 同理,偶校验位定义为 C0 1 n-1 即中包含偶数个1时,才使C0。 假设一个字从部件 A 传送到部件 B。在源点 A,校验位C可用上面公式算出来,并合在一起将(0 1 n-1 C)送到B。假设在B点真正接收到的是(0 1 n-1 C ),然后计算 F0 1 n-1 C 若F1,意味着收到的信息有错,若F0,表明字传送正确。奇偶校验提供奇数个错误检测,无法检测偶数个错误,更无法识别错误信息的位置。,49/00,例7已知下表中左面一栏有5个字节的数据。请分别用奇校验和偶校验进行编码,填在中间一栏和右面一栏
24、。,50/00,解:假定最低一位为校验位,其余高8位为数据位,列表如下。从中看出,校验位的值取0还是取1, 是由数据位中1的个数决定的。,51/00,2 定点加法、减法运算,本节内容: 2.1 补码加法 2.2 补码减法 2.3 溢出概念与检验方法 2.4 基本的二进制加法、减法器 2.5 十进制加法器,52/00,2.1 补码加法,负数用补码表示后,可以和正数一样来处理。 这样,运算器里只需要一个加法器就可以了,不必为了负数的加法运算,再配一个减法器。 补码加法的公式是 补补补 ( mod 2) 证明如下。,53/00,现分四种情况来证明。假设采用定点小数表示,因此证明的先决条件是 1, 1
25、, 1。 (1)0,0,则0。 相加两数都是正数,故其和也一定是正数。数的补码和原码是一样的,可得: 补补补 (mod 2),54/00,(2)0,0,则0或0时,2()2,进位2必丢失,又因()0, 故 补补补(mod 2) 当0时,2 () 2,又因()0, 故 补补2()补(mod 2),55/00,(3)0,则0或 0。这种情况和第2种情况一样,把和的位置对调即得证。 至此我们证明了,在模2意义下,任意两数的补码之和等于该两数之和的补码.这是补码加法的理论基础,其结论也适用于定点整数。,56/00,例8 0.1001, 0.0101,求。 解: 补0.1001, 补0.0101 所以
26、0.1110,57/00,例90.1011, 0.0101,求。 解: 补0.1011,补1.1011 所以0.0110 由以上两例看到,补码加法的特点,一是符号位要作为数的一部分一起参加运算,二是要在模2的意义下相加,即超过2的进位要丢掉。,58/00,2.2 补码减法,负数的减法运算也要设法化为加法来做,其所以使用这种方法而不使用直接减法,是因为它可以和常规的加法运算使用同一加法器电路,从而简化了计算机的设计。 数用补码表示时,减法运算的公式为 补补补补补 证明如下。,59/00,只要证明补补,上式即得证。现证明如下: 补补补(mod 2) 补补补 (1) 补()补补补 补补补 (2) 将
27、式(1)式与(2)式相加,得 补补补补补补 补补补 补补补0 故 补补 (mod 2),60/00,从补求补的法则是:对补包括符号位“求反且最末位加1”,即可得到 补。写成运算表达式,则为 补补2 n 其中符号表示对补作包括符号位在内的求反操作,2n表示最末位的1,61/00,例10 已知x1 0.1110,20.1101,求:1补,1补,2补,2补。 解: 1补1.0010 1补1补2-40.11010.00010.1110 2补0.1101 2补2补2-4 1.00100.00011.0011,62/00,例11 0.1101,0.0110,求。 解: 补0.1101 ,补0.0110,
28、补1.1010 所以0.0111,63/00,2.3 溢出概念与检测方法,在定点小数机器中,数的表示范围为|1. 在运算过程中如出现大于1的现象,称为“溢出”。在定点机中,正常情况下溢出是不允许的。,64/00,例12 0.1011, 0.1001,求。 解: 补0.1011 补0.1001 补0.1011 补0.1001 - 补1.0100 两个正数相加的结果成为负数,这显然是错误的。,65/00,例13 0.1101, 0.1011,求。 解: 补1.0011 补1.0101 补1.0011 补1.0101 - 补0.1000 两个负数相加的结果成为正数,这同样是错误的。,66/00,之所
29、以发生错误,是因为运算结果产生了溢出。两个正数相加,结果大于机器所能表示的最大正数,称为上溢。而两个负数相加,结果小于机器所能表示的最小负数,称为下溢。 为了判断“溢出”是否发生,可采用两种检测的方法。,67/00,第一种方法是采用双符号位法,这称为“变形补码”或“模4补码”,从而可使模2补码所能表示的数的范围扩大一倍。变形补码定义为: 或用同余式表示为 补4(mod 4),68/00,为了得到两数变形补码之和等于两数之和的变形补码,同样必须: 1. 两个符号位都看作数码一样参加运算 2. 两数进行以4位模的加法,即最高符号位上产生的进位要丢掉。 采用变形补码后,如果两个数相加后,其结果的符号
30、位出现“01”或“10”两种组合时,表示发生溢出。这是因为两个绝对值小于1的数相加,其结果不会大于或等于2,所以最高符号位永远表示结果的正确符号。,69/00,例14 0.1100, 0.1000,求。 解: 补00.1100,补00.1000 补 00.1100 补 00.1000 - 01.0100 两个符号位出现“01”,表示已溢出,即结果大于1。,70/00,例15 0.1100, -0.1000,求。 解: 补11.0100,补11.1000 补11.0100 补11.1000 - 10.1100 两个符号位出现“10”,表示已溢出,即结果小于1。,71/00,由此可以得出如下结论:
31、 1. 当以模4补码运算,运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。故溢出逻辑表达式为 VSf1Sf2,其中Sf1和Sf2分别为最高符号位和第二符号位。此逻辑表达式可用异或门实现。 2. 模4补码相加的结果,不论溢出与否,最高符号位始终指示正确的符号。 第二种溢出检测方法是采用单符号位法。从例1和例2中看到,当最高有效位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢。故溢出逻辑表达式为VCfCo,其中Cf为符号位产生的进位,Co为最高有效位产生的进位。此逻辑表达式也可用异或门实现。 在定点机中当运算结果发生溢出时,机器通过逻辑电路自动检查出溢出,
32、并进行中断处理。,72/00,2.4 基本的二进制加法/减法器,由于采用补码运算,我们可以把减法转换成加法进行,所以加法的功能是运算器必备的最基本的功能,加法器就是实现该功能的器件,假设我们只有基本的门电路(与、或、非、异或等),如何实现加法器的逻辑电路? 1 、全加器 先看一个二进制加法的简单例子:,73/00,我们现在希望单独把两个位的相加作为一个模块来设计,同时考虑低位来的进位,以及向高位的进位,那么,要实现多位如8位的加法,则只要把8个模块串起来就可以。而这个模块我们称全加器。 模块类似于函数,考虑它的输入/输出,输入是加数的一位和被加数的一位,以及低位的进位,而输出是和(称本位和)和
33、向高位的进位。如下图:,74/00,我们把所有输入情况都写下来得到下表,75/00,由上面的逻辑真值表我们可以得到如下逻辑表达式(可以采用逻辑函数的公式化简法或卡诺图化简法,见数字逻辑教材) 由逻辑表达式可以画出逻辑电路图(可以用数据验证):,76/00,用生物学来比喻,门电路(与门、或门、非门、异或门)相当于最小的单位-细胞,则全加器(FA)相当于是运算器的构成单位-组织,如果要构造一个4位加法器-器官,则可以把4个全加器连接起来,如下页图。 试用两组数据来验证: A=1011 B=1001 A=0011 B=0101,77/00,78/00,分析串行进位的逻辑电路性能:,79/00,3 补
34、码定点乘法,本节内容: 3.1补码与真值的转换公式,80/00,3.1补码与真值的转换公式,设X补=x0.x1x2.xn,令X为真值; 当X 0 时, x0 =0 X补=0 .x1x2.xn =x12-1+ x22-2+.+ xn 2-n = xi2-i=X 当X 0时, x0 =1 X补=1 .x1x2.xn = 2+X (按定义) X = 1 .x1x2.xn 2 =-1 +(-1.00.0)+ 1 .x1x2.xn = -1+ xi2-i 所以,可以用公式求补码真值:,81/00,3.2 补码一位乘法 使用上面的 公式进行推导,用Y补表示 =-y0+y12-1+y22-2+.+yn-12
35、-(n-1)+yn2-n = -y0+y1- y12-1+ y22-1- y22-2+.+ yn-12-(n-2) -yn-12-(n-1) +yn2-(n-1) - yn2-n =y1 -y0+ y22-1 - y12-1+.+ yn2-(n-1) -yn-12-(n-1) +0- yn2-n = (y1 -y0)+ ( y2 - y1 ) 2-1+.+ ( yn-yn-1 ) 2-(n-1) + ( 0- yn )2-n,82/00,对上面的公式两边乘上X,再求补,得: XY=X(y1 -y0)+ ( y2 - y1 ) 2-1+.+ ( yn-yn-1 ) 2-(n-1) + ( 0-
36、yn2-n ) 故 XY补=X(y1 -y0)+ ( y2 - y1 ) 2-1+.+ ( yn-yn-1 ) 2-(n-1) + ( 0- yn2-n )补 = (y1 -y0) X + ( y2 - y1 ) 2-1 X +.+ ( yn-yn-1 ) 2-(n-1) X + ( 0- yn ) 2-n X 补 = (y1 -y0) X 补+ ( y2 - y1 ) 2-1 X 补+ . + ( 0- yn ) 2-n X 补 = (y1 -y0) X 补+ ( y2 - y1 ) 2-1 X 补+ . + ( 0- yn ) 2-n X 补 = (y1 -y0) X 补+ 2-1 ( 2
37、-1 ( 2-1 (. 2-1 (2-1 (0+ (yn+1 - yn ) X 补) + (yn-1 - yn ) X 补) . ) =,83/00,令 P0补=0 ,yn+1 =0 则上式可以写成递推公式: P1补= 2-1 P0补+ (yn+1 - yn ) X 补 P2补= 2-1 P1补+ (yn - yn-1 ) X 补 . Pi补= 2-1 Pi-1补+ (yn-i+2 - yn-i+1 ) X 补 . Pn补= 2-1 Pn-1补+ (y2- y1 ) X 补 Pn+1补= Pn补+ (y1- y0 ) X 补= XY补,84/00,布斯Booth乘法规则 假设X、Y都是用补码形
38、式表示的机器数, X补和Y补=ys.y1y2yn,都是任意符号表示的数。比较法求新的部分积Pi ,取决于两个比较位的数位,即yi+1yi的状态。 布斯乘法规则归纳如下: 首先设置附加位yn+1=0,部分积初值P0补=0。 l 当n0时,判断ynyn+1, 若ynyn+1=00或ynyn+1= 11,即相邻位相同时,上次部分积右移一位,直接得新部分积。 若ynyn+1=01,上次部分积加X补,然后右移一位得新部分积。 若ynyn+1=10,上次部分积加-X补,然后右移一位得新部分积。 l 当n=0时,判断ynyn+1(对应于原乘数Y补的y0y1),运算规则00、11、01、10的处理同(n0)的
39、情况,只是不移位。即在运算的最后一步,乘积不再右移。,85/00,判断位以及操作如图: 注意: (1)比较法中不管乘数为正为负,符号位都参加运算 (2)运算过程中采用变形补码(双符号位)运算 (3)算法运算时的关键是ynyn+1的状态:后者(yn+1)减前者(yn),判断是加减( X补),86/00,结构原理图以及流程图,87/00,举例:已知 X=-0.1011 Y=0.1101,用补码布斯乘法求X*Y,要求写出机器的运算步骤。 解:X补=1.0101 -X补=0.1011 Y补=0.1101计算过程如下: R0中为部分积 R1中为乘数, ynyn+1 说明,00.0000,0 1 1 0
40、1 0,初值yn+1=0 P0=0,ynyn+1=10, +-X补,00.1011,+ 00.1011,右移1位得P1补,00.0101,1 0 1 1 0 1,ynyn+1=01, +X补,+11.0101,11.1010,右移1位得P2补,11.1101,0 1 0 1 1 0,+ 00.1011,00.1000,00.0100,+00.0000,00.0100,00.0010,+ 11.0101,11.0111,0 0 1 0 1 1,0 0 0 1 0 1,0 0 0 1 0 1,ynyn+1=10, +-X补,右移1位得P3补,ynyn+1=11, +0,右移1位得P4补,ynyn+
41、1=01, +X补,最后一步不移位,得P5补,88/00,4定点除法运算,本节内容: 4.1、原码恢复余数除法 4.2、原码加减交替法除法(逻辑结构和算法) 4.3、补码加减交替法除法(逻辑结构和算法),89/00,4.1 原码定点除法 先看笔算除法的过程,90/00,其特点: (1)对n位除法而言,每次上商的过程总是由心算比较余数和除数大小,如果余数大于除数,则商上1,否则 商上0; (2)商的符号单独处理 (3)每次减法都是都保持余数不动,低位补0,再减右移的除数。 但 上面的特点用计算机来处理,很不方便。,91/00,1.原码恢复余数除法 (1)主要思想:被除数(或余数)先减除数,如果得
42、到正余数,说明够减,则商上1;如果得到负余数,说明不够减,这时候应把负余数加上除数|Y|,恢复成原来的正余数,再继续运算。 (2)算法 商的符号单独运算Qs=Xs Ys 求|X| - |Y|, 用|X|+-Y补运算,如果结果大于等于0,则说明溢出;如果结果小于0,则商的个位上0,再加 |Y| 恢复余数|X| ; 用减法比较2ri和|Y|的大小: 如果2ri-|Y|0,则商上1,余数ri+1左移一位减|Y|; 如果2ri-|Y|0,则商上0,加|Y|恢复余数,再左移一位减|Y|; 如此循环直到得到所需的商的位数为止。 给商的绝对值附上符号位Qs ,得到商的原码Q原。,92/00,(3)举例 X=
43、0.10111101 Y=-0.1101求X Y的商和余数。 X原=0.10111101,Y原=1.1101 -|Y|补=1.0011 被除数或余数 商Q 说明,00.1011,1101,作|X|-|Y|,用+-|Y|补实现,+-|Y|补 11.0011,11.1110,余数小于0,商上0,11010,恢复余数(被除数),+|Y|补 00.1101,00.1011,11010,商0移入Q,余数左移1位,01.0111,1010,减|Y|,+-|Y|补 11.0011,00.1010,余数大于0,商上1,10101,商1移入Q,余数左移1位,01.0101,0101,减|Y|,+-|Y|补 11
44、.0011,00.1000,余数大于0,商上1,10111,商1移入Q,余数左移1位,01.0000,1011,减|Y|,+-|Y|补 11.0011,00.0011,余数大于0,商上1,01011,商1移入Q,余数左移1位,00.0111,0111,减|Y|,+-|Y|补 11.0011,11.1010,余数小于0,商上0,商0移入Q,恢复余数,00.1101,01110,00.0111,93/00,2.原码加减交替法除法 (1)原码加减交替法除法与恢复余数法除法相比的特点。 (2)原码加减交替法除法规则: 当余数为正,则商上1,余数左移一位,减除数; 当余数为负,则商上0,余数左移一位,加
45、除数; 这种方法来自于“恢复余数法”,由于“恢复余数法”是正确的,下面我们证明“原码加减交替法除法”也是正确的。,94/00,设恢复余数法除法中各个余数的序列是r0,r1,r2.,ri-1,ri,ri+1,. 其中r0=X(初始的余数r0就是被除数X) , 以其中三个余数ri-1,ri,ri+1,作为代表,用类C语言描述“恢复余数法”:,95/00,当把else中的语句简化后, 得: 这就是原码加减交替法的算法 (用类C语言描述) 。 文字描述为: 当余数为正,则商上1,余数左移一位,减除数; 当余数为负,则商上0,余数左移一位,加除数;,96/00,1)原码加减交替除法算法 商的符号位单独运
46、算:qs=xs ys; 余数ri为正数时,商上1,余数左移一位减除数;当ri为负数时,商上0,余数左移一位加除数,如此循环直到取得所需的n位商的绝对值。 给商的绝对值添上符号位qs即可得到Q原,97/00,由上面的算法可以设计如下的逻辑结构: 2)逻辑结构原理图,98/00,描述: R1为n位寄存器,除法开始前可存放被除数X原的低n位,运算结束后存放n位的商。每次上商应置于R1的最末位,因为它是由加法器的运算结果最高位来控制的,所以由s来设置。运算过程中,商要逐位左移,故R1寄存器具有左移功能。R0 保存被除数或余数,初始时保存X原的高n位,在运算中也要左移,所以它也是一个具有左移功能的寄存器
47、。,99/00,运算中被除数(余数)的低位部分由R1串行移至R0。n+1步运算后,求得n+1位商,其中一位整数位,n位小数位,这n位小数位的数值存于R1寄存器中,而整数位在最后一次左移时丢掉,而商的符号Qs由Xs和Ys通过异或运算得到, 所以可用一个异或门求得Qs。 见下图的运算流程图。,100/00,101/00,3)原码加减交替除法操作时间 为n+1步加减运算和n步左移时间,102/00,2.4.2 补码定点除法 1) 补码应用的广泛性; 2) 要解决的问题: 已知 被除数X补,除数Y补, X 和Y都是定点小数,即 |X|1, |Y|1;求商Q补=X Y补, 首先要确定前提:|X|Y| (
48、?),103/00,3)补码加减交替除法 要点是:在除法过程中必须比较被除数(余数)的大小,并根据比较的结果来上商。 (1)规则: 先判断是否溢出并得到商符号: 如果被除数X补与除数Y补同号,用X补+-Y补进行运算,得到余数r1补,如果余数r1补和除数Y补同号,则溢出,否则商上0(正号); 如果X补与Y补异号,用X补+Y补进行运算,得到余数r1补,如果余数r1补和除数Y补异号,则溢出,否则商上1 (负号) ; 以下 两步是循环: 如果余数ri补和Y补同号,商上1, ri补左移一位减Y补;如果余数ri补和Y补异号,商上0, ri补左移一位加Y补 重复,连同符号位的计算共n+1步;如果采用“末位恒
49、置1法”,则只用n步。,104/00,(2)算法流程图,105/00,(3)举例: 已知 X补=0.1011 , Y补=1.0011,用补码交替除法求X Y补 由于要用减法,所以求Y补 ,-Y补=0. 1101 被除数或余数 商数 说明,00.1011,0000,X和Y异号,商的符号为负,+Y补,+Y补 11.0011,11.1110,余数r1和Y补同号,商上1,00001,r1和Q同时左移一位,11.1100,0001,+-Y补,+-Y补 00.1101,00.1001,余数r2和Y补异号,商上0,00010,r2和Q同时左移一位,01.0010,0010,+Y补,+Y补 11.0011,0
50、0.0101,余数r2和Y补异号,商上0,00100,r3和Q同时左移一位,00.1010,0100,+Y补,+Y补 11.0011,11.1101,余数r1和Y补同号,商上1,r3和Q同时左移一位,01001,11.1010,1001,商的末位恒置1,10011,106/00,2.5定点运算器的组成与结构,CPU = 运算器+控制器,而运算器的核心部件是ALU, A (arithmetic )是前面所学的算术运算方法:+、 、 L ( logic )是逻辑运算,逻辑运算就是表示真与假的符号的运算,下面了解逻辑运算。,107/00,2.5.1 逻辑运算 1、基本逻辑运算: 1)逻辑非运算 也称
51、求反,只对一个数操作,对某数按位求反,1变0 , 0变1 2)逻辑加运算 也称逻辑或,对两个或多个数按位进行“或”运算, 0 0=0 ,0 1=1, 11=1; 3)逻辑乘运算 也称逻辑与,对两个或多个数按位进行“与”运算, 0 0=0 ,0 1=0, 1 1=1;,108/00,4)逻辑异运算 也称逻辑加,对两个或多个数按位进行“异或”运算, 0 0=0 ,0 1=1, 1 1=0; 2、应用实例 可以在自动控制中,对开关量进行输出操作:,109/00,2.5.2 多功能算术/逻辑部件(了解) 1、多功能ALU的设计思想 多功能指ALU应包括 算术运算,也包括逻辑运算,设已成功设计出全加器(
52、FA),如何在此基础上再增加功能设计多功能ALU呢? 可以这样考虑:设计一个外挂模块(可以称为函数发生器),该模块定义四个控制参数s0,s1,s2,s3 ,这四个控制参数取不同的组合,则控制函数发生器完成不同的功能。,110/00,在加法器中只考虑一位的情况,则得到右图: 由于有函数发生器,所以重新设计算术/逻辑单元:,在74181 ALU芯片中,使用4位控制参数s3s2s1s0 ,用s3s2控制Ai和Bi产生xi ,用s1s0控制Ai和Bi产生yi:,即:xi+yi=xi xi yi = yi,111/00,芯片74181ALU 见下页。这里要了解正逻辑和负逻辑;在负逻辑中,在芯片外输入低电
53、平为负逻辑;,112/00,113/00,114/00,115/00,2.5.3 运算器数据通路 1、通用寄存器、累加器和锁存器 当前的计算机系统中的CPU基本上都有通用寄存器,如Intel的CPU中的AX,BX,CX,DX等寄存器,这些寄存器是通过触发器构成的,每个触发器只保存一个位,如:,116/00,而累加器也是寄存器,但使用的频度较高; 锁存器也是用来保存数据的,当P=1时,D来的数据被保存到锁存器中,如果P=0,则不管D来的数据为0、1都不能影响锁存器中的数据,而同时Q可以随时输出锁存器中的数据,,117/00,2.多路选择器 通过电平信号的组合控制,决定让哪一个输入信号可以通过该器件输出,在图中,s0s1 G是控制信号, 如令1G=1,2G=0, s0s1 =10,则只有2A的输入可以从2Y的引脚输出。,118/00,3 移位器 前面在乘法和除法的逻辑结构中都用到左移、右移功能,下面汇总关于移位的内容。 (1)算术移位 有算术左移、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025公司向个人的借款合同范本简单
- 2025共同出资购买土地合同
- 建筑物业管理服务合同
- 商品房以租代售租赁合同范本
- 房屋转租合同模板
- 天碟销售合同
- 花卉租赁服务居间合同范本
- 玩具行业居间代理合同样本
- 2024版精炼油储罐买卖合同版B版
- 2024运输运费结算合同
- 安徽省合肥市包河区2023-2024学年九年级上学期期末化学试题
- 《酸碱罐区设计规范》编制说明
- PMC主管年终总结报告
- 售楼部保安管理培训
- 仓储培训课件模板
- 2025届高考地理一轮复习第七讲水循环与洋流自主练含解析
- GB/T 44914-2024和田玉分级
- 2024年度企业入驻跨境电商孵化基地合作协议3篇
- 《形势与政策》课程标准
- 2023年海南省公务员录用考试《行测》真题卷及答案解析
- 桥梁监测监控实施方案
评论
0/150
提交评论