




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 运算方法和运算部件,内容概要: 本章是本课程的重点;主要讨论十进制数如何在计算机中表示并如何正确地利用计算机硬件和计算方法完成十进制数的运算。,1、讨论十进制数与二进制数的相互转换的方法; 2、讨论带符号的二进制数在计算机中的表示方法; 3、定点数与浮点数的表示方法; 4、带符号的二进制数的加减法运算方法; 5、二进制数的乘法运算; 6、二进制数的除法运算; 7、浮点数的运算方法; 8、运算部件; 9、数据校验码。,3.1数据的表示方法和转换,一、数值数据的表示方法,二、不同进制数据的的相互转换 1、二进制数转换为十进制数 方法:将二进制数各位按权展开相加即可。 例: 1 0 1 0
2、1 1 . 1 0 0 1 25 24 23 22 21 20. 2-1 2-2 2-3 2-4 所以: (101011.1001)2=1*25+1*23+1*21+1*20+1*2-1+1*2-4 =32+8+2+1+0.5+0.0625 =(43.5625)10 同理,八进制数和十六进制数转换为十进制数的方法同上。,2、十进制数转换为二进制数 (1)整数部分的转换 方法:将十进制数连续地除以2直至上商为0为止,取每次所得的余数按照倒序排列即得二进制数序列。,例:十进制数19的转换为二进制数的过程: 2 19 2 9 1 2 4 1 2 2 0 2 1 0 0 1 所以(19)10=(100
3、11)2,(2)小数部分的转换 方法:将十进制小数连续地乘以2,取每次乘积的整数部分的值,直至转换的乘积全部为整数或是达到转换精度为止.,例:十进制小数0.3045转换为二进制小数的过程:(转换要求二进制小数精确到小数点后8位) 0.3045*2=0.6090 0.6090*2=1.2180 0.2180*2=0.4360 0.4360*2=0.8720 0.8720*2=1.7440 0.7440*2=1.4880 0.4880*2=0.9760 0.9760*2=1.9520 所以:(0.3045)10=(0.01001101 )2,(3)二进制数转换为八进制数和十六进制数 *每3位二进制
4、数与1位八进制数相对应; *每4位二进制数与1位十六进制数相对应. 注意:转换时,要从小数点开始划分二进制数,而不是从头开始划分二进制数.,例:101101.101001转换为对应的八进制数和十六进制数的过程: 1 0 1 1 0 1.1 0 1 0 0 1 5 5 . 5 1 0 0 1 0 1 1 0 1. 0 1 0 0 1 0 0 0 2 D . 4 8 不足位数的在头或尾补0,(4)十进制数转换为八进制数或十六进制数 方法:将十进制数转换为二进制数,再由二进制数转换为八进制数或十六进制数.,用计算机处理十进制数时,如果将十进制数转换为二进制数,需要进行计算,会消耗机时,一般可以采用将
5、十进制数进行编码的形式来交由计算机处理.,三、十进制数在计算机中的编码表示 1、十进制数位的编码与运算 在计算机中,通常采用4位二进制数来表示1位十进制数位。 (1)有权码的表示方法 对应每个十进制数位的二进制数的每位都有固定的权,这种表示法称为有权码。常用的有权码有8421码,2421码,5211码等。,常用的有权码,!注意:当十进制数采用编码表示后,进行运算时,有时要对运算结果进行修正。 例如:3+9=12 采用8421码运算时,有0011+1001=1100,而8421码里对1100没有定义。 当运算结果大于9之后,要对结果进行加6修正。 如上例,用 1 1 0 0 + 0 1 1 0
6、0 0 0 1 0 0 1 0,(2)无权码的表示方法 对应于每个十进制数位的二进制数没有固定的权,这种码称为无权码。 常用的无权码有余三码和格雷码。 具体编码祥见课本。,(3)数字串在计算机内的表示与存储 数字串采用字符编码的形式存放在计算机中,常用的字符编码有ASCII码。 数字串采用压缩的十进制数的形式存放在计算机中。 一般用一个字节存放两个十进制数位,十进制数位一般用BCD码或ASCII码的低4位表示,符号位用BCD码的6种冗余状态中的两种来表示. 例如:+123可以表示为0001 0010 0011 1100. 1 2 3 +,3.2带符号的二进制数的表示方法,当数据在计算机中进行运
7、算时,必须根据运算方法和硬件选择适当的数据的表示形式,以使运算更加准确(运算精度高)和运算速度更快. 这就是本节将要讨论的带符号的二进制数据的原码、反码和补码的表示方法。,一、定点数和浮点数的简单概念 数据在计算机中的表示方法可以根据小数点的表示不同分为定点数和浮点数: 定点数小数点位置固定; 浮点数小数点位置不固定。 定点数又分为定点小数和定点整数。 定点小数:数据符号位 数据数值位 定点整数: 数据符号位 数据数值位 在下面讨论原码、反码、补码时,假设机器中的数据表示为定点小数的形式.,小数点位置默认在此,带符号的数 符号数字化的数,+ 0.1011,+ 1100, 1100, 0.101
8、1,真值 机器数,x 为真值,如,x = + 0.1101,x原 = 0 . 1101,x = + 0.1000000,x原 = 0 . 1000000,用 小数点 将符号 位和数值位隔开,用 小数点 将符号 位和数值位隔开,1.原码表示法,(1)定义,(2)性质 原码的符号位定义如下:正数的符号位用0表示;负数的符号位用1表示; 正数的原码数值位与真值的数值位相等; 负数的原码数值位与真值的数值位相等; 书写时,定点小数的原码符号位与数值位之间用小数点隔开;定点整数的原码符号位与数值位之间用逗号隔开。,如,x = +1110,x原 = 0 , 1110,x原 = 1 , 1110,x = +
9、 0.1000000,x原 = 0 . 1000000,x原 = 1. 1000000,0的原码表示有两个,即正0的原码和负0的原码: 正0的原码为:0.0000000 负0的原码为: 1.0000000 原码的表示范围: 以8位定点小数(符号位占1位,数值位占7位)为例, 原码正数最大值为:0.1111111=+(1-0.0000001) =+(1-2-7) 原码负数最大值为:1.1111111=-(1-0.0000001) =-(1-2-7) Q:定点整数的原码表示范围?,例 2 求 x = 0 的原码,解:,设 x = +0.0000,例 1 已知 x原 = 0.1101 求 x,解:,
10、 x = + 0.1101,同理,对于整数,+ 0原 = 0,0000,+0.0000原 = 0.0000,根据 定义 x原 = 0.1101,原码的特点:,简单、直观,但是用原码做加法时,会出现如下问题:,能否 只做加法 ?,加法 正 正,加,加法 正 负,加法 负 正,加法 负 负,减,减,加,正,可正可负,可正可负,负,6.1,(1) 补的概念,时钟,逆时针,顺时针,2. 补码表示法,时钟以 12为模,称 + 9 是 3 以 12 为模的补数,6.1,!同样的补的例子在十进制数的运算中也有. 例:假设运算的数据所存放的容器最多只能放下2位: 3 8 3 8 1 5 + 8 5,2 3,2
11、 3,1,由于容器只能放2位,所以该1被自然丢弃.,由该例可以看到,当容器的容量为2位时,-15的运算可以改为+85来完成,称85是15的以模为100的补数.,模的概念: 模就是一个容器刚刚溢出的量(容器的最大值并在末位加1)。 结论:,一个负数加上 “模” 即得该负数的补数,两个互为补数的数 它们绝对值之和即为 模 数,由于计算机所表示的数据的位数总是有限的,这样计算机就是一个天然的容器,它也具有其运算的模,找到它的模就可以找到每个负数的补数,这样,减法运算就可以转换为加法运算,由此可以减轻硬件的设计和实现的难度。,(2)定义,x 为真值,x = + 0.1110,如,x补 = 0.1110
12、,1.0100000,= 10.0000000,(3)补码的性质,正数补码的符号位用0表示,数值位与真值的数值 位相等; 负数补码的符号位用1表示,数值为真值的数值位按位取反并在最低位加1.,如 X=+0.1101 X补=0.1101,X=-0.1101 X补=1.0011,正0的补码形式与负0的补码形式唯一: +0.0000补=0.0000 -0.0000补=0.0000 补码的表示范围: 补码最大正数的表示范围与原码的一样; 补码最小负数由于正0和负0的补码形式一样,编码的组合多了一个,所以最小负数的值比原码还可以小一位.(Q?) 以4位二进制(1位为符号位)为例:,(5) 举例,解:,x
13、 = + 0.0001,解:由定义得,x = x补 2,= 1.0001 10.0000,x原 = 1.1111,由定义得,(4) 举例,解:,x = + 0.0001,解:由定义得,x = x补 2,= 1.0001 10.0000,x原 = 1.1111,由定义得,6.1,3、反码表示法 (1)定义,x 为真值,x = +0.1101,x反 = 0.1101,= 1.0101,如,(2)反码的性质,正数反码的符号位用0表示,数值位与真值的数值 位相等; 负数反码的符号位用1表示,数值为真值的数值位按位取反.,如 X=+0.1101 X反=0.1101,X=-0.1101 X补=1.0010
14、,正0的反码形式与负0的反码形式不一致: +0.0000反=0.0000 -0.0000反=1.1111 反码的表示范围: 反码最大正数的表示范围与原码的一样; 反码最小负数的表示范围与原码的一样。(Q?),举例,例 6.10 求 0 的反码,设 x = +0.0000,x = 0.0000,+0.0000反= 0.0000, 0.0000反= 1.1111, + 0反 0反,解:,同理,对于整数,+0反= 0,0000, 0反= 1,1111,例6.9 已知 x反 = 1,1110 求 x,= 1,1110 11111,= 0001,例6.8 已知 x反 = 0,1110 求 x,解:,由定
15、义得 x = + 1110,解:,6.1,三种机器数的小结,对于正数,原码 = 补码 = 反码,-0,-1,-128,-127,-127,-126,-3,-2,-1,设机器数字长为 8 位(其中一位为符号位) 对于整数,当其分别代表无符号数、原码、补码和 反码时,对应的真值范围各为多少?,4. 移码表示法,补码表示很难直接判断其真值大小,如,十进制,x + 25,+10101 + 100000,+11111 + 100000,错,错,正确,正确,0,10101,1,01011,0,11111,1,00001,+10101, 10101,+11111, 11111,= 110101,= 0010
16、11,= 111111,= 000001,二进制,补码,6.1,(1) 移码定义,x 为真值,n 为 整数的位数,移码在数轴上的表示,如,x = 10100,x移 = 25 + 10100,用 逗号 将符号位 和数值位隔开,x = 10100,x移 = 25 10100,= 1,10100,= 0,01100,(2) 移码和补码关系的比较,设 x = +1100100,x移 = 27 + 1100100,x补 = 0,1100100,设 x = 1100100,x移 = 27 1100100,x补 = 1,0011100,补码与移码只差一个符号位,= 1,1100100,= 0,0011100
17、,1,0,0,1,!所以,求移码的快速方法就是:求出该数的补码,然后将该补码的符号位取反,即得该数对应的移码。,当 x = 0 时,+0移 = 25 + 0, 0移 = 25 0, +0移 = 0移,当 n = 5 时,最小的真值为 25, 100000移,可见,最小真值的移码为全 0,(2) 移码的性质,用移码表示浮点数的阶码,能方便地判断浮点数的阶码大小,= 1,00000,= 1,00000,= 100000,= 000000,= 25100000,正0的移码形式与负0的移码形式一致: +0.0000补=1.0000 -0.0000补=1.0000 移码的表示范围: 移码最大正数的表示范
18、围与补码的一样; 移码最小负数的表示范围与补码的一样。(Q?),3.3带符号的二进制数在机器中的加减法运算的实现方法,介绍在机器中如何实现两个二进制数的加减法的运算.,一、加减法运算的实现 实现方法:当二进制数据采用补码表示时,有结论:,1、补码加法运算公式,整数,A补 + B补,= A+B补(mod 2n+1),小数,A补 + B补,= A+B补(mod 2),2、补码减法运算公式:,整数,A B补,= A+(B )补,= A补 + B补,小数,A B补,= A+(B )补,注意:连同符号位一起相加,符号位产生的进位自然丢掉,= A补 + B补,注意1:-Y补的求法: 将Y补连同符号为在内,
19、按位取反,然后在最低位加1,所得的数据即为-Y补。 注意2:采用补码运算时,符号位与数值位一同参与运算,若符号位产生进位,则自然丢掉。,解:,A补,B补,A补 + B补,+,= 0 . 1 0 1 1,= 1 . 1 0 1 1,= 1 0 . 0 1 1 0,= A + B补,验证,0.1011, 0.0101,0.0110, A + B = 0 . 0 1 1 0,A补,B补,A补 + B补,+,= 1 , 0 1 1 1,= 1 , 1 0 1 1,= 1 1 , 0 0 1 0,= A + B补,验证, 1001, 1110,解:, A + B = 1110,例,设机器数字长为 8 位
20、(含 1 位符号位) 且 A = 15, B = 24,用补码求 A B,解:,A补 + B补,+,= 1, 1110111,= A B补,B补 = 0, 0011000,练习 2 设机器数字长为 8 位(含 1 位符号位) 且 A = 97,B = +41,用补码求 A B,A B = + 1110110 = + 118, A B = 1001 = 9,错,错,为什么会出错? 因为产生了溢出,因为符号位与数值位一同参与运算! 一种情况是两个同符号数相加;另一种情况是两个不同符号数相减。,3. 溢出判断,(1) 利用一位符号位判溢出,参加操作的 两个数(减法时即为被减数和“求补” 以后的减数)
21、符号相同,其结果的符号与原操作 数的符号不同,即为溢出,硬件实现,如,有 溢出,无 溢出,溢出,x=0.1001, y=0.1101 x补=0.1001,y补=0.1101 0.1001 + 0.1101 1.0110 结果的符号位=1,运算数的符号位=0 有 溢出,(2) 双符号位判溢出,x补 + y补 = x + y 补 (mod 4),x y补 = x补 + y补 (mod 4),结果的双符号位 相同 未溢出,结果的双符号位 不同 溢出,最高符号位 代表其 真正的符号,双符号位规定: 正数的补码的双符号位用 00表示; 负数的补码的双符号位用 11表示。 运算时,补码的符号位一起参与运算
22、,若运算结果的两位符号位不相等,则表示产生了溢出;若运算结果的两位符号位相等,则表示没有溢出。运算结果的最高符号位代表真正的符号。,例:x=0.1001, y=0.1101 采用双符号位 x补=00.1001, y补=00.1101 0 0.1 0 0 1 + 0 0.1 1 0 1 0 1.0 1 1 0,3.4定点数与浮点数,数的定点表示和浮点表示,小数点按约定方式标出,一、定点表示,定点机,小数定点机,整数定点机,原码,补码,反码,(1 2-n) +(1 2-n),(2n 1) +( 2n 1), 1 +(1 2-n), 2n +( 2n 1),(1 2-n) +(1 2-n),(2n
23、1) +( 2n 1),二、浮点表示,计算机中 r 取 2、4、8、16 等,当 r = 2,N = 11.0101,= 0.110101210,= 1.1010121,= 1101.012-10,= 0.001101012100,计算机中 S 小数、可正可负,j 整数、可正可负,规格化数,1. 浮点数的表示形式,Sf 代表浮点数的符号,n 其位数反映浮点数的精度,m 其位数反映浮点数的表示范围,jf 和 m 共同表示小数点的实际位置,设 m=4,n=10.阶用移码表示,尾数用补码表示,求下列数的浮点数的形式。,X1=110101.110 X2=-0.0010101101 X1=0.11010
24、1110*2110 X2=-0.101011010*2-010,X1 1 0110 0 110101111 X2 0 1110 1 010100110,2. 浮点数的表示范围,2( 2m1)( 1 2n),2( 2m1)2n,2( 2m1)( 1 2n),2( 2m1)2n,215 ( 1 2-10),2-15 2-10,2-15 2-10,215 ( 1 2-10),上溢 阶码 最大阶玛 下溢 阶码 最小阶码 按 机器零 处理,3. 浮点数的规格化形式,r = 2,尾数最高位为 1,r = 4,尾数最高 2 位不全为 0,r = 8,尾数最高 3 位不全为 0,4. 浮点数的规格化操作,r
25、= 2,左规 尾数左移 1 位,阶码减 1,右规 尾数右移 1 位,阶码加 1,r = 4,左规 尾数左移 2 位,阶码减 1,右规 尾数右移 2 位,阶码加 1,r = 8,左规 尾数左移 3 位,阶码减 1,右规 尾数右移 3 位,阶码加 1,基数 r 越大,可表示的浮点数的范围越大,基数不同,浮点数的 规格化形式不同,基数 r 越大,浮点数的精度降低,5、讨论 r=2 的浮点数的规格化 对于用补码表示的尾数来说,规格化就是要使得尾数的绝对值大于0.5(即二进制形式为0.1*的形式).这样就可以用有限的尾数位数保留充分多的有效数字. 而判断一个补码形式的尾数是否是一个规格化的数的方法是:看
26、尾符与尾数数值的最高位的值是否相等,若相等,表示不是规格化的数,需通过左规或右规使尾数规格化,若不相等,则表示是一个规格化的数.,具体来说有: 尾符号位为0,而尾数数值最高位为0,需要将尾数做左规-左移尾数直至满足规格化要求为止,左移了N位,每左移一位,则阶要做减1的操作,共做N次减1操作. 尾符号位为1,而尾数数值最高位为1,需要将尾数做左规-左移尾数直至满足规格化要求为止,左移了N位,每左移一位,则阶要做减1的操作,共做N次减1操作.,而当运算的数发生了溢出时,就需要做右规: 运算正溢出时: 例如:所得结果为01.101010101,右规1位,结果变为00.1101010101,同时阶码加
27、1; 运算负溢出时: 例如:所得结果为10.101010101,右规1位,结果变为11.0101010101,同时阶码加1;,例如:,X1 0 1001 0 001010111 所以,X1不是规格化数. 左规一位: 0 1000 0 010101110 左规一位: 0 0111 0 101011100,例如:,最大正数,= 215( 1210 ),最小正数,最大负数,最小负数,= 21521,= 215( 12 10 ),= 216,= 21521,= 216,设 m = 4(阶码数值位),n = 10(尾数数值位),尾数规格化后的浮点数表示范围,解:,二进制形式,定点表示,浮点规格化形式,x
28、原 = 1, 0010; 0. 1001100000,x补 = 1, 1110; 0. 1001100000,x反 = 1, 1101; 0. 1001100000,定点机中,浮点机中,000,x = 0.0010011,x = 0.0010011,x = 0.10011000002-10,x原 = x补 = x反 = 0.0010011000,当浮点数 尾数为 0 时,不论其阶码为何值 按机器零处理,机器零,当浮点数 阶码等于或小于它所表示的最小 数 时,不论尾数为何值,按机器零处理,如 m = 4 n = 10,当阶码用移码,尾数用补码表示时,机器零为,有利于机器中“ 判 0 ” 电路的实
29、现,当阶码和尾数都用补码表示时,机器零为,6、IEEE 754 标准,符号位 S 阶码 尾数 总位数,1 8 23 32,1 11 52 64,1 15 64 80,尾数为规格化表示,3.5二进制乘法运算,3.5.1 定点数一位乘法 1. 定点原码一位乘法 先讨论笔算乘法的运算过程,然后推出机器用原码实现乘法的方法.,1. 分析笔算乘法,A = 0.1101 B = 0.1011,AB = 0.10001111,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,符号位单独处理,乘数的某一位决定
30、是否加被乘数,4个位积一起相加,乘积的位数扩大一倍,乘积的符号心算求得,?,2. 笔算乘法改进,A B = A 0.1011,= 0.1A + 0.00A + 0.001A +0.0001A,= 0.1A + 0.00A + 0.001( A +0.1A),= 0.1A + 0.010 A + 0. 1( A +0.1A),= 0.1A +0.1 0 A+0.1(A + 0.1A),= 2-1A +2-1 0 A+2-1(A + 2-1(A+0),第一步 被乘数A + 0,第三步 部分积 + 被乘数,3. 改进后的笔算乘法过程(竖式),0 . 0 0 0 0,0 . 1 1 0 1,0 . 1
31、 1 0 1,0 . 1 1 0 1,0 . 0 0 0 0,0 . 1 1 0 1,初态,部分积 = 0,乘数为 1,加被乘数,乘数为 1,加被乘数,乘数为 0,加 0,乘数为 1,加 被乘数,小结,被乘数只与部分积的高位相加,硬件,3个寄存器,具有移位功能,一个全加器,4. 原码乘法,(1) 原码一位乘运算规则,以小数为例,数值部分为绝对值相乘 x* y*,开始,i=0,部分积=0,IYI右移一位,Yi=1?,部分积+IXI=部分积,部分积和IYI右移一位,i+1=i,i=n?,Y,N,N,Y,结束,原码一位乘法数值部分计算流程图,例,已知 x = 0.1110 y = 0.1101 求x
32、 y原,解:,数值部分的运算,0 . 0 0 0 0,0 . 1 1 1 0,0 . 1 1 1 0,0 . 0 0 0 0,0 . 1 1 1 0,0 . 1 1 1 0,部分积 初态 z0 = 0,逻辑右移,逻辑右移, 数值部分按绝对值相乘,x* y* = 0. 1 0 1 1 0 1 1 0,则 x y原 = 1. 1 0 1 1 0 1 1 0,特点,绝对值运算,逻辑移位,结果,用移位的次数判断乘法是否结束,5. 补码乘法,设 被乘数,乘数, 被乘数任意,乘数为正,同原码乘,但 加 和 移位 按 补码规则 运算,乘积的符号自然形成, 被乘数任意,乘数为负,乘数y补,去掉符号位,操作同
33、,最后 加x补,校正,(1) 补码一位乘运算规则,以小数为例, Booth 算法,(被乘数、乘数符号任意),x y补,2-1,2-2,附加位 yn+1, Booth 算法递推公式,z0补= 0,z1补= 2-1(yn+1yn)x补+z0补 yn+1 = 0,zn补= 2-1(y2y1)x补+zn-1补,x y补= zn补+(y1y0)x补,最后一步不移位,如何实现 yi+1yi ?,0 0,0 1,1 0,1 1,0,1,-1,0,例,已知 x = +0.0011 y = 0.1011 求xy补,解:,0 0 . 0 0 0 0,1 1 . 1 1 0 1,1 1 . 1 1 0 1,0 0
34、. 0 0 1 1,1 1 . 1 1 0 1,0 0 . 0 0 1 1,1 1 . 1 1 0 1,1 . 0 1 0 1,0,x补 = 0.0011,y补 = 1.0101,x补 = 1.1101,+x补,+x补,+x补,+x补,+x补, xy补 =1.11011111,最后一步不移位,乘法小结,原码乘 符号位 单独处理 补码乘 符号位 自然形成,原码乘去掉符号位运算 即为无符号数乘法,不同的乘法运算需有不同的硬件支持,整数乘法与小数乘法完全相同 可用 逗号 代替小数点,3.6、二进制除法运算,1. 分析笔算除法,x = 0.1011 y = 0.1101 求 xy,0 . 1 0 1
35、1,0 . 1 1 0 1,0 . 0 1 1 0 1,0 . 0 1 0 0 1,0 . 0 0 1 1 0 1,0 . 0 0 0 1 0 1,0 . 0 0 0 0 1 1 0 1,0 . 0 0 0 0 0 1 1 1,1,商符单独处理,心算上商,余数不动低位补“0” 减右移一位的除数,上商位置不固定,商符心算求得,0,0 .,1,0,1,0,0,0,?,?,?,2. 笔算除法和机器除法的比较,商符单独处理,心算上商,符号位异或形成,| x | | y | 0 上商 1,| x | | y | 0 上商 0,2 倍字长加法器,上商位置 不固定,1 倍字长加法器,在寄存器 最末位上商,1
36、. 原码除法,以小数为例,被除数不等于 0,除数不能为 0,约定,原码除法的恢复余数法 思想:在上商时,要通过进行X - Y的运算,若XY,则减出的余数是负数,而要进行下一步除法,要把该负数变换为正数。恢复余数的方法就是在减得为负数的结果上,加回Y,将正确的余数恢复回来。,| x | | y | 0 ,上商 1,继续下一步的除法,即,| x | | y | 0 ,上商 0,恢复余数,即将刚才所减的结果加上| y | ,再继续下一步的除法,即,(1) 恢复余数法,0 . 1 0 1 1,1 . 0 0 1 1,1 . 0 0 1 1,1 . 0 0 1 1,0 . 0 0 0 0,+ y*补,0
37、,0 . 1 1 0 1,恢复余数,+ y*补,+y*补,解:,x原 = 1.1011 y原 = 1.1101,1,+y*补,y*补 = 0.1101 y*补 = 1.0011,1 . 0 0 1 1,0 . 1 1 0 1,1 . 0 0 1 1,+ y*补,恢复余数,+ y*补,上商 5 次,第一次上商判溢出,余数为正 上商 1,余数为负 上商 0,恢复余数,移 4 次,1,0,1,+y*补,(2) 不恢复余数法,余数 Ri0 上商 “1”,求下一步的余数,即: 2Ri y*,余数 Ri0 上商 “0”, Ri + y* 恢复余数,再左移 余数减Y,即:,2( Ri+y*) y* = 2R
38、i + y*,加减交替,恢复余数法运算规则,不恢复余数法运算规则,余数 Ri0,上商“1” 2Ri y*,余数 Ri0,上商“0” 2Ri + y*,(加减交替法),解:,例,0 . 1 0 1 1,1 . 0 0 1 1,0 . 1 1 0 1,1 . 0 0 1 1,1 . 0 0 1 1,0 . 1 1 0 1,0 . 0 0 0 0,+ y*补,0,+y*补,+ y*补,+ y*补,+y*补,x原 = 1.1011,y*补 = 0.1101,y*补 = 1.0011,y原 = 1.1101,1,1,0,1,逻辑左移,上商 n+1 次,例 结果,特点,用移位的次数判断除法是否结束,第一次
39、上商判溢出,移 n 次,加 n+1 次,(3) 原码加减交替除法硬件配置,A、X、Q 均 n +1 位,用 Qn 控制加减交替,Ri补= 0.1000,4. 补码除法,(1) 商值的确定,x补 = 0.1011,y补 = 1.1101,Ri补= 0.1000,x补 = 1.1101,y补 = 0.1011,x*y*,Ri补与y补同号,“够减”,x*y*,Ri补与y补异号,“不够减”,+,+, 比较被除数和除数绝对值的大小,x 与 y 同号,小结,x补 = 0.1011,y补 = 1.1101,Ri补= 0.1000,x补 = 1.1101,y补 = 0.1011,Ri补= 0.1000,x*y
40、*,Ri补与y补异号,“够减”,x*y*,Ri补与y补同号,“不够减”,+,+,x 与 y 异号, 商值的确定,x补与 y补同号,正商,按原码上商,x补与 y补异号,负商,按反码上商,末位恒置“1”法,小 结,简 化 为,(同号),(异号),(异号),(同号),(2) 商符的形成,除法过程中自然形成,x补和y补同号,x补y补,比较Ri补和y补,同号(够)“1”,异号(不够)“0”,原码上商,小数除法 第一次“不够”上“0”,正商,x补和y补异号,x补+y补,比较Ri补和y补,异号(够)“0”,同号(不够)“1”,反码上商,小数除法 第一次“不够”上“1”,负商,(3) 新余数的形成,加减交替,
41、例,解:,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”,异号上“0”,+y补,异号上“0”,+y补,同号上“1”,末位恒置“1”,0,0,1,1,+y补,逻辑左移,(4) 小结,补码除法共上商 n +1 次(末位恒置 1) 第一次为商符,加 n 次 移 n 次,第一次商可判溢出,精度误差最大为 2-n,3.7 浮点数的四则运算,在定点数运算方法的基础上,讨论浮点数的加、减、
42、乘、除四则运算。,一、浮点加减运算,x = Sx 2jx,y = Sy 2jy,1. 对阶(即对齐小数点的过程),(1) 求阶差,(2) 对阶原则,j = jx jy =,jx= jy 已对齐,jx jy,jx jy,x 向 y 看齐,y 向 x 看齐,x 向 y 看齐,y 向 x 看齐,小阶向大阶看齐(尾数右移),jx1,jy+1,jx+1,jy1,2. 尾数求和,按照双符号位的补码运算规则,对尾数进行加减计算。,3. 规格化,(1) 判断所得的结果是否是规格化数。,S0,补码,反码,规格化形式,S 0,规格化形式,补码,反码,原码 不论正数、负数,第一数位为1,补码 符号位和第 1 数位不
43、同,(2) 所得的结果若不是规格化数,则要做相应的左规或右规。,特例,S = 1, 1补 是规格化的数,左规 尾数每左移 1 位,阶码减 1,右规 尾数每右移 1 位,阶码加 1,4. 舍入,在 对阶 和 右规 过程中,可能出现 尾数末位丢失 引起误差,需考虑舍入,(1) 0 舍 1 入法,(2) 恒置 “1” 法,5. 溢出判断(判断阶是否超出了表示范围),设机器数为补码,尾数为 规格化形式,并假 设阶符取 2 位,阶码取 7 位,数符取 2 位,尾数 取 n 位,则该 补码 在数轴上的表示为,2127(1), 2-128(2-1+ 2-n),2-1282-1,2127(12-n),阶码 0
44、1, ,阶码 01, ,阶码 10, ,按机器零处理,图3.8 规格化浮点数加减运算流程,例如,解:,x补 = 00, 01; 00.1101 y补 = 00, 11; 11.0110,1. 对阶,j补 = jx补 jy补,= 00, 01,11, 01,11, 10,阶差为负( 2),11.1001, x+y补 = 00, 11; 11. 1001, 对阶,x补 = 00, 11; 00.0011,+,+,对阶后的Sx补, 求阶差,2. 尾数求和,x+y补 = 00, 11; 11. 1001,左规后 x+y补 = 00, 10; 11. 0010, x + y = ( 0.1110)210
45、,解:,x补 = 00, 010; 00. 110100,y补 = 00, 001; 00. 101100, 对阶, 尾数求和,j补 = jx补 jy补,= 00, 010,11, 111,100, 001,阶差为 +1, y补 = 00, 010; 00. 010110,Sx补 = 00. 110100,Sy补 = 00. 010110,对阶后的Sy补,01. 001010,+,+,尾数溢出需右规,例:, 右规,x +y补 = 00, 010; 01. 001010,x +y补 = 00, 011; 00. 100101,右规后, x +y = 0. 100101 211,舍入处理,无溢出。
46、,例,解:,x补 = 11, 011; 11. 011000,y补 = 11, 100; 00. 111000, 对阶,j补 = jx补 jy补,= 11, 011,00, 100,11, 111,阶差为 1, x补 = 11, 100; 11. 101100,x = ( 0.101000)2-101,y = ( 0.111000)2-100,+, 尾数求和,Sx补 = 11. 101100,Sy补 = 11. 001000,+,110. 110100, 右规,x+y补 = 11, 100; 10. 110100,x+y补 = 11, 101; 11. 011010,无溢出,右规后, x y
47、= (0.100110)2-11,二、浮点乘除运算,x = Sx 2jx,y = Sy 2jy,1. 乘法,x y = (Sx Sy)2jx+jy,2. 除法,(1) 阶码采用 补码定点加(乘法)减(除法)运算,(2) 尾数乘除同 定点 运算,4. 浮点运算部件,阶码运算部件,尾数运算部件,3. 步骤,(3) 规格化 (4)舍入 (5) 判溢出,3.8算术逻辑单元,一、ALU 电路,组合逻辑电路 Ki 不同取值 Fi 不同,四位 ALU 74181,M = 0 算术运算,M = 1 逻辑运算,S3 S0 不同取值,可做不同运算,二、快速进位链,1. 并行加法器,= Ai Bi + (Ai+Bi
48、)Ci-1,di = Ai Bi 本地进位,ti = Ai + Bi 传送条件,则 Ci = di + tiCi-1,2. 串行进位链,进位链,传送进位的电路,串行进位链,进位串行传送,以 4 位全加器为例,每一位的进位表达式为,C0 = d0 + t0C-1,C1 = d1 + t1C0,C2 = d2 + t2C1,C3 = d3 + t3C2,4 位 全加器产生进位的全部时间为 8ty,n 位全加器产生进位的全部时间为 2nty,设与非门的级延迟时间为ty,3. 并行进位链,n 位加法器的进位同时产生,以 4 位加法器为例,C0 = d0 + t0C-1,C1 = d1 + t1C0,C
49、2 = d2 + t2C1,C3 = d3 + t3C2,= d1 + t1d0 + t1t0C-1,= d2 + t2d1 + t2t1d0 + t2t1t0C-1,= d3 + t3d2 + t3t2d1 + t3t2t1d0 + t3t2t1t0C-1,(先行进位,跳跃进位),当 di ti 形成后,只需 2.5ty 产生全部进位,设与或非门的延迟时间为 1.5ty,n 位全加器分若干小组,小组中的进位同时产生, 小组与小组之间采用串行进位,当 di ti 形成后,经 2.5 ty,5 ty,7.5 ty,1 0 ty,(1) 单重分组跳跃进位链,产生 C3 C0,产生 C7 C4,产生
50、 C11 C8,产生 C15 C12,以 n = 16 为例,(2) 双重分组跳跃进位链,n 位全加器分若干大组,大组中又包含若干小组。每个大组中小组的最高位进位同时产生。大组与大组之间采用串行进位。,以 n = 32 为例,(3) 双重分组跳跃进位链 大组进位分析,C3 = d3 + t3C2 = d3 + t3d2 + t3t2d1 + t3t2t1d0 + t3t2t1t0C-1,以第 8 小组为例,D8 小组的本地进位 与外来进位无关,T8 小组的传送条件 与外来进位无关 传递外来进位,C7 = D7 + T7C3,C11= D6 + T6C7,进一步展开得,C15 = D5 + T5
51、C11,C3 = D8+T8C-1,C7 = D7+T7C3,C11 = D6+T6C7,C15 = D5+T5C11,第 7 小组,第 6 小组,第 5 小组,同理,D8,T8,= D7+T7D8+T7T8C-1,= D6+T6D7+T6T7D8+T6T7T8C-1,= D5+T5D6+T5T6D7+T5T6T7D8+T5T6T7T8C-1,(4) 双重分组跳跃进位链的大组进位线路,以第 2 大组为例,(5) 双重分组跳跃进位链的小组进位线路,以第 8 小组为例,只产生 低 3 位 的进位和 本小组的 D8 T8,(6) n =16 双重分组跳跃进位链,C1412,C108,C64,C20,
52、C-1,经 5 ty,经 7.5 ty,经 3 2 ty,经 1 0 ty,产生 C2、C1、C0、D5 D8、T5 T8,产生 C15、 C11、 C7、 C3,产生 C14C12、 C10C8 、 C6C4,产生 全部进位,产生 全部进位,经 2.5 ty,当 di ti 和C-1形成后,串行进位链,单重分组跳跃进位链,(7) n =32 双重分组跳跃进位链,当 di ti 形成后,产生 C2、C1、C0、D1 D8、T1 T8,产生 C15、 C11、 C7、 C3,产生 C18 C16、 C14C12、 C10C8 、 C6C4 C31、 C27、 C23、 C19,产生 C30C28
53、、 C26 C24、 C22 C20,经 2.5 ty,5 ty,7.5 ty,1 0 ty,3.8 数据校验码,计算机系统中的数据,在读写、存取和传送的过程中可能产生错误。为减少和避免这类错误,一方面是精心设计各种电路,提高计算机硬件的可靠性;另一方面是在数据编码上找出路,即采用某种编码法,通过少量的附加电路,使之能发现某些错误,甚至能确定出错位置,进而实现自动改错的能力。 数据校验码是一种常用的带有发现某些错误或自动改错能力的数据编码方法。,它的实现原理,是加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码。这样,就可以通过检测编码的合法性来达到发现错误的目的。合理地安排非法编码
54、数量和编码规则,就可以提高发现错误的能力,或自动改正错误的目的。这里用到一个码距的概念。码距是根据任意两个合法码之间至少有几个二进制位不相同而确定的,仅有一位不同,称其码距为1。,一般来说,合理地增大码距,就能提高发现错误的能力,但码所使用的二进制位数变多,增加了数据存储的容量或数据传送的数量。在确定与使用数据校验码的时候,通常要考虑在不过多增加硬件开销的情况下,尽可能发现或改正更多的错误。,一、 奇偶校验码 奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码,常用于存储器读写检查,或ASCII字符传送过程中的检查。它的实现原理,是使码距由1增加到2。若编码中有一个二进制位的值出错了,由1变成0,或由0变成1,这个码都将成为非法编码。,具体来说, 奇校验就是加入一位校验位,使被校验的数据位和校验位中的“1”的个数为奇数个; 偶校验就是加入一位校验位,使被校验的数据位和校验位中的“1”的个数为偶数个。,0 1 1 0 1 0 1 0 1 0,1 0 1 0 1 1 0 1 0 1,接收方会根据收到的被校验的数据和校验位一起重新对数据进行校验,由此可以发现错误。 如: 0 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 氯气课件总结
- 疫情知识培训资料课件
- 氢能源知识培训内容课件
- S-Methyl-2-6-hydroxy-2-3-dihydrobenzofuran-3-yl-acetate-生命科学试剂-MCE
- Secretin-canine-TFA-生命科学试剂-MCE
- 氢气基础知识培训课件
- 涉氨水企业安全知识培训课件
- Unit 2 We are family Section B 1a-1d 说课稿 2024-2025学年人教版英语七年级上册
- 疫情消毒知识与技能培训课件
- 2025年银行会计学试题(附答案)
- (2025年标准)学生癫痫免责协议书
- 电商企业客服流失的问题及解决对策研究
- 血常规及凝血功能解读
- 2025-2026学年人教版(2024)初中生物八年级上册(全册)教学设计(附目录)
- 2025年华为自动化控制试题
- (2025年)江苏省南通市辅警协警笔试笔试模拟考试试题含答案
- 学堂在线 生活英语听说 章节测试答案
- 抗菌药物合理应用培训
- 2024年陕西延长石油招聘真题
- 动态关系网络分析-洞察及研究
- 26.《方帽子店》课件
评论
0/150
提交评论