计算机组成原理第六章_第1页
计算机组成原理第六章_第2页
计算机组成原理第六章_第3页
计算机组成原理第六章_第4页
计算机组成原理第六章_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

1、第三篇 中央处理器(CPU) 第第 6 6 章章 计算机的运算方法计算机的运算方法 *一、数据的编码与表示一、数据的编码与表示 *二、定点数的算术运算二、定点数的算术运算 *三、浮点四则运算三、浮点四则运算 *四、逻辑运算四、逻辑运算 数据表示数据表示 运算方法运算方法 一、数据的编码与表示一、数据的编码与表示 数据数据 逻辑数据逻辑数据 检错纠错码检错纠错码 字符字符 字符串字符串 汉字汉字 数值数值 文字、符号文字、符号 语音语音图形图形图像图像 各种进制各种进制 BCD码码 定点定点 浮点浮点 逻辑型数据逻辑型数据 逻辑型数据只有两个值:逻辑型数据只有两个值:真和假真和假,正好可以用二进

2、,正好可以用二进 制码的两个符号分别表示,制码的两个符号分别表示, 例如例如 1 表示表示 真真 则则 0 表示表示 假假 不必使用另外的编码规则。不必使用另外的编码规则。 对逻辑型数据可以执行逻辑的对逻辑型数据可以执行逻辑的 与、或、非与、或、非等基本逻等基本逻 辑运算。辑运算。 字符型数据的表示字符型数据的表示 字符作为人字符作为人机联系的媒介,指字母、数字、机联系的媒介,指字母、数字、 运算符等西文字信息。当前的西文字符集由运算符等西文字信息。当前的西文字符集由 128 个符号组成,通常用个符号组成,通常用 8 位二进制编码,即位二进制编码,即用一个用一个 字节来表示每一个符号字节来表示

3、每一个符号,当前较多通用的标准字,当前较多通用的标准字 符集是符集是ASCII 码码,ASCII码字符集具体编码如下表码字符集具体编码如下表 所示:所示: ASCII字符编码集字符编码集 b6 b5 b4 000 001 010 011 100 101 110 111 b3 b2 b1 b0 0000 NUL DLE SP 0 P , p 0001 SOH DC1 ! 1 A Q a q 0010 STX DC2 “ 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110

4、 ACK SYN K k 1100 FF FS , N n 1111 SI US / ? O _ o DEL ASCII码码的机内表示的机内表示 采用一个字节表示采用一个字节表示ASCII码时,最高位的处码时,最高位的处 理方法:理方法: (1 1)最高位)最高位不用不用,即恒为,即恒为“0”0”; (2 2)最高位用于)最高位用于奇偶校验位奇偶校验位; (3 3)若采用扩展)若采用扩展ASCIIASCII码方案时,最高位也用来码方案时,最高位也用来 表示表示字符编码字符编码,此时,可表示,此时,可表示256256种符号。种符号。 字符串的存放:字符串的存放: 字符串是指字符串是指连续连续的一

5、串字符,它们占据主存的一串字符,它们占据主存 中中连续连续的多个字节,每个字节存放一个字符,对的多个字节,每个字节存放一个字符,对 一个主存字的多个字节,有一个主存字的多个字节,有按从低位到高位按从低位到高位字节字节 次序存放的,也有按次序存放的,也有按从高位到低位从高位到低位字节次序存放字节次序存放 的。例如:的。例如:IF AB THEN READ(C)就可以有如就可以有如 下不同的存放方式:下不同的存放方式: 字符串的表示与存储字符串的表示与存储 I F A A F I B T T B 假定每个字假定每个字 H E N N E H 由由 4 个字节个字节 R E A D D A E R

6、组成组成 ( C ) ) C ( 汉字的表示汉字的表示 在计算机中表示汉字通常涉及以下几种汉字编码:在计算机中表示汉字通常涉及以下几种汉字编码: (1)汉字输入码)汉字输入码 为直接使用西文标准键盘把汉字为直接使用西文标准键盘把汉字输入输入到计算到计算 机而设计。机而设计。 (2)汉字机内码)汉字机内码 汉字信息在计算机内部存储、处理和传送所采汉字信息在计算机内部存储、处理和传送所采 用的编码。通常采用国标码。用的编码。通常采用国标码。 (3)汉字字模码)汉字字模码 用于输出设备用于输出设备输出输出汉字而设计的字形编码汉字而设计的字形编码。 汉字的机内表示汉字的机内表示 通常用通常用两个字节两

7、个字节表示一个汉字。表示一个汉字。 汉字内码的识别方法:汉字内码的识别方法: (1 1)若将若将ASCIIASCII码字节的高位设为码字节的高位设为“0”0”,则汉字两,则汉字两 个字节的高位个字节的高位均为均为“1”1”; (2 2)若若ASCIIASCII码字节最高位用于奇偶校验码或扩充码,码字节最高位用于奇偶校验码或扩充码, 则需要三个字节表示汉字,第一个字节作为汉字的则需要三个字节表示汉字,第一个字节作为汉字的标标 识符识符。 几种常用的数制及其转换几种常用的数制及其转换 N进制数可用进制数可用表示;表示; 温故而知新:二进制、十进制、八进制、十六进温故而知新:二进制、十进制、八进制、

8、十六进 制的表示方法及其相互转换。制的表示方法及其相互转换。 二二十进制编码(十进制编码(BCD编码)编码) BCD编码,编码,用用四位四位二进制表示一位十进制,有多二进制表示一位十进制,有多 种方案,种方案, 例如:例如: 84218421码,码,54215421码,码,24212421码,余码,余3 3码,格雷码。码,格雷码。 又可区分为:又可区分为: 有权码:有权码:四个二进制位均有指定的位权。四个二进制位均有指定的位权。 无权码:无权码:二进制编码各位无指定的位权。二进制编码各位无指定的位权。 有权码有权码 无权码无权码 0 0000 0000 0011 0000 1 0001 000

9、1 0100 0001 2 0010 0010 0101 0011 3 0011 0011 0110 0010 4 0100 0100 0111 0110 5 0101 1011 1000 0111 6 0110 1100 1001 0101 7 0111 1101 1010 0100 8 1000 1110 1011 1100 9 1001 1111 1100 1101 8421 余余3码码 2421格雷码格雷码 + 0. 0 0 0 0 0 0 1 1 0 0 0 1 0 0. 1 1 0 0 0 1 0 0. 1 0 0 0 0 0 1 + ? 思考:小数点位置不同,运算如何实现?思考:

10、小数点位置不同,运算如何实现? 手工运算:手工运算: . 符号位符号位 1 0. 定点数运算中小数点的位置无关,小数点无需存放定点数运算中小数点的位置无关,小数点无需存放 数值型数值型数据的机内表示形式数据的机内表示形式 隐藏隐藏 定点小数定点小数: N = Nf . N1 N2 Nn 定点整数定点整数: N = Nf N1 N2 Nn. 浮点数浮点数: N = jf j1 j2 . Jm ; ; Sf . S1 S2 . Sn 隐藏隐藏 隐藏隐藏 定点小数定点小数表示表示: Xf X-1 X-2 X -n 特点:特点:原码原码为符号位加数的为符号位加数的绝对值绝对值,0正正1负负 原码零原码

11、零有两个编码,有两个编码,+0和和 -0编码不同编码不同 X 1 X=1+|X| -1 X 0 0 X 1 定义: X原 = 原码原码的定的定 义义 实例:X1 = 0.10110 -0.10110 0.0000 X1原 = 0.10110 1.10110 0.0000 1.0000 n 定义: X原 = 定点整数定点整数表示表示: Xf Xn Xn-1 X 1 0,X 2n-X=2n+|X| 0 X 2n -2n X 0 2n=1 0 0 0 实例:X1 = 10110 -10110 0 X1原 = 010110 110110 0,0000 1,0000 定点小数定点小数反码的定义 特点:负

12、数特点:负数反码反码为符号位跟数每位的反,为符号位跟数每位的反,0正正1负负 反码反码零有两个编码,零有两个编码,+0 和和 - -0 的编码不同的编码不同 X (2-2-n)+X -1 X 0 0 X 1 定义:X反 = 实例:X1 = 0.10110 -0.10110 0.0000 X1反 = 0.10110 1.01001 0.0000 1.1111 n+1 定义: X反 = 定点整数的定点整数的反码反码表示表示 0,X 2n+1-1+X 0 X 2n -2n X 0 2n+1=1 0 0 0 定点小数表示定点小数表示: Xf X-1 X-2 X -n 特点:特点: 补码补码最高一位为符

13、号位,最高一位为符号位,0正正1负负 补码表示补码表示为模加上负数本身为模加上负数本身 补码补码零有唯一编码,故补码还可以表示零有唯一编码,故补码还可以表示 -1 补码补码能很好用于加减(乘除)运算能很好用于加减(乘除)运算 补码补码的引入;钟表;负数的正补数。的引入;钟表;负数的正补数。 实例:X1 = 0.10110 -0.10110 0.0000 -0.0000 -1.0000 X1补 = 0.10110 1.01010 0.0000 0.0000 1.0000 n+1 定义: X补 = 定点整数表示定点整数表示: Xf Xn Xn-1 X 1 0,X 2n+1+X 0 X 2n 2n

14、X 0 2n+1=1 0 0 0 整数整数的原码、反码和补码表示的原码、反码和补码表示 与定点小数的三种表示基本相同,差别仅表现在与定点小数的三种表示基本相同,差别仅表现在小数点小数点 的位置,整数的小数点在最低数值位的右侧。的位置,整数的小数点在最低数值位的右侧。 整数中用整数中用“,”隔开符号位与数值位。隔开符号位与数值位。 例如:五位整数的编码:例如:五位整数的编码: X1 = +01110 X1原 原= 0,01110 X1反反= 0,01110 X1补补= 0,01110 X2 = - 01110 X2原 原= 1,01110 X2反反= 1,10001 X2补补= 1,10010

15、原、反、补码表示小结原、反、补码表示小结 正数的正数的 原码、反码、补码表示原码、反码、补码表示均相同均相同,符号位为,符号位为 0,数值位等,数值位等 于数的于数的真值真值。 零的原码和反码均有零的原码和反码均有2个个编码,补码只有编码,补码只有1个编码个编码 负数的原码、反码、补码表示负数的原码、反码、补码表示均不同均不同, 符号位为符号位为 1,数值位:原码为数的绝对值;,数值位:原码为数的绝对值; 符号位为符号位为 1,数值位:反码为每一位均取反码;,数值位:反码为每一位均取反码; 符号位为符号位为 1,数值位:补码为反码再在最低位,数值位:补码为反码再在最低位+1; n+1n+1位位

16、移码移码:Xf XXf Xn n X Xn-1 n-1 X X 1 1 1 无小数表示形式无小数表示形式 2定义定义: X移 移 = 2n+X -2n X = 1/r,称满足这种表示要求的浮点数为,称满足这种表示要求的浮点数为规格化表示规格化表示。 把不满足这一表示要求的尾数,变成满足这一要把不满足这一表示要求的尾数,变成满足这一要 求的尾数的操作过程,叫作浮点数的求的尾数的操作过程,叫作浮点数的规格化处理规格化处理,通,通 过过尾数移位和修改阶码尾数移位和修改阶码实现。实现。 X = S rj X浮 浮 = jf j1 j2 . Jm Sf S1 S2 . Sn 规格化的浮点数尾数形式(以二

17、进制数为例):规格化的浮点数尾数形式(以二进制数为例): 当尾数用原码表示时,当尾数用原码表示时, S原 原 = 0.1xxx 或 或1.1xxx 当尾数用补码表示时,当尾数用补码表示时, S补 补 = 0.1xxx 或 或1.0 xxx 例例1:判断下列数的尾数表示是否为规格化的表示形判断下列数的尾数表示是否为规格化的表示形 式式 -0.0111111 X原 原=1.0111111 -0.0111111 X补 补=1.1000001 -0.1000000 X原 原=1.1000000 -0.1000001 X补 补=1.0111111 浮点数在计算机内的表示浮点数在计算机内的表示 IEEE

18、标准:标准:阶码用移码,基数为阶码用移码,基数为2;尾数用原;尾数用原 码码 X = S rj X 浮 浮 = jf j1 j2 . Jm Sf S1 S2 . Sn 定点数与浮点数的定点数与浮点数的比较比较: (1)数位相同时,浮点数比定点数表示范围大得多;数位相同时,浮点数比定点数表示范围大得多; (2)浮点数为规格化数时,精度远比定点数高;浮点数为规格化数时,精度远比定点数高; (3)浮点运算步骤比定点数多,速度比定点数低;浮点运算步骤比定点数多,速度比定点数低; (4)判断溢出的方法不同。判断溢出的方法不同。 IEEE 754 IEEE 754 标准浮点数表示格式标准浮点数表示格式 X

19、 浮 浮 = Sf jf j1 j2 . Jm S1 S2 . Sn 符号位符号位Sf 阶码位阶码位 尾数数码位尾数数码位 总位数总位数 短浮点数短浮点数: 1 8 23 32 长浮点数长浮点数: 1 11 52 64 临时浮点数临时浮点数: 1 15 64 80 X = S rj 例例2:设浮点数字长设浮点数字长16位,其中阶码位,其中阶码5位(含位(含1位位 阶符),尾数阶符),尾数11位(含位(含1位数符),将十进制数位数符),将十进制数 +13/128写成二进制定点数和浮点数,并分别写写成二进制定点数和浮点数,并分别写 出它在定点机和浮点机中的机器数形式。出它在定点机和浮点机中的机器数

20、形式。 例例3:将十进制数将十进制数-54表示成二进制定点数和浮点数,表示成二进制定点数和浮点数, 并写出它在定点机和浮点机中的机器数形式。并写出它在定点机和浮点机中的机器数形式。 (其它要求同上例)(其它要求同上例) 例例4:设浮点数字长设浮点数字长16位,其中阶码位,其中阶码5位(含位(含1位阶位阶 符),尾数符),尾数11位(含位(含1位数符),写出位数符),写出-53/512对对 应的浮点规格化数的原码、补码、反码和阶码用应的浮点规格化数的原码、补码、反码和阶码用 移码,尾数用补码的形式。移码,尾数用补码的形式。 二、定点数的算术运算二、定点数的算术运算 (1) 移位移位运算运算 (2

21、) 补码补码 加减法运算加减法运算 (3) 原码原码一位乘法运算一位乘法运算 原码原码一位除法运算一位除法运算 补码补码一位乘法运算一位乘法运算 补码补码一位除法运算一位除法运算 (4) 补码补码二位乘法运算二位乘法运算 (5) 快速快速乘除法运算方法乘除法运算方法 移位运算的实现移位运算的实现 移位运算移位运算,用于提高某些运算的速度或作为乘除法运算的,用于提高某些运算的速度或作为乘除法运算的 子运算。分为算术移位和逻辑移位。子运算。分为算术移位和逻辑移位。 算术移位算术移位: : 对对有符号数有符号数进行的移位,进行的移位,小数点位置不变小数点位置不变。 规则规则: : (1) (1) 移

22、位后移位后符号位符号位不变;不变; (2) (2) 不同码制机器数移位后空位填补规则,如不同码制机器数移位后空位填补规则,如 下表:下表: 正数正数 码码 制制 原码、补码、反码原码、补码、反码 原原 码码 补补 码码 反反 码码 右移填补代码右移填补代码 0 0 1 1 负负 数数 左移填补代码左移填补代码 0 0 0 1 例例5 5:设机器数字长:设机器数字长8 8位(含一位符号位),位(含一位符号位), 若若A=A=6262,写出三种机器数左右移一位和,写出三种机器数左右移一位和 两位后的表示形式以及相应的真值,并分两位后的表示形式以及相应的真值,并分 析结果的正确性。析结果的正确性。

23、算术左右移规律总结: 对于正数,三种机器数移位后符号位均不变,左移时最高 位丢1,结果出错;右移时,最低位丢1,影响精度。 对于负数,三种机器数移位后符号位均不变, 负数原码,左移高位丢1,出错,右移低位丢1,影响精度。 负数补码,左移高位丢0,出错,右移低位丢1,影响精度。 负数反码,左移高位丢0,出错,右移低位丢0,影响精度。 逻辑移位(无符号数的移位)逻辑移位(无符号数的移位) 左移左移1位位 右移右移1位位 左移左移2位位 右移右移2位位 无符号数无符号数 规律:规律:无符号数的左右移位,空出来的位都补无符号数的左右移位,空出来的位都补0. 补码加减法的实现(以定点小数为例)补码加减法

24、的实现(以定点小数为例) 基本公式:基本公式:X Y补 补 = X补补 Y补补 ( (mod 2)小数)小数 X Y补 补 = X补补 Y补补 ( (mod 2n+1)整数)整数 特点特点: (1)符号位)符号位参与参与运算,结果符号位通过运算自动运算,结果符号位通过运算自动 产生;产生; (2)运算实际上为)运算实际上为“模运算模运算”,因此,运算过程,因此,运算过程 中可能产生中可能产生模溢出模溢出,丢掉模后,不影响运算结果。,丢掉模后,不影响运算结果。 例例6:已知:已知A=0.1011,B=-0.0101.求求A+B补。补。 例例7:已知:已知A=-1001,B=-0101.求求A+B

25、补。补。 例例8:设机器数字长:设机器数字长8位,其中位,其中1位为符号位,位为符号位, 若若A=+15,B=+24,求,求A-B补,并还原成补,并还原成 真值。真值。 补码加减法的溢出补码加减法的溢出 溢出:溢出:运算结果超出数据的表示范围。分为上溢和下运算结果超出数据的表示范围。分为上溢和下 溢(或称溢(或称正溢出和负溢出正溢出和负溢出)。)。 例如:例如:X = +0.1011 Y = +0.1101 X补 补 = 0.1011, Y补补 = 0.1101 X+Y补 补 = X补补 + Y补补 = 0.1011 + 0.1101 = 1.0100 正溢出正溢出 溢出的后果是结果的最高数值

26、位溢出的后果是结果的最高数值位侵入侵入符号位,使符号符号位,使符号 位遭到破坏。在计算机中,溢出是作为位遭到破坏。在计算机中,溢出是作为出错出错处理的。处理的。 补码加减法的溢出判别补码加减法的溢出判别 溢出判断:两种方法溢出判断:两种方法 (1)一位)一位符号位判断法:对于加法,只有符号位判断法:对于加法,只有正加正(正溢出)正加正(正溢出) 或负加负(负溢出)或负加负(负溢出)的情况可能产生溢出,判断原则是:结果的情况可能产生溢出,判断原则是:结果 符号位与源操作数相同则不溢出,不相同则溢出,对于减法,符号位与源操作数相同则不溢出,不相同则溢出,对于减法, 只有符号不同的俩数相减才可能溢出

27、,若有溢出正减负为正溢只有符号不同的俩数相减才可能溢出,若有溢出正减负为正溢 出,负减正为负溢出。出,负减正为负溢出。 (2 2)两位)两位符号位判断法:即符号位判断法:即变形补码法变形补码法判别判别,结果的双符号,结果的双符号 位的值为位的值为 0101或或1010为溢出。为溢出。0101为正溢出,为正溢出,1010为负溢出,溢出时,为负溢出,溢出时, 高位符号是高位符号是结果的正确符号。结果的正确符号。 例例9:设设A=-11/16,B=-7/16,求,求A+B补 补,用一位符 ,用一位符 号位判断法判断有无溢出,若有溢出,是什么溢出号位判断法判断有无溢出,若有溢出,是什么溢出 类型?类型

28、? 例例10:试用:试用变形补码法变形补码法计算计算A+B并判断有无溢出,并判断有无溢出, 并指出是什么溢出类型,设并指出是什么溢出类型,设A=+11/16,B=+7/16。 例例11:试用:试用变形补码法变形补码法计算计算A+B并判断有无溢出,并判断有无溢出, 并指出什么溢出类型,设并指出什么溢出类型,设A=-11/16,B=-7/16。 例例12:已知:已知X = +11/16 Y = +3/16 ,用,用双符号位法双符号位法判判 断断X+Y补 补有无溢出,若溢出,是什么类型的溢出。 有无溢出,若溢出,是什么类型的溢出。 例例13:已知:已知:X = 0.1011 Y = 0.0101 ,

29、用,用双符号位法双符号位法 判断判断X+Y补 补有无溢出,若溢出,是什么类型的溢出。 有无溢出,若溢出,是什么类型的溢出。 原码一位乘运算原码一位乘运算 基本公式:基本公式: 设设 被乘数被乘数 X原 原 = xf . x1 x2 x n 乘乘 数数 Y原 原 = yf . y1 y2 y n 则 则 X Y原 原 =( xf yf ). ( |X| |Y| ) 其中,其中, |X X|和和|Y Y|分别是分别是X X和和Y Y的绝对值的绝对值 引例:引例: X = 0.1101 Y = - 0.1011 X原 原= 0.1101 Y原原 = 1.1011 |X|= 0.1101 |Y| =

30、0.1011 0. 1 1 0 1 . 累加器初值取零值累加器初值取零值 0. 1 0 1 1 + . 1 1 0 1 1 1 0 1 . 部分积部分积右右移移1位位 , 0 0 0 0 将移出的将移出的1保存起来保存起来 +1 1 0 1 求第一次部分积求第一次部分积 0 . 1 0 0 0 1 1 1 1 手工运算过程手工运算过程 原码一位乘运算原码一位乘运算 原码一位乘运算原码一位乘运算 |X|= 0.1101 |Y|= 0.1011 0. 1 1 0 1 . 1 0. 1 0 1 1 + . 1 1 0 1 1. 前次部分积加被乘数前次部分积加被乘数 1 1 0 1 . 部分积右移部分

31、积右移 0 0 0 0将移出的一位保存起来将移出的一位保存起来 + 1 1 0 1 求第二次部分积求第二次部分积 0 . 1 0 0 0 1 1 1 1 手工运算过程手工运算过程 (笔算)(笔算) 原码一位乘运算原码一位乘运算 |X| = 0.1101 |Y| = 0.1011 0. 1 1 0 1 . 1 1 0. 1 0 1 1 + . 1 1 0 1 . 前次部分积加前次部分积加 1 1 0 1 .部分积右移部分积右移 0 0 0 0将移出的一位保存起来将移出的一位保存起来 + 1 1 0 1 求第三次部分积求第三次部分积 0 . 1 0 0 0 1 1 1 1 手工运算过程(笔算)手工

32、运算过程(笔算) 原码一位乘运算原码一位乘运算 X* = 0.1101 Y* = 0.1011 0. 1 1 0 1 . 0. 1 0 1 1 + . 1 1 0 1 1.前次部分积加被乘数前次部分积加被乘数 1 1 0 1 .部分积右移部分积右移 0 0 0 0将移出的一位保存起来将移出的一位保存起来 + 1 1 0 1 求第四次部分积求第四次部分积 0 . 1 0 0 0 1 1 1 1 手工运算过程手工运算过程 乘数有乘数有四四位有效数位,所以共完成位有效数位,所以共完成四四次加法次加法 和和四四次右移,再用一步完成两数符号次右移,再用一步完成两数符号异或异或求求 积的符号积的符号, 结

33、果为结果为 -0.10001111。 原码一位乘运算规则原码一位乘运算规则 原码一位乘运算规则:原码一位乘运算规则: 1. 1. 乘积的乘积的符号位符号位由两数符号位由两数符号位“异或异或”产生,符产生,符 号位不参与运算;号位不参与运算; 2. 2. 部分积可采用一位或两位符号位;部分积可采用一位或两位符号位; 3. 3. 乘积的数值部分由两数绝对值相乘积的数值部分由两数绝对值相乘乘产生,产生,通过通过n n 次次“加法加法”和和n n次次“右移右移”操作实现操作实现。(n(n为乘数的有为乘数的有 效数字的位数效数字的位数) ) 原码一位乘运算实例原码一位乘运算实例 部分积部分积 乘数乘数

34、0. 0 0 0 0 0.1 0 1 1 + 0. 1 1 0 1 0. 1 1 0 1 0. 0 1 1 0 1 0 1 0 1 + 0. 1 1 0 1 1. 0 0 1 1 0. 1 0 0 1 1 1 0 1 0 0. 0 1 0 0 1 1 1 0 1 + 0. 1 1 0 1 1. 0 0 0 1 0. 1 0 0 0 1 1 1 1 0 0. 1 1 0 1 0. 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 + 1 1 0 1 0 . 1 0 0 0 1 1 1 1 例例14: X = -0.1101 Y = - 0.1011 手工运算过程手工运算过程 计算机

35、内运算的实现方法计算机内运算的实现方法 则则 X* = 0.1101 Y* = 0.1011 X原 原 = 1.1101 Y原原 = 1.1011 X Y原 原 = 0.10001111 例例15:已知:已知 X = -0.1110 Y = - 0.1101,用原码一,用原码一 位乘实现位乘实现 X*Y原 原。 。 原码两位乘(选讲)原码两位乘(选讲) 两位乘数的值可以有四种可能组合,每种组合对应的操作: 00 相当于0*X,部分积右移2位,不进行其它运算; 01 相当于1*X,部分积加1X后右移2位; 10 相当于2*X,部分积加 2X后右移2位; 11 相当于3*X,部分积加3X后右移2位

36、。 原码两位乘运算规则(部分积用三位符号位): 例16:设X = 0.111111 ,Y = -0.111001,用原码两 位乘求X*Y原。 例17:设X = 0.100111, Y = 0.100111,用原码两 位乘求X*Y原。 补码乘法运算补码乘法运算 原码乘法不难实现,但有原码乘法不难实现,但有两个问题两个问题: 1. 符号位与数值位分开处理,不方便;符号位与数值位分开处理,不方便; 2. 若数据为补码形式,可能需要多于两次若数据为补码形式,可能需要多于两次 补码补码到到原码的变换。原码的变换。 也可以直接用也可以直接用补码补码完成乘法运算,即从补码开始,完成乘法运算,即从补码开始,

37、直接得到补码的积。直接得到补码的积。 补码一位乘法运算的补码一位乘法运算的算法规则算法规则 补码一位乘算法规则:补码一位乘算法规则: 1.1. X X、Y Y的符号位都参加运算,部分积采用的符号位都参加运算,部分积采用双双符号位;符号位; 2.2.被乘数符号任意,乘数符号为被乘数符号任意,乘数符号为正正,按,按原码原码运算规则运运算规则运 算。算。 3.3.被乘数符号任意,乘数符号为被乘数符号任意,乘数符号为负负,乘数补码,乘数补码去掉符号去掉符号 位位与被乘数相乘,最后与被乘数相乘,最后加上加上-X X 补 补进行校正。 进行校正。 4.4.进行进行n n次加运算,次加运算,n n次右移,次

38、右移,积的符号位积的符号位由运算过程自由运算过程自 动产生,这点与原码运算不同。动产生,这点与原码运算不同。 5.被乘数和乘数符号均为任意,用比较法(Booth算法)。 (1 1)X X、Y Y的符号位都参加运算,部分积采用双符号位;的符号位都参加运算,部分积采用双符号位; (2 2)乘数最低位之后增加一位附加位)乘数最低位之后增加一位附加位yn+1 ,且令初值且令初值yn+1=0; (3 3)每位部分积运算规则如下:每位部分积运算规则如下: yn yn+1= 00 时,时, 部分积加零,再右移部分积加零,再右移1位位; yn yn+1= 01 时,时, 部分积加部分积加 X补, 补, 再 再

39、右移右移1位位; ; yn yn+1= 10 时,时, 部分积加部分积加 -X补, 补, 再 再右移右移1位位; ; yn yn+1= 11 时,时, 部分积加零,再右移部分积加零,再右移1位;位; (4 4)进行进行n+1n+1次加法,次加法,n n次右移,次右移,积的符号由运算过程自动产生。积的符号由运算过程自动产生。 例18:已知X补=1.0101,Y补=0.1101,用补码一 位乘求X*Y补。 例19:已知X补=0.1101,Y补=1.0101,用补码一 位乘求X*Y补。 例20:已知X补=1.1101,Y补=0.1101,用补码 一位乘求X*Y补。 例21:已知X补=0.0111,Y

40、补=1.1001,用补码 一位乘求X*Y补。 补码一位乘法运算实例(比较法)补码一位乘法运算实例(比较法) 已知已知: X补 补 = 0.1101 Y补补 = 0.1011 部分积部分积 乘数乘数 yn yn+1 0 0. 0 0 0 0 0.1 0 1 1 0 +1 1. 0 0 1 1 1 1. 1 0 0 1 1 0 1 0 1 1 1 1. 1 1 0 0 1 1 0 1 0 1 +0 0. 1 1 0 1 0 0. 1 0 0 1 0 0. 0 1 0 0 1 1 1 0 1 0 +1 1. 0 0 1 1 1 1. 0 1 1 1 1 1. 1 0 1 1 1 1 1 1 0 1

41、+0 0. 1 1 0 1 0 0. 1 0 0 0 1 1 1 1 则则 -X补 补 = 1.0011 X*Y补 补 = 0.10001111 例22:X补 补 = 1.0101 Y补补 = 1.0011,用比较法求 ,用比较法求 X*Y补 补 例23:X补 补 = 1.1101 Y补补 = 0.0111,用比较法求 ,用比较法求 X*Y补 补 原码原码除法除法(以定点小数为例以定点小数为例) 基本公式:基本公式: 设设 被除数被除数 X原 原 = xf . x1 x2 x n 除除 数数 Y原 原 = yf . y1 y2 y n 则 则: : 若若 0 X Y X Y原 原 =( xf

42、yf ). ( X* Y* ) 其中,其中, X* 和和Y*分别是分别是X和和Y的绝对值的绝对值 例如:例如: X = 0.1011 Y = - 0.1101 笔算除法过程笔算除法过程 0.1101 0.1101 0.10110 -0.01101 0.010010 -0.001101 0.0001010 0.00010100 -0.00001101 0.00000111 原码除运算方法分析原码除运算方法分析(以定点小数为例以定点小数为例) 机器实现问题:机器实现问题: 1. 需单独设计比较器线路;需单独设计比较器线路; 2. 需需2n位的减法器线路。位的减法器线路。 解决方案:解决方案: 1.

43、 比较比较操作改由操作改由“试减试减”实现;实现; 2. 将除数右移改为将除数右移改为部分余数左移部分余数左移; 3. 减法由减法由+-Y补 补转化为加法实现。 转化为加法实现。 原码恢复余数除法的算法规则原码恢复余数除法的算法规则 1.1.除法运算前,应满足条件:除法运算前,应满足条件:X X* *YY* *, ,且且Y Y* *00, ,否则,按溢出否则,按溢出 或非法除数处理;或非法除数处理; 2.2.符号位不参与运算符号位不参与运算,单独处理:,单独处理:q qf f= x= xf f y yf f ; ; 3.3.部分余数采用部分余数采用单符号位或双符号位单符号位或双符号位; 4.4

44、.每步部分余数运算规则:每步部分余数运算规则: 5.5.共需经过共需经过n+1n+1次取商和次取商和n n次部分余数的左移实现。次部分余数的左移实现。 余数为正,商上余数为正,商上1 1,余数和商左移一位余数和商左移一位,减除数;,减除数; 余数为负,商上余数为负,商上0 0,需通过,需通过加除数来加除数来恢复余数,恢复余数,余数余数 左移一位减除数,商左移一位。左移一位减除数,商左移一位。 被除数(余数)被除数(余数) 商商 说说 明明 0. 1 0 1 1 0. 0 0 0 0 + 1. 0 0 1 1 + -Y *补 补 (减除数 (减除数) 1. 1 1 1 0 余数余数 0, 商上商

45、上1 1. 0 0 1 0 0 0 0 0 1 左移一位左移一位 + 1. 0 0 1 1 + -Y *补 补 0. 0 1 0 1 余数余数 0, 商上商上1 0. 1 0 1 0 0 0 0 1 1 左移一位左移一位 + 1. 0 0 1 1 + -Y *补 补 1. 1 1 0 1 余数余数 0, 商上商上1 例如:例如: X = -0.1011 Y = - 0.1101 X原 原= 1.1011 Y原 原= 1.1101 X* = 0.1011 Y* = 0.1101 -Y*补 补 = 1.0011 恢复余数法恢复余数法 X/Y原 原=0.1101 R原 原=0.0111 2 2- -

46、4 4 例例24: 假如假如X = -0.1001 Y = - 0.1101 ,用原码,用原码 的恢复余数法计算的恢复余数法计算X/Y原 原 原码加减交替除法算法规则原码加减交替除法算法规则 1.1.除法运算前,应满足条件:除法运算前,应满足条件:X X* *YY* *, ,且且Y Y* *00, ,否则,按溢否则,按溢 出或非法除数处理;出或非法除数处理; 2.2.符号位不参与运算符号位不参与运算,单独处理:,单独处理:q qf f= x= xf f y yf f ; ; 3.3.部分余数采用部分余数采用单符号位或双符号位单符号位或双符号位; 4.4.每步部分余数运算规则:每步部分余数运算规

47、则: 余数为正,商上余数为正,商上1 1,余数左移一位余数左移一位,减除数;,减除数; 余数为负,商上余数为负,商上0 0,余数左移一位余数左移一位,加除数;,加除数; 5.5.共需经过共需经过n+1n+1次取商和次取商和n n次部分余数的左移实现(次部分余数的左移实现(n n为除数为除数 的有效位数)。的有效位数)。 被除数(余数)被除数(余数) 商商 说说 明明 0. 1 0 1 1 0. 0 0 0 0 试减试减 + 1. 0 0 1 1 + -Y *补 补 (减除数 减除数) 1. 1 1 1 0 余数余数 0, 商上商上1 1. 0 0 1 0 0 0 0 0 1 左移一位左移一位

48、+ 1. 0 0 1 1 + -Y *补 补 0. 0 1 0 1 余数余数 0, 商上商上1 0. 1 0 1 0 0 0 0 1 1 左移一位左移一位 + 1. 0 0 1 1 + -Y *补 补 1. 1 1 0 1 余数余数 0, 商上商上1 例如:例如: X = -0.1011 Y = - 0.1101 X原 原= 1.1011 Y原 原= 1.1101 X* = 0.1011 Y* = 0.1101 -Y*补 补 = 1.0011 加减交替加减交替 除除 法法 X/Y原 原= 0.1101 R = 0.0111 2 2- -4 4 例例25: 假如假如X = -0.1001 Y =

49、 - 0.1101 ,用原码,用原码 的加减交替法计算的加减交替法计算X/Y原 原 补码除法(加减交替法)补码除法(加减交替法) 运算规则 符号位参加运算,除数和被除数均用补码表示; 第一步的运算 被除数与除数同号,被除数减去除数,加-y补; 被除数与除数异号,被除数加上除数,加y补; 后续步骤的运算 余数与除数同号,商上1,余数左移一位减去除数; 余数与除数异号,商上0,余数左移一位加上除数。 重复步骤 ,共做n次部分余数左移,n次加法,n+1次取商, 最后一位商恒置1,不用求。 如果对商的精度没有特殊要求,一般可采用“末位恒置1”法,此 法操作简单,易于实现 。 2021年6月27日星期日

50、81 例26.设 x = 0.1011,y = 0.1101,求 并还原真值。 补 补 x y x补 补 = 1.0101 y补 补 = 0.1101 y补 补 = 1.0011 1 . 0 1 0 1 0 . 1 1 0 1 1 . 0 0 1 1 0 . 1 1 0 1 0 . 1 1 0 1 0 . 0 0 0 0 异号做加法异号做加法 1 0 . 0 0 1 0同号上同号上“1” 1 . 0 1 1 11 异号上异号上“0” +y补 补 1 . 1 0 1 11 0 异号上异号上“0” +y补 补 0 . 0 0 1 11 0 0同号上同号上“1” 0 . 0 1 0 01 1 0 .

51、 1 1 1 01 01 1 . 0 1 1 01 0 01 末位恒置末位恒置“1”0 . 0 1 1 01 0 0 1 1 补 补= 1.0011 x y 0 0 1 1 +y补 补 x y = 0.1101则则 被除数被除数(余数余数) 商商 说说 明明 例27:已知x=0.1001,y=0.1101,用补码加减交替法求x/y补。 例28:已知x=-0.1001,y=0.1101,用补码加减交替法求x/y补。 三、浮点数的运算三、浮点数的运算 浮点数加减运算浮点数加减运算 由对阶、由对阶、 尾数加减、尾数加减、 规格化、规格化、 舍入和结果判溢出舍入和结果判溢出 五步五步实现。实现。 浮点

52、数乘除运算浮点数乘除运算 由阶码加减由阶码加减 、尾数乘除、规格化、舍入和结果判、尾数乘除、规格化、舍入和结果判 溢出溢出五步五步实现。实现。 浮点数加减运算浮点数加减运算 运算步骤:运算步骤: (1)对阶操作,求阶差:)对阶操作,求阶差: j= jX - jY, 使阶码小的数的尾数右移 使阶码小的数的尾数右移j位,位, 其阶码取大的阶码值;其阶码取大的阶码值;即小阶向大阶看齐。即小阶向大阶看齐。 (2)尾数相加减;)尾数相加减; jX X = SX 2 jY Y = SY 2 求:求: XY = ? 已知:已知: (3)规格化处理,当尾数出现)规格化处理,当尾数出现00.0或或11.1的组合

53、时,需的组合时,需 左规;当尾数出现左规;当尾数出现01.X或或10.X的组合时,需右规;的组合时,需右规; (4)舍入操作,分为零舍一入法和末位恒置一法;)舍入操作,分为零舍一入法和末位恒置一法; (5)判结果的正确性,即检查阶码,结果)判结果的正确性,即检查阶码,结果j补补=01为上为上 溢(出错),结果溢(出错),结果 j补补=10,为下溢,当机器零处理,为下溢,当机器零处理 。 浮点数加运算浮点数加运算举例举例 已知:已知:X= 2010 0.11011011, Y= 2100 (-0.10101100),浮点数,浮点数阶阶 码用码用 5 位补码(含位补码(含2位符号位位符号位 )表示

54、,)表示, 尾数用尾数用 10 位补码(含位补码(含2位位 符号位符号位 )表示,)表示,求:求: Z1 = X+Y = ? 解:首先,写出浮点数解:首先,写出浮点数X、Y的正确的补码表示:的正确的补码表示: 阶码用阶码用 5 位补码位补码 (含(含2位符号位位符号位 ),),尾数用尾数用 10 位补码(含位补码(含 2位符号位位符号位 ) X浮 浮 = 00, 010; 00.11011011 Y浮 浮 = 00, 100; 11.01010100 浮点数加运算举例浮点数加运算举例 (1)对阶)对阶 j 补 补= jX 补补+-jY 补补= 00, 010 + 11, 100 = 11, 1

55、10 j = -2 0, 即即jX jY 因此,修改因此,修改 MX补 补 = =00.00110110(即右移 (即右移2 2位)位) jx补 补= 00, 100 (2)尾数求和差)尾数求和差 00. 00110110 + 11. 01010100 11. 10001010 (3)规格化处理)规格化处理 规格化处理,当尾数出现规格化处理,当尾数出现00.0或或11.1的组合时,的组合时, 需左规,阶码减一;当尾数出现需左规,阶码减一;当尾数出现01.X或或10.X的组合时,的组合时, 需右规,阶码加一;需右规,阶码加一; 本例尾数为本例尾数为11.1X,应执行一次左规操作,故得,应执行一次

56、左规操作,故得 Sz1补 补 = 11. 00010100, , jZ1补 补 = 00, 011 (4)舍入处理)舍入处理 舍入舍入按照一定规则舍去多余的位数,并对保留位进行按照一定规则舍去多余的位数,并对保留位进行 调整的过程。调整的过程。 主要方法:主要方法: 末位恒置末位恒置1 1法:法:在舍去尾数在舍去尾数最低位之后数值最低位之后数值的同时,将尾的同时,将尾 数末位置数末位置1。 0 0舍舍1 1入法:入法: 当尾数用原码表示,或用补码表示的正数时当尾数用原码表示,或用补码表示的正数时, 若移出部分的最高位为若移出部分的最高位为0 0,舍去;,舍去; 若移出部分的最高位为若移出部分的

57、最高位为1 1,在舍去时,将尾数末位,在舍去时,将尾数末位+1+1。 当尾数用补码表示的负数时当尾数用补码表示的负数时, 若移出各位全为若移出各位全为0 0,舍去;,舍去; 若移出部分的最高位为若移出部分的最高位为0,0,其余各位不全为其余各位不全为0 0,舍去;,舍去; 若移出部分的最高位为若移出部分的最高位为1,1,其余各位全为其余各位全为0 0,舍去;,舍去; 若移出部分的最高位为若移出部分的最高位为1,1,其余各位不全为其余各位不全为0 0,末位,末位+1+1。 (5)检查溢出)检查溢出 浮点溢出用浮点溢出用阶码溢出阶码溢出表示。表示。 溢出有两种情况:溢出有两种情况: 阶符为阶符为1

58、0,阶码下溢:用机器零表示;,阶码下溢:用机器零表示; 阶符为阶符为01,阶码上溢:,阶码上溢:置溢出标志,转溢出处理。置溢出标志,转溢出处理。 本例中的阶码不溢出。本例中的阶码不溢出。 则得则得 Z1浮 浮= 00, 011; 11. 00010101( (末位恒置一末位恒置一), 即即 Z1 =2011 (-0.11101011) 例例29:已知两浮点数:已知两浮点数X=0.1101210,Y=0.1011201, , 求求X+Y。 例例30:设:设X=2-101(-0.101000),Y=2-100(+0.111011),阶阶 符取符取2位,阶码的数值部分取位,阶码的数值部分取3位,数符

59、取位,数符取2位,尾数位,尾数 的数值部分取的数值部分取6位,求位,求X-Y。 浮点数乘除运算浮点数乘除运算 运算步骤:运算步骤: (1) 阶码加、减:阶码加、减:乘:乘:jX+jY ,除:除:jX- jY (2) 尾数乘、除:尾数乘、除:乘:乘:SX SY , 除:除:SX / SY (3) 规格化处理;规格化处理; (4) 舍入操作;舍入操作; (5) 判结果的正确性,即检查阶码溢出。判结果的正确性,即检查阶码溢出。 jX X = SX 2 jY Y = SY 2 求:求: X * Y = ? 或或 X / Y = ? 已知:已知: 浮点数乘法运算举例浮点数乘法运算举例 已知:已知: X=

60、2010 0.1011, Y=2100 (-0.1101) 求:求: Z = X Y = ? 写出写出X、Y的正确的浮点数表示:的正确的浮点数表示: 阶码用阶码用 5 位补位补码码(含(含2位符号位位符号位 ) 尾数用尾数用 5 位补码位补码 (含(含1位符号位位符号位 ) X浮 浮 = 00, 010; 0.1011 Y浮 浮 = 00, 100; 1. 0011 (1)阶码相加)阶码相加 若阶码采用补码,则按补码加法规则进行。若阶码采用补码,则按补码加法规则进行。 jX 补 补+jY 补补=00,010+00,100=00,110 (2 2)尾数相乘)尾数相乘( (比较法比较法) ) Sz

温馨提示

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

评论

0/150

提交评论