《第03章 数据表示与运算算法和逻辑电路实现.ppt》由会员分享,可在线阅读,更多相关《第03章 数据表示与运算算法和逻辑电路实现.ppt(82页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3 3章章数据表示、数据运算算法和逻辑电路实现本章主要内容本章主要内容信息编码、码制转换与检错纠错码信息编码、码制转换与检错纠错码数据表示数据表示常用的信息编码常用的信息编码二进制数值数据的编码与运算算法二进制数值数据的编码与运算算法数字化编码二要素数字化编码二要素数值数值 文字文字 符号符号 语音语音 图形图形 图像图像 等统称数据,等统称数据,在计算机内部,都必须用在计算机内部,都必须用数字化编码数字化编码的形式的形式被被 存储存储 加工加工 和和 传送传送 数字化编码数字化编码二要素二要素:少量简单的基本符号少量简单的基本符号一定的组合规则一定的组合规则用以表示用以表示大量复大量复杂
2、多多样的信息的信息 基二码(二进制码)基二码(二进制码)只使用只使用两个两个基本点符号:基本点符号:符号个数符号个数最少最少,物理上容易实现,物理上容易实现与与二值逻辑二值逻辑的的 真真 假假 两个值对应简单两个值对应简单用二进制码用二进制码表示表示数值数据数值数据运算规则简单运算规则简单进位记数法与进制转换进位记数法与进制转换进位记数法进位记数法N N=i=m-1D Di*ir-kN 代表一个数值代表一个数值r 是这个数制的基是这个数制的基(Radix)i表示这些符号排列的位号表示这些符号排列的位号Di是位号为是位号为i i的位上的一个符号的位上的一个符号ri是位号为是位号为i i的位上的一
3、个的位上的一个 1 1 代表的值代表的值irDi*是第是第i i位的所代表的实际值位的所代表的实际值表示表示m+km+k位的值求累加和位的值求累加和十进制转二进制十进制转二进制整数部分除整数部分除2 2取余取余 小数部分乘小数部分乘2 2取整取整2 1 1222521011010.625*210.25 *200.5 *21 0.0 除尽为止除尽为止 求得位数满足要求为止求得位数满足要求为止低低高高高高低低从二进制数求其十进制的值,逐位码权累加求和从二进制数求其十进制的值,逐位码权累加求和二到八或十六进制转换二到八或十六进制转换二到八二到八 从小数点向左右从小数点向左右三位一分组三位一分组(10
4、 011 100.01)10 011 100.01)2 2=(234.2)=(234.2)8 8 010 010 二到十六二到十六 从小数点向左右从小数点向左右四位一分组四位一分组(1001 1100.01)1001 1100.01)2 2 =(9C.4)=(9C.4)1616 01000100 说明:说明:整数部分不足位数对转换无影响,整数部分不足位数对转换无影响,小数部分不足位数要补零凑足小数部分不足位数要补零凑足,否则出错。否则出错。二进制数据算术运算规则二进制数据算术运算规则(1)加法运算规则加法运算规则 0+0=0 例如:例如:0101 0+1=1 +)0001 1+0=1 0110
5、 1+1=0 并产生进位并产生进位(2)减法运算规则减法运算规则 0-0=0 例如:例如:1011 0-1=1 并产生借位并产生借位 -)0101 1-0=1 0110 1-1=0二进制数据算术运算规则二进制数据算术运算规则(3)乘法运算规则乘法运算规则 例如:例如:1101 0X X0=0 X X)0101 0X X1=0 1101 1X X0=0 1101 1X X1=1 1000001(4)除法运算规则除法运算规则 1101 例如:例如:1110101/1001 1001 1110101 1001 1011 1001 01001 1001 0 0000检错纠错码检错纠错码 为了提高计算机
6、的为了提高计算机的可靠性可靠性,除了采,除了采取选用更高可靠性的器件,更好的生产取选用更高可靠性的器件,更好的生产工艺等措施之外,还可以从数据编码上工艺等措施之外,还可以从数据编码上想一些办法,即采用一点冗余的线路,想一些办法,即采用一点冗余的线路,在原有数据位之外再在原有数据位之外再增加一到几位校验增加一到几位校验位位,使新得到的码字带上某种特性使新得到的码字带上某种特性,之,之后则通过后则通过检查该码字是否仍保持有这一检查该码字是否仍保持有这一特性特性,来,来发现发现是否出现了错误,甚至于是否出现了错误,甚至于定位错误后,定位错误后,自动改正自动改正这一错误,这就这一错误,这就是我们这里说
7、的是我们这里说的检错纠错编码技术检错纠错编码技术。非线性码非线性码线性码线性码卷积码卷积码分组码分组码非循环码非循环码循环码循环码随机随机 错误错误 突发突发 错误错误纠错码纠错码校验位与信息位校验位与信息位 的形成关系的形成关系信息位与校验位信息位与校验位 的约束条件的约束条件码字本身的码字本身的 结构特点结构特点信息位与校验位排列位置关系信息位与校验位排列位置关系系统码系统码非系统码非系统码纠错码分类纠错码分类几种常用的检错纠错码几种常用的检错纠错码我们只介绍三种常用的检错纠错码:我们只介绍三种常用的检错纠错码:奇偶检错码奇偶检错码,用于用于并行并行数据传送中数据传送中海明检错与纠错码海明
8、检错与纠错码,用于,用于并行并行数据传送中数据传送中循环冗余码循环冗余码,用于用于串行串行数据传送中数据传送中编码过程编码过程译码过程译码过程传传送送原始数据原始数据码码 字字结果数据结果数据形成校验位的值,形成校验位的值,加进特征加进特征检查接送的码字,检查接送的码字,发现发现 /改正错误改正错误奇偶校验码奇偶校验码偶校验偶校验奇校验奇校验校验位校验位用于并行码用于并行码检错检错原理:在原理:在 k 位数据码之外增加位数据码之外增加 1 位校验位,位校验位,使使 K+1 位码字中取值为位码字中取值为 1 的位数的位数总保持总保持为为 偶数偶数(偶校验偶校验)或)或 奇数奇数(奇校验奇校验)。
9、)。例如:例如:0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 原有数字位原有数字位 两个新的码字两个新的码字 奇偶校验码的实现电路+奇较验奇较验 偶校验偶校验 出错指示出错指示+同同左左侧侧电电路路编码电路编码电路译码电路译码电路P(校验位校验位)八八位位数数据据位位D7 D6 D5 D4 D3 D2 D1 D0p海明校验码海明校验码用于多位并行数据用于多位并行数据检错纠错检错纠错处理处理实现:为实现:为 k 个数据位设立个数据位设立 r 个校验位,个校验位,使使 k+r 位的码字同时具有位的码字同时具有如下如下两个特性:两个特
10、性:能发现并改正能发现并改正 k+r 位中任何一位出错,位中任何一位出错,能能 发发 现现 k+r 位中任何二位同时出错,但已位中任何二位同时出错,但已无法改正。无法改正。海明码的编码方法海明码的编码方法合理地用合理地用 k 位数据位形成位数据位形成 r 个校验位的值,个校验位的值,即保证用即保证用 k 个数据位中不同的数据位组合个数据位中不同的数据位组合来形成每个校验位的值,使任何一个数据来形成每个校验位的值,使任何一个数据位出错时,将影响位出错时,将影响 r 个校验位中不同的校验个校验位中不同的校验位组合起变化。换言之,通过检查是哪种位组合起变化。换言之,通过检查是哪种校验位组合起了变化,
11、就能确定是哪个数校验位组合起了变化,就能确定是哪个数据位错,对该位求反则实现纠错。据位错,对该位求反则实现纠错。有时两位错与某种情况的一位错对校验位组有时两位错与某种情况的一位错对校验位组合的影响相同,必须加以区分与解决。合的影响相同,必须加以区分与解决。P1=D2+D1P2=D3 +D1P3=D3+D2海明码的实现方案海明码的实现方案 例如:例如:k=3,r=4D3 D2 D1 P4 P3 P2 P1 X X X P4=P3+P2+P1+D3+D2+D1S1=P1+D2+D1S2=P2+D3 +D1S3=P3+D3+D2S4=P4+P3+P2+P1+D3+D2+D1+:异或:异或编码方案编码
12、方案译码方案译码方案海明码的实现方案海明码的实现方案 例如:例如:k=3,r=4D3 D2 D1 P4 P3 P2 P1 1 1 1 1 0 0 0 S1=P1+D2+D1S2=P2+D3 +D1S3=P3+D3+D2S4=P4+P3+P2+P1+D3+D2+D1译码方案译码方案S4 S3 S2 S1 值值 0 0 0 0 0 1 1 1 0 6 1 1 0 1 5 1 0 1 1 3 1 0 0 0 0 1 1 0 0 4 1 0 1 0 2 1 0 0 1 1 0 1 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1
13、 0 0 1 1 1 1 0 1 0 1 1 1 1 0 0 1 D3 D2 P3 D1 P2 P1 P4海明校验码总结海明校验码总结1.校验码字没有出错,则4个S均为0。2.任何单独一位数据位出错,4个S中会有3个1,且S4一定为1。3.若单独一位校验位出错,4个S中会有1到2个为1,且S4一定为1。4.任何两位(包含数据位和校验位),S4一定为0,另外3个S不全为0。5.4在这里只是表示奇数位出错还是偶数位出错,1为奇数位出错,0表示偶数位出错。检错纠错码小结检错纠错码小结(1)K位码有位码有2K 个编码状态,全用于表示合法个编码状态,全用于表示合法码,则任何一位出错码,则任何一位出错,均
14、会变成另一个合法均会变成另一个合法码,不具有检错能力。码,不具有检错能力。(2)从一个合法码变成另一个合法码,只少要从一个合法码变成另一个合法码,只少要改变几位码的值,称为改变几位码的值,称为最小码距最小码距(码距码距)。(3)K+1 位码,只用其位码,只用其 2K 个状态,可使码距个状态,可使码距 为为 2,如果一个合法码中的一位错了,就成如果一个合法码中的一位错了,就成为为非法码非法码,通过检查,通过检查码字的合法性码字的合法性,就,就得到得到检错能力检错能力,这就是奇偶校验码。,这就是奇偶校验码。检错纠错能力检错纠错能力(4)对对 k 位数据位,当给出位数据位,当给出 r 位校验位时,位
15、校验位时,要发现并改正一位错,要发现并改正一位错,须满足如下关系:须满足如下关系:2r =k+r+1;要发现并改正一位错,也能发现两位错要发现并改正一位错,也能发现两位错,则应则应:2r-1 =k+r,此时码距为此时码距为 4。(5)若最小码距为若最小码距为 d(d=2),能发现能发现 d-1 位错位错,或或改正改正(d-2)/2(取整取整)位错位错,要发现要发现 l 位错位错,并并改正改正 t 位错,应满足如下条件位错,应满足如下条件:d=l+t+1 (l=t)本章主要内容本章主要内容信息编码、码制转换与检错纠错码信息编码、码制转换与检错纠错码数据表示数据表示常用的信息编码常用的信息编码二进
16、制数值数据的编码与运算算法二进制数值数据的编码与运算算法基二码应用实例:数据表示基二码应用实例:数据表示逻辑型数据逻辑型数据字符型数据字符型数据ASCII 码码 EBCDIC 码码字符串字符串 汉字汉字检错纠错码检错纠错码奇偶校验奇偶校验海明校验海明校验 循环冗余校验循环冗余校验数值型数据数值型数据定点小数定点小数 整数整数 浮点数浮点数 二二十进制数(十进制数(BCD码)码)逻辑型逻辑型数据数据逻辑型数据只有两个值:逻辑型数据只有两个值:真真 和和 假假,正好可以用二进制码的两个符号分别表示,正好可以用二进制码的两个符号分别表示,例如例如 1 表示表示 真真 则则 0 表示表示 假假不必使用
17、另外的编码规则。不必使用另外的编码规则。对逻辑型数据可以执行逻辑的对逻辑型数据可以执行逻辑的 与与 或或 非非等基等基本逻辑运算。其规则如下:本逻辑运算。其规则如下:逻辑型数据逻辑型数据基本运算规则基本运算规则 X Y X与Y X或Y X的非 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0 字符型字符型数据的表示数据的表示 字符作为人字符作为人机联系的媒介,是最重机联系的媒介,是最重要的数据类型之一,当前的西文字符集由要的数据类型之一,当前的西文字符集由 128 个符号组成,通常用个符号组成,通常用 8 位二进制编码位二进制编码,即即用一个字节来表示每一个符号用
18、一个字节来表示每一个符号,当前通用,当前通用的两个标准字符集是:的两个标准字符集是:ASCII 码码:即即 American Standard Code for Information InterchangeEBCDIC码码:即:即 Extended Binary Coded Decimal Interchage Code 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 !
19、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 ACK SYN&6 F V f v 0111 BEL ETB 7 G W g w 1000 BS CAN (8 H X h x 1001 HT EM )9 I Y i y 1010 LF SUB *:J Z j z 1011 VT ESC +;K k 1100 FF FS ,N n 1111 SI US /?O _ o 字符串的表示与存储字符串的表示与存储 字符串是指连续的一串字符
20、,它们占据主存中连续的字符串是指连续的一串字符,它们占据主存中连续的多个字节,每个字节存放一个字符,对一个主存字的多个字节,每个字节存放一个字符,对一个主存字的多个字节,有按从低位到高位字节次序存放的,也有多个字节,有按从低位到高位字节次序存放的,也有按从高位到低位字节次序存放的。表示字符串数据要按从高位到低位字节次序存放的。表示字符串数据要给出串存放的主存起始地址和串的长度。例如:给出串存放的主存起始地址和串的长度。例如:IF AB THEN READ(C)就可以有如下不同的存放方式:就可以有如下不同的存放方式:I F A A F I B T T B 假定每个字假定每个字 H E N N E
21、 H 由由 4 个字节个字节 R E A D D A E R 组成组成 (C )C (汉字的表示汉字的表示 通常用两个字节表示一个汉字通常用两个字节表示一个汉字 为了与西文字符编码相区别(西文的为了与西文字符编码相区别(西文的ASCII码的最高一位编码值为码的最高一位编码值为0),表示一),表示一个汉字时,把两个字节的最高一位的编码个汉字时,把两个字节的最高一位的编码值设定为值设定为 1,则该编码集的最多编码数量,则该编码集的最多编码数量为为 128 X X 128。这种编码方案与西文传送中的把这种编码方案与西文传送中的把ASCII码的最高一位用作奇偶校验位有矛盾。码的最高一位用作奇偶校验位有
22、矛盾。数值数据在计算机内的格式数值数据在计算机内的格式定点小数定点小数:N =N N N .Ns-1-n-2整整 数数 :N =N N N .N N01snn-1浮点数浮点数:N =M E E .E E M M .M ssm-110-1-2-n符号位符号位 阶码位阶码位 尾数数码位尾数数码位 总位数总位数 短浮点数短浮点数:1 8 23 32长浮点数长浮点数:1 11 52 64 临时浮点数临时浮点数:1 15 64 80IEEE 标准:标准:阶码用移码,阶码用移码,尾数用原码尾数用原码 基为基为 2二二 十进制编码(十进制编码(BCD编码)编码)用四位二进制表示一位十进制,用四位二进制表示一
23、位十进制,16个编码状态选用其中的个编码状态选用其中的10个编码个编码有多种方案,例如:有多种方案,例如:8421码,余码,余 3 码,循环码码,循环码又可区分为:又可区分为:有权码:每位上的有权码:每位上的 1 代表确定的值代表确定的值无权码:无法确定每位上的无权码:无法确定每位上的 1 代表的值代表的值0 0000 0011 0000 00001 0001 0100 0001 01112 0010 0101 0011 01103 0011 0110 0010 01014 0100 0111 0110 01005 0101 1000 1110 10116 0110 1001 1010 101
24、07 0111 1010 1000 10018 1000 1011 1100 10009 1001 1100 0100 1111有权码有权码 无权码无权码8421余余3码码 循环码循环码 84-2-1如何判定码权如何判定码权 0 0000 1 0111 4+(-2)+(-1)2 0110 4+(-2)验证每个码的值验证每个码的值 3 0101 4+(-1)4 0100 4 从一编码求码权从一编码求码权 5 1011 8+(-2)+(-1)6 1010 -2 结论结论 7 1001 -1 证明此编码系统为有权码证明此编码系统为有权码 8 1000 8 9 1111 8+4+(-2)+(-1)如何
25、判定码权如何判定码权 0 0011 2+1=0 验证各码的值验证各码的值 1 0100 1 从一编码求码权从一编码求码权 2 0101 1 3 0110 2 4 0111 5 1000 6 1001 结论结论 7 1010 证明此编码系统为无权码证明此编码系统为无权码 8 1011 9 1100 本章主要内容本章主要内容信息编码、码制转换与检错纠错码信息编码、码制转换与检错纠错码数据表示数据表示常用的信息编码常用的信息编码二进制数值数据的编码与运算算法二进制数值数据的编码与运算算法定点小数表示定点小数表示:Ns N1 N2 Nn X =X =X =原原 X 1-X -1 X 0反反 X(2-2
26、 )+X-n0 X 1-1 X 0补补 X 2+XMod(2-2 )0 X 1-1 X 0Mod 20 X 1-n(纯小数)原码,反码,补码的定义(纯小数)原码,反码,补码的定义定点小数表示定点小数表示:Ns N1 N2 Nn 原原 码码定义:定义:X 原原=实例:实例:X1=0.10110 -0.10110 0.0000 X 原原=010110 110110 00000 10000 结论:结论:原码原码为符号位加数的绝对值,为符号位加数的绝对值,0正正 1负负 原码原码零有两个编码,零有两个编码,+0 和和-0编码不同编码不同 原码原码难以用于加减运算,但乘除方便难以用于加减运算,但乘除方便
27、 X 1-X -1 X 0 0 X 1定点小数表示定点小数表示:Ns N1 N2 Nn 反反 码码定义:定义:X 反反=实例:实例:X1=0.10110 -0.10110 0.0000 X 反反 =010110 101001 00000 11111 结论:结论:反码反码负数为符号位跟每位的反负数为符号位跟每位的反,0 正正 1 负负 反码反码零有二个编码,分零有二个编码,分+0 和和-0 反码反码难以用于加减运算,有循环进位问题难以用于加减运算,有循环进位问题 X(2-2-n)+X -1 X 0 MOD(2-2-n)0 X 1定点小数表示定点小数表示:Ns N1 N2 Nn模模 2 补码补码
28、定义:定义:X 补补=实例:实例:X1=0.10110 -0.10110 0.0000 X 补补 =010110 101010 00000结论:结论:补码补码最高一位是符号位,最高一位是符号位,0 正正 1 负负 补码补码表示为:表示为:2*符号位符号位+数的真值数的真值 补码补码零只有一个编码,故能表示零只有一个编码,故能表示-1 补码补码能很好地用于加减(乘除)运算能很好地用于加减(乘除)运算 X 2+X -1 X 0 MOD 2 0 X 1整数的编码表示整数的编码表示整数的整数的 原码原码 反码反码 补码补码 表示表示与小数的三种表示基本相同,与小数的三种表示基本相同,差别仅表现在小数点
29、的位置,差别仅表现在小数点的位置,可以认为整数的小数点在最低数值位的右侧可以认为整数的小数点在最低数值位的右侧因此整数的模与整数位数有关,因此整数的模与整数位数有关,讲课中不大用整数讲讲课中不大用整数讲 原原 反反 补补 码定义码定义例如:整数六位编码:例如:整数六位编码:X=+01110 X原原=0 01110 X补补=0 01110 X=-01110 X原原=1 01110 X补补=1 10010原原 反反 补码表示小结补码表示小结正数的正数的 原码原码、反码反码、补码补码表示均相同表示均相同,符号位为符号位为 0,数值位同数的真值。,数值位同数的真值。零的零的原码和反码原码和反码均有均有
30、 2个编码,个编码,补码补码只只 1个码个码负数的负数的 原码,反码,补码表示均不同原码,反码,补码表示均不同,符号位为符号位为 1,数值位:原码为数的绝对值,数值位:原码为数的绝对值 反码为每一位均取反码反码为每一位均取反码 补码为反码再在最低位补码为反码再在最低位+1由由X补求求-X补补:每一位取反后:每一位取反后,再在最低位再在最低位+1 数据的算术运算数据的算术运算补码补码 加加 减减 法法 运算运算原码原码一位乘法运算一位乘法运算 原码原码一位除法运算一位除法运算补码补码一位乘法运算一位乘法运算 补码补码一位乘法运算一位乘法运算 4.2.1 定点数加减运算定点数加减运算 定点数是指小
31、数点固定在某个位置上的数据,一般有小数定点数是指小数点固定在某个位置上的数据,一般有小数和整数两种表示形式。和整数两种表示形式。定点数的加减运算算法有原码、补码和反码三种。目前的定点数的加减运算算法有原码、补码和反码三种。目前的计算机普遍采用补码加减运算。下面主要以补码的加减运算来计算机普遍采用补码加减运算。下面主要以补码的加减运算来讲解。讲解。当补码加减运算的结果不超出机器范围时,有以下的运算当补码加减运算的结果不超出机器范围时,有以下的运算规则:规则:参加运算的两个操作数均用补码表示;参加运算的两个操作数均用补码表示;l 符号位作为数的一部分参加运算;符号位作为数的一部分参加运算;l 求差
32、时将减数求补,用求和代替求差;求差时将减数求补,用求和代替求差;l 运算结果为补码;运算结果为补码;l 符号位的进位为模值,应该丢掉。符号位的进位为模值,应该丢掉。1、补码加法运算、补码加法运算公式:公式:X补补Y补补XY补补例例4 1 已知已知X0.10011,Y0.10001,求求XY。解解 X补补1.01101 Y补补0.10001 X补补Y补补1.01101 0.10001 1.11110 XY补补0.100110.10001补补 0.00010补补1.11110这里这里X和和Y一负一正,同样得到一负一正,同样得到X补补Y补补XY补补。例例4 2 已知已知X0.10011,Y0.010
33、01,求,求XY。解解 X补补1.01101 Y补补1.10111 X补补Y补补1.01101+1.10111=1.00100XY补补-0.10011-0.01001 补补=-0.11100 补补1.00100 2、补码定点加减运算的实现补码定点加减运算的实现 由于由于XY补补X(Y)补补X补补Y补补,只要,只要我们求得我们求得Y补补,就可以变减法为加法,已知,就可以变减法为加法,已知Y补补,求求Y补补的方法是:对的方法是:对Y补补各位各位(包括符号位包括符号位)取反,取反,然后在末位加上然后在末位加上1,就可以得到,就可以得到Y补补。例如:例如:Y=0.0110,Y补补=1.1010,Y补补
34、=0.0110 例例4 3 已知已知X0.11001,Y0.10011,求,求XY。解解 X补补0.11001 Y补补0.10011 则则Y补补1.01101XY补补X补补Y补补0.110011.0110110.00110 由于补码的加减运算都可以转化为补码加法运算,这样在由于补码的加减运算都可以转化为补码加法运算,这样在逻辑电路实现加减运算时,可以只考虑用加法电路,而逻辑电路实现加减运算时,可以只考虑用加法电路,而不必设置减法电路。不必设置减法电路。F X3、补码定点加减运算的实现、补码定点加减运算的实现Fs F ALU 目的目的 寄存器寄存器源源 寄存器寄存器 选通门选通门二选通门二选通门
35、选通门选通门F 1XYF YX F010 1F /YFsOVRZC累加器累加器X X+YX X-Y加加减减4.2.2 定点数加减运算溢出的处理定点数加减运算溢出的处理 1、当加减运算结果超出机器数所能表示的范围时,称为溢出。在计算机中怎样来判断溢出呢?溢出。在计算机中怎样来判断溢出呢?当符号相同的两个数相加时,如果结果的符号与加数(或加数)符号不同,则说明溢出。即溢出条件为:在计算机中判断溢出的逻辑电路如图所示。2、当任意符号两数相加时,如果CCf,则运算结果正确,C表示数值最高位产生的进位,Cf表示进位位产生的进位。如果CCf,则为溢出。由此得出溢出条件为:3、可以采用双符号位fS2fS1。
36、正数的双符号位为00,负数的为11。符号位参与运算,运算结果的符号位为高符号位fS2(无论是否溢出)。当结果的两个符号位不同时,说明溢出。即溢出条件为:,或者溢出条件为:4.3 二进制乘除法运算二进制乘除法运算在计算机中,实现乘除运算通常有三种方法在计算机中,实现乘除运算通常有三种方法:第一、软件实现。在低档微机中无乘除运算指令,只能用乘除子程序来实现乘除运算。第二、在原有实现加减运算器基础上增加一些逻辑线路,使乘除运算变换成累加和移位操作,在机器中设有乘除指令。第三、设置专用的乘除法器。机器中设有相应的乘除指令。在此主要讨论常用的第二种方案。4.3.1二进制乘法运算二进制乘法运算1、定点数一
37、位乘法(1)定点原码一位乘法 两个原码数相乘,其乘积的符号为相乘两数的异或值,数值为两数绝对值之积。手手工运算举例:工运算举例:例例4 5 X=-0.1101,Y=0.1011,计算乘积XY符号位的异或值为:结果的符号为负,得XY原=1.10001111。方法:方法:每次按乘数每每次按乘数每1位上的值是位上的值是1还是还是0,决定,决定相加数取被乘数的值还是取零值,而且相加数逐相加数取被乘数的值还是取零值,而且相加数逐次向左偏移次向左偏移1位,最后一起求和。位,最后一起求和。机器实现:机器实现:(1)机器内多个数据一般不能同时相加,一次加法操)机器内多个数据一般不能同时相加,一次加法操作只能求
38、出两数之和,因此每求得一个相加数,就与作只能求出两数之和,因此每求得一个相加数,就与上次部分积相加。上次部分积相加。(2)由于在求本次部分积时,前一次部分积的最低位)由于在求本次部分积时,前一次部分积的最低位不再参与运算,因此可将其右移一位,相加数可直送不再参与运算,因此可将其右移一位,相加数可直送而不必偏移,于是用而不必偏移,于是用N位加法器就可实现两个位加法器就可实现两个N位数位数相乘。相乘。(3)部分积右移时,乘数寄存器同时右移一位,这样)部分积右移时,乘数寄存器同时右移一位,这样可以用乘数寄存器的最低位来控制相加数可以用乘数寄存器的最低位来控制相加数(取被乘数取被乘数或零或零),同时,
39、乘数寄存器的最高位可接收部分积右,同时,乘数寄存器的最高位可接收部分积右移出来的一位,因此,完成乘法运算后,被乘数寄存移出来的一位,因此,完成乘法运算后,被乘数寄存器中保存乘积的高位部分,乘数寄存器中保存乘积的器中保存乘积的高位部分,乘数寄存器中保存乘积的低位部分。低位部分。例例4 6 设设X=-0.1101,Y=0.1011,求X+Y原=?解:其中解:其中|X|用双符号表示;|Y|用单符号表示|X|=00.1101,|Y|=0.1011 符号:符号:乘积为负数,所以:XY原=1.10001111实现原码一位乘法的逻辑线路图实现原码一位乘法的逻辑线路图 加加 法法 器器 部部 分分 积积 被被
40、 乘乘 数数 乘乘 数数 F最低位最低位加运算加运算移位线路移位线路每位每位1套套 第第 i 位位第第 i 位位第第 i+1位位第第 i-1位位F/2X FX F*2X移位电路移位电路原码一位乘法原码一位乘法0 0 0 0 0 0 1 0 1 1 加加 法法 器器 部部 分分 积积 被被 乘乘 数数 乘乘 数数 F最低位最低位加运算加运算移位线路移位线路每位每位1套套0 0 0 0 0 00 0 1 1 0 1 1 0 1 10 0 1 1 0 10 0 1 1 0 10 0 0 1 1 0 1 1 0 1 1 0 1 10 1 0 0 1 10 1 0 0 1 11 1 0 1 1 0 1
41、1 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 1 低位积低位积 在补码运算的机器中,不论数的正负,连同在补码运算的机器中,不论数的正负,连同符号位将数右移一位,并保持符号位不变,符号位将数右移一位,并保持符号位不变,相当于乘相当于乘1/2(或除或除2)。
42、证明如下:证明如下:2、定点补码一位乘法 已知已知X补补,如何求,如何求X/2补补 设设X补补=,当真值当真值X0时,时,X0=0,即:,即:X补补=当真值当真值X0,够减,商上,够减,商上1。接着做第。接着做第i1次,次,Ri1=2RiY。若若Ri0,够减,商上,够减,商上1。除法结束。除法结束。若若Ri0,不够减,商上,不够减,商上0。做。做i1次的方法是恢复余数次的方法是恢复余数(+Y),即,即Ri+Y,继续左移一位后,再减,继续左移一位后,再减Y,即,即Ri+1=2(Ri+Y)-Y=2Ri+Y。可得加减交替法规则:可得加减交替法规则:当余数为正时,商上当余数为正时,商上1,求下一位商的
43、办法,是余数左移一位,再减去除求下一位商的办法,是余数左移一位,再减去除数;当余数为负时,商上数;当余数为负时,商上0,求下一位商的办法,求下一位商的办法,是余数左移一位,再加上除数。是余数左移一位,再加上除数。但若最后一次上但若最后一次上商为商为0而又需得到正确余数,则在这最后一次仍而又需得到正确余数,则在这最后一次仍需恢复余数。需恢复余数。例例4 9 X=-0.1011,Y=0.1101,求,求XY。解解-Y补补=11.0011 注意:注意:对定点小数除法,首先要比较除数和被除数对定点小数除法,首先要比较除数和被除数的绝对值大小,检查是否出现商溢出。的绝对值大小,检查是否出现商溢出。商的符
44、号为相除两数符号的半加和。商的符号为相除两数符号的半加和。运算过程中,放被除数和商的寄存器同时移运算过程中,放被除数和商的寄存器同时移动。动。定点补码一位除法定点补码一位除法(加减交替法加减交替法)运算规则:运算规则:判符号位判符号位 如果被除数与除数同号,用被除数减去除数,若如果被除数与除数同号,用被除数减去除数,若两数异号,用被除数加上除数。如果所得余数与除数两数异号,用被除数加上除数。如果所得余数与除数同号上商同号上商1,若余数与除数异号,上商,若余数与除数异号,上商0,该商即为结,该商即为结果的符号位。果的符号位。求商的数值部分求商的数值部分 如果上次上商如果上次上商1,将余数左移一位
45、后减去除数;如,将余数左移一位后减去除数;如果上次上商果上次上商0,将余数左移一位后,将余数左移一位后加上除数加上除数。然后判断。然后判断本次操作后的余数,如果本次操作后的余数,如果余数与除数同号余数与除数同号上商上商1;若;若余余数与除数异号数与除数异号上商上商0。如此重复执行。如此重复执行n-1次次(设数值部分设数值部分有有n位位)。商的最后一位一般采用恒值商的最后一位一般采用恒值1的办法,并省略的办法,并省略了最低位了最低位+1的操作,此时最大误差为的操作,此时最大误差为2-n。若要求商的精度较高,可按若要求商的精度较高,可按再进行一次操作,再进行一次操作,以求得商的第以求得商的第n位。
46、当除不尽时,若商为负,要位。当除不尽时,若商为负,要在商的最低一位加在商的最低一位加1,使商从反码值转变成补码,使商从反码值转变成补码值;若商为正,最低位不需加值;若商为正,最低位不需加1。除法运算除法运算 在计算机内实现除运算时,存在与在计算机内实现除运算时,存在与乘法运算类似的几个问题:乘法运算类似的几个问题:加法器与寄存器的配合,加法器与寄存器的配合,被除数位数更长,商要一位一位地被除数位数更长,商要一位一位地计算出来等。这可以用左移余数得到解计算出来等。这可以用左移余数得到解决,且被除数的低位部分可以与最终的决,且被除数的低位部分可以与最终的商合用同一个寄存器,余数与上商同时商合用同一
47、个寄存器,余数与上商同时左移。左移。F 加法器加法器A 被除数被除数(余数余数)B 除数除数 1 0与或门与或门与或门与或门2FAFABF/BF 1FC 商寄存器商寄存器上商上商与或门与或门2CC计数器计数器 Cd实现原码一位除法运算的原理逻辑图实现原码一位除法运算的原理逻辑图 N=MRmE 阶码的基以2为例,M为尾数定点小数,E为阶码整数。浮点数的表示及运算方法 浮点数表示浮点数表示浮点数表示范围浮点数表示范围浮点数的表数精度浮点数的表数精度 规格化浮点数规格化浮点数 尾数:采用原码表示时规格化浮点数的符号位和最高数位值的形式应为:01;10。而采用补码表示时应为:01;11(单符号位)尾数
48、修改,阶码相应改变。隐含位隐含位 1.浮点数的加减法运算浮点数的加减法运算 设有两浮点数X,Y,实现XY运算,其中:X=Mx2EX,Y=MY2EY执行以下五步来完成运算(1)“对阶对阶”操作操作 先比较两浮点数的阶码大小,求出其差值先比较两浮点数的阶码大小,求出其差值E,并保留其,并保留其大值大值E,E=max(EX,EY)当当E0时,将阶码小的数的尾数右移时,将阶码小的数的尾数右移E位,并将其阶码位,并将其阶码值加值加E。使两数的阶码值相等,此操作称为。使两数的阶码值相等,此操作称为“对阶对阶”尾数右移时注意:若其以原码表示,符号位不参加移位,尾数右移时注意:若其以原码表示,符号位不参加移位
49、,尾数值部分的高位补尾数值部分的高位补0,若其以补码形式表示,符号位参加右,若其以补码形式表示,符号位参加右移,并保持原符号位不变。移,并保持原符号位不变。(2)尾数的加尾数的加/减运算减运算在在对对阶阶以以后后,执执行行两两尾尾数数的的加加/减减运运算算,得得到到两两数数之之和和/差。差。(3)规格化操作规格化操作 即当运算结果不是规格化数时要进行左规、右规。即当运算结果不是规格化数时要进行左规、右规。注意:注意:原码与补码表示时,规格化的不同。原码与补码表示时,规格化的不同。理解其规则:双符号位的理解其规则:双符号位的原码规格化原码规格化尾数其值最高位为尾数其值最高位为1,补码规格化形式为
50、,补码规格化形式为00.1;11.0 采用采用补码补码表示时:右规:结果两符号位不同时,尾数右表示时:右规:结果两符号位不同时,尾数右移一位,阶码加移一位,阶码加1。(结果溢出结果溢出)左规:结果两符号位相同,而最高数值位与符号位相同时,左规:结果两符号位相同,而最高数值位与符号位相同时,此时,尾数连续左移,直到最高位值与符号位不同为止,同时此时,尾数连续左移,直到最高位值与符号位不同为止,同时从从E中减去移位的位数。中减去移位的位数。(4)舍入舍入 在右规和对阶时,尾数低位上的数值会移掉,使其精度受在右规和对阶时,尾数低位上的数值会移掉,使其精度受到影响。常用到影响。常用“0”舍舍“1”入法