运算方法和运算器
- 格式:doc
- 大小:46.50 KB
- 文档页数:7
第三章运算方法与运算器3.1定点数运算及溢出检测随堂测验1、定点运算器可直接进行的运算是() (单选)A、十进制数加法运算B、定点数运算C、浮点数运算D、定点数和浮点数运算2、设计计算机字长为8位,两个十进制数X = -97 ,Y = 63, [x]补- [y]补的结果为()(单选)A、01100000B、11011110C、负溢出D、正溢出3、下列关于定点运算溢出的描述中,正确的是( ) (多选)A、补码数据表时,同号数相加可能发生溢出B、补码数据表时,异号数相减可能发生溢出C、参加运算的两个数,当作为有符号数和无符号数进行加法运算时,不可能两者都溢出D、溢出检测既可用硬件实现,也可用软件实现4、设X为被加(减)数,Y为加(减)数,S为运算结果,均采用补码数据表示,下列关于溢出电路设计的描述中,正确的是()(多选)A、采用单符号位时,直接用X、Y和S的符号位就可设计溢出监测电路B、采用双符号位时,可直接用S的双符号位设计溢出检测电路C、采用单符号位时,可直接用X、Y最高有效数据位运算后的进位位和S的进位设计溢出监测电路D、对无符号数的加/减运算,可利用运算器的进位信号设计溢出检测电路3.2 定点数补码加、减运算器设计随堂测验1、如图所示为基于FA的运算器:为了利用一位全加器FA并配合使用控制信号P,当P= 0/1时实现A、B两个数的加法/减法运算,图中空白方框处电路的逻辑功能应该是()(单选)A、与门B、或门C、异或门D、非门2、如图所示为带溢出检测功能的运算器该电路完成的溢出检测功能是()(多选)A、带符号数的加法溢出检测B、带符号数的加法溢出检测C、无符号数的加法溢出检测D、无符号数减法的溢出检测3、下列关于并行进位的描述中,正确的是()(多选)A、并行进位可以提高运算速度B、并行进位模式下,各进位位采用不同电路各自产生,相互间不再有依存关系C、采用先行进位部件和ALU模块可构建长度可变的并行进位运算器D、并行进位只对加法有效,而对减法无效4、四位并行ALU中有两个特殊的输出端,分别是:G =A3B3+(A3+B3)(A2B2+(A2+B2)(A1B 1+ (A1+B1) A 0B0)) 为进位产生函数,P=(B3+A3) (B2+A2)( A1+B1 ) (A0+B0)为进位传递函数下列关于P、G的描述中,正确的是()(多选)A、设计P和G的目的是为了构建位数更长的并行ALUB、P和G对算术运算和逻辑运算都有意义C、P的作用是将本片ALU的最低进位输入位传递到本片ALU的最高进位输出端D、G的作用是根据参与运算的两个数据产生本片ALU的最高进位输出3.3 原码一位乘法随堂测验1、设计算机字长为8位,X = - 19,对该分别执行算术左移和逻辑左移一位后的结果分别为()(单选)A、11011010 ,11011010B、11110010 ,11110010C、11011000 ,11011000D、11110000 ,111100002、设计算机字长为8位,X = - 19,对该分别执行算术右移和逻辑右移一位后的结果分别为()(单选)A、11111001,11111001B、11111001,01111001C、11110110,01110110D、11110110,111101103、关于原码一位乘法的下列描述中,正确的是()(多选)A、数据取绝对值参加运算B、符号位单独处理C、乘法执行过程中的所有移位都是算术移位D、最后的结果由部分积寄存器和乘数寄存器共同保存4、计算机字长为n位, 下列关于原码一位乘法操作过程的描述中,正确的是() (多选)A、乘法过程中共执行n 次算术右移和n 次加法运算B、乘法过程中共执行n -1次算术右移和n-1 次加法运算C、乘法过程中,部分积加0 还是加x的绝对值,取决于此时的YnD、乘法过程中右移部分积是为了使部分积与下次的加数按位对齐3.4 补码一位乘法随堂测验1、16位补码0X 8FA0扩展为32位的结果是() (单选)A、0X 0000 8FA0B、0X FFFF 8FA0C、0X FFFF FFA0D、0X8000 8FA02、计算机字长为n位, 下列关于补码一位乘法操作过程的描述中,正确的是() (多选)A、乘法过程中共执行n 次加法和n-1 部分积右移B、乘法过程中共执行n -1次算术右移和n-1 次加法运算C、乘法过程中,部分积加0 、[x]补还是[-x]补,取决于此时的Yn+1 与Yn的差D、乘法过程中右移部分积的目的是为了使部分积与下次的加数对齐3、关于补码码一位乘法的下列描述中,正确的是()(多选)A、符号位和数据位一起参加运算B、运算开始前,需要在乘数寄存器Y后面补上Yn+1且其初值为0C、乘法执行过程中的对部分积的移位是算术右移D、最后的结果由部分积寄存器和乘数寄存器共同保存3.5 乘法运算器设计随堂测验1、下图为原码一位乘法器原理图正确的是()(单选)A、A: 部分积寄存器B:乘数寄存器C: |X| D: YnB、A: 部分积寄存器B:乘数寄存器C: |X| D: Yn+1C、A: 被乘数寄存器B:乘数寄存器C: |X| D: YnD、A: 被乘数寄存器B:乘数寄存器C: |X| D: Yn+12、下图为补码一位乘法原理图正确的是() (单选)。
第三章运算方法和运算器3.1补码的移位运算1、左移运算:各位依次左移,末位补0对于算术左移,若没有改变符号位,左移相当于乘以2。
2、右移运算:算术右移:符号位不变,各位(包括符号位)依次右移。
(相当于除以2)逻辑右移:最高位补0,其余各位依次右移例1:已知X=0.1011 ,Y=-0.0101 求 [0.5X]补;[0.25X]补;[-X]补;2[-X]补;[0.5Y]补;[0.25Y]补; [-Y]补;2[-Y]补[X]补=0.1011 [Y]补=1.1011[0.5X]补=0.01011 [0.5Y]补=1.11011[0.25X]补=0.001011 [0.25Y]补=1.111011[-X]补=1.0101 [-Y]补=0.01012[-X]补=0.1010 (溢出) 2[-Y]补=0.10103.2定点加减法运算及其实现3.2.1 补码加减法运算方法由于计算机中的进行定点数的加减运算大都是采用补码。
(1)公式:[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补(证明过程见教材P38)例1 X=0.001010 Y=-0.100011 求[X-Y]补,[X+Y]补解:[X]补=0.001010 [-Y]补=0.100011则 [X-Y]补=[X]补+[-Y]补=0.001010 + 0.100011=0.101101 [X]补=0.001010 [Y]补=1.011101则 [X+Y]补=[X]补+[Y]补=0.001010 + 1.011101=1.100111例2:已知X=+0.25,Y=-0.625,求X+Y; X-Y写出计算的过程.例3:已知X=25,Y=-9,求X+Y; X-Y写出计算的过程.例4:已知X=-25,Y=-9,求X+Y; X-Y写出计算的过程.解: (8位二进制表示)例2: X=0.0100000 Y=-0.1010000[X]补=0.0100000 [Y]补=1.0110000则 [X+Y]补=[X]补+[Y]补=0.0100000 + 1.0110000=1.1010000[X+Y]原=-0.0110000=(-0.375)D[X]补=0.0100000 ,[-Y]补=0.1010000则 [X-Y]补 = [X]补+[-Y]补 = 0.0100000+0.1010000=0.1110000[X+Y]原 = 0.1110000 =(0.875)D例3: X=+0011001 Y=-0001001[X]补=00011001,[Y]补=11110111则 [X+Y]补 = [X]补+[Y]补= 00011001 + 11110111= 00010000[X+Y]原 =+0010000=(+16)D[X]补= 00011001 ,[-Y]补= 00001001则 [X-Y]补 = [X]补+[-Y]补= 00011001 + 00001001= 00100010[X+Y]原 = +0100010 =(34)D例4: X=-0011001 Y=-0001001[X]补=11100111,[Y]补=11110111则 [X+Y]补 = [X]补+[Y]补= 11100111 + 11110111[X+Y]原 =-00100010=(-34)D[X]补= 11100111 ,[-Y]补= 00001001则 [X-Y]补 = [X]补+[-Y]补= 11100111 + 00001001= 11110000[X+Y]原 = -0010000 =(-16)D3.2.2 定点加减法运算中的溢出问题溢出:运算结果大于机器所能表示的最大正数或者小于机器所能表示的最小负数.溢出只是针对带符号数的运算.比如:[X]补=0.1010,[Y]补=0.1001,那么[X]补+[Y]补=1.0011(溢出)溢出是一种错误,计算机中运算时必须能够发现这个现象,并加以处理判断溢出的方法:1、采用变形补码法[X+Y] 变补=[X] 变补+[Y] 变补[X-Y] 变补=[X] 变补+[-Y] 变补例1 X=0.1011 Y=0.0011 求[X+Y]补解: [X]变补 = 00.1011, [Y]变补 = 00.0011[X+Y]变补 = 00.1011 + 00.0011 = 00.1110所以 [X+Y]补 = 0.1110例2 X=0.1011 Y=0.1001 求[X+Y]补解: [X]变补 = 00.1011 [Y]变补 = 00.1001[X+Y]变补 = 00.1011 + 00.1001 = 01.0100运算结果的两符号位是01,不相同,发生溢出,因第一符号位是0,代表正数,所以称这种溢出为“正溢出”。
第二章运算方法与运算器2.1.1 数值数据在机内的表示在选择计算机的数值数的表示方式时,需要考虑以下几个因素:(1)要表示的数的类型(小数、整数、实数和复数);(2)可能遇到的数值范围;(3)数值精确度;(4)数据存储和处理所需要的硬件代价。
2.1.1.1 定点数与浮点数计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。
1. 定点数表示法(fixed-point)所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。
在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。
一般常称前者为定点小数,后者为定点整数。
定点小数是纯小数,约定的小数点位置在符号位之后、有效数值部分最高位之前。
2. 浮点数表示法(floating-point number)与科学计数法相似。
2.1.1.2 数的机器码表示1. 原码表示法原码表示法是一种比较直观的表示方法,其符号位表示该数的符号,正用“0”表示,负用“1”表示;而数值部分仍保留着其真值的特征。
2. 补码表示法由于计算机的运算受一定字长的限制,属于有模运算,所以,在计算机中可以使用补码进行计算。
在定点小数机器中数最大不超过1,也就是负的小数对“1”的补码是等价的。
但实际上,负数的符号位还有一个“1”,要把它看成数的一部分,所以要对2求补码,也就是以2为模数。
3. 反码表示方法反码表示法中,符号的表示法与原码相同。
正数的反码与正数的原码形式相同;负数的反码符号位为1,数值部分通过将负数原码的数值部分各位取反(0变1,1变0)得到。
4. 移码表示法移码通常用于表示浮点数的阶码。
2.1.2 非数值数据在机内的表示计算机中数据的概念是广义的,机内除了有数值的信息之外,还有数字、字母、通用符号、控制符号等字符信息有逻辑信息、图形、图像、语音等信息,这些信息进入计算机都转变成0、1表示的编码,所以称为非数值数据。
2.1.2.1 字符的表示方法字符主要指数字、字母、通用符号、控制符号等,在机内它们都被变换成计算机能够识别的十进制编码形式。
这些字符编码方式有很多种,国际上广泛采用的是美国国家信息交换标准代码(AmericanStandard Code for Information Interchange),简称ASCII 码。
2.1.2.2 汉字的表示方法1. 汉字的输入码目前,计算机一般是使用西文标准键盘输入的,为了能直接使用西文标准键盘输入汉字,必须给汉字设计相应的输入编码方法。
其编码方案有很多种,主要的分为三类:数字编码、拼音码和字形编码。
2. 汉字的内码3. 汉字字形码2.2.1 补码加法运算补码加法的公式是:[ x ]补+ [ y ]补= [ x + y ]补( mod 2 )含义是:两个数的补码之和等于两个数之和的补码。
2.2.2 补码减法运算[x-y]补=[x]补-[y]补=[x]补+[-y]补( mod 2 )2.2.3 溢出概念及检测方法在计算机中,若采用定点小数,数的表示范围为|x|<1,如果出现运算结果超出数的表示范围的现象,就称为溢出。
在采用定点整数的情况下,由于机器字长一定,所以能表示的数据范围也是有限的,仍存在溢出问题。
产生溢出会丢失有效数字,结果将是错误的,因此,必须解决溢出的判断问题,当计算过程中出现溢出时,能及时处理。
两个正数相加,结果大于机器所能表示的最大正数,称为正溢。
而两个负数相加,结果小于机器所能表示的最小负数,称为负溢。
为了判断“溢出”是否发生,可采用两种检测方法。
1.变形补码操作检测方法2.单符号位操作检测方法2.2.4 基本的二进制加法/减法器重点介绍一位全加器(FA)。
2.3.1 原码一位乘法。
在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号按异或运算得到,而乘积的数值部分则是两个正数相乘之积。
设n位被乘数和乘数用定点小数表示(定点整数也同样适用)被乘数[x]原= xf .x0 x1 x2 …xn乘数[y]原= yf .y0 y1 y2 …yn则乘积[ z ]原= ( xf⊕yf ) . (0. x0 x1 x2 …xn)(0 . y1 y2 …yn)式中,xf为被乘数符号,yf为乘数符号。
乘积符号的运算法则是:同号相乘为正,异号相乘为负。
由于被乘数和乘数和符号组合只有四种情况(xf yf = 00,01,10,11),因此积的符号可按“异或”(按位加)运算得到。
数值部分的运算方法与普通的十进制小数乘法相类似,不过对于用二进制表达的数来说,其乘法规则更为简单一些:从乘法y的最低位开始,若这一位为“1”,则将被乘数x写下;若这一位为“0”,则写下全0。
然后再对乘数y的高一位进行的乘法运算,其规则同上,不过这一位乘数的权与最低位乘数的权不一样,因此被乘数x要左移一位。
依次类推,直到乘数各位乘完为止,最后将它们统统加起来,便得到最后乘积z 。
2.3.2 补码一位乘法原码乘法的主要问题是符号位不能参加运算,单独用一个异或门产生乘积的符号位。
故自然提出能否让符号数字化后也参加乘法运算,补码乘法就可以实现符号位直接参加运算。
2.4.1 原码一位除法两个原码表示的数相除时,商的符号由两数的符号按位相加求得,商的数值部分由两数的数值部分相除求得。
设有n位定点小数(定点整数也同样适用):被除数x,其原码为[x]原= xf . x1 x2 …xn除数y,其原码为[y]原= yf . y1 y2 …yn设商为q = x/y,其原码为[q]原= ( xf⊕yf ). ( x1 x2 …xn / y1 y2 …yn )商的符号运算qf= xf⊕yf 与原码乘法一样,用模2求和得到。
商的数值部分的运算,实质上是两正数求商的运算。
根据我们所熟知的十进制除法运算方法,很容易得到二进制数的除法运算方法,所不同的只是在二进制中,商的每一位不是“1”就是“0”,其运算法则更简单一些。
1.恢复余数法事实上,机器的运算过程和人毕竟不同,人会心算,一看就知道够不够减。
但机器却不会心算,必须先做减法,若余数为正,才知道够减;若余数为负,才知道不够减。
不够减时必须恢复原来的余数,以便再继续往下运算,这种方法称为恢复余数法。
要恢复原来的余数,只要当前的余数加上除数即可。
2.加减交替法对恢复余数法来说,由于要恢复余数,使除法进行过程的步数不固定,因此控制比较复杂。
实际上常用不恢复余数法,又称加减交替法。
其特点是运算过程中如出现不够减,则不必恢复余数,根据余数符号,可以继续往下运算,因此步数固定,控制简单。
原码加减交替法的规则是:当余数为正时,商“1”,余数左移一位减除数;当余数为负时,商“0”,余数左移一位,加除数。
2.4.2 补码一位除法补码除法的被除数、除数用补码表示,符号位和数值位一起参加运算,商的符号位与数值位由统一的算法求得。
1.补码加减交替法算法在补码一位除法中也必须比较被除数(余数)和除数的大小,并根据比较的结果来上商。
另外,为了避免溢出,商的绝对值不能绝对值大于1,即被除数的绝对值一定要小于除数的绝对值。
补码加减交替除法的算法规则如下:(1) 被除数与除数同号,被除数与减去除数;被除数与除数异号,被除数加上除数。
(2) 余数和除数同号,商为1,余数左移一位,下次减除数;余数和除数异号,商为0,余数左移一位,下次加除数。
(3) 重复步骤(2),包括符号位在内,共做n+1步。
2.商的校正补码一位除法的算法是在商的末位“恒置1”的舍入条件下推导的。
按照这种算法所得到的有限位商为负数时,是反码形式。
而正确需要得到的商是补码形式,两者之间至多是相关末位的一个“1”,这样引起的最大误差是2 - n。
在对商的精度没有特殊要求的情况下,一般采用商的末位“恒置1”的方式进行舍入,这样处理的好处是操作简单,便于实现。
如果要求进一步提高商的精度,可以不用“恒置1”的方式舍入,而按上述法则多求一位后,再采用如下校正方法对商进行处理:(1) 刚好能除尽时,如果除数为正,商不必校正;如果除数为负,则商加2 - n。
(2) 不能除尽时,如果商为正,则不必校正;如果商为负,则商加2 - n。
2.5.1 逻辑非逻辑非也称求反。
对某数进行逻辑非运算,就是按位求它的反,常用变量上方加一横来表示。
2.5.2 逻辑加对两个数进行逻辑或,就是按位求它们的“或”,所以逻辑或又称逻辑加,常用记号“V “或“+”来表示。
2.5.3 逻辑乘对两数进行逻辑与,就是按位求它们的“与”,所以逻辑与又称逻辑乘,常用记号“∧”或“·”来表示。
2.5.4 逻辑异或对两数进行逻辑异或就是按位求它们的模2和,所以逻辑异或又称按位加,常用记号“⊕”来表示。
2.6.1 多功能算术/逻辑运算单元(ALU)了解74181ALU算术/逻辑运算功能表,并结合实验内容完成本部分的教学工作。
2.6.2 内部总线由于计算机内部的主要工作过程是信息传送和加工的过程,因此在机器内部各部件之间的数据传送非常频繁。
为了减少内部数据传送线并便于控制,通常将一些寄存器之间数据传送的通路加以归并,组成总线结构,使不同来源的信息在此传输线上分时传送。
因此,所谓总线,就是一个或多个信息源传送信息到多个目的的数据通路,它是多个部件之间传送信息的一级传输线。
根据总线所处的位置,总线分为内部总线和外部总线两类。
内部总线是指CPU内各部件的连线,而外部总线是指系统总线,即CPU与存储器、I/O系统之间的连线。
本节只讨论内部总线。
按总线的逻辑结构来说,总线可分为单向传送总线和双向传送总线。
所谓单向总线,就是信息只能向一个方向传送。
所谓双向总线,就是信息可以向两个方向传送,即可以发送数据,也可以接收数据。
总线的逻辑电路往往是三态的,即输出电平有三种状态:逻辑“1”、逻辑“0”和“浮空”状态。
三态缓冲器是靠在“允许/禁止”输入端来禁止其操作的,禁止时,输出呈现高阻抗状态。
在高阻抗状态下,可以认为输出与电路的其他部分被断开。
2.6.3 定点运算器的基本结构运算器包括ALU、阵列乘除器、寄存器、多路开关、三态缓冲器、数据总线等逻辑部件。
运算器的设计,主要是围绕着ALU和寄存器同数据总线之间如何传送操作数和运算结果而进行的。
在决定方案时,需要考虑数据传送的方便性和操作速度,在微型机和单片机中还要考虑在硅片上制作总线的工艺。
计算机的运算器大体有如下三种结构形式:1.单总线结构的运算器2.双总线结构的运算器3.三总线结构的运算器2.6.4浮点运算器实例(了解)2.7.1 浮点加法和减法完成浮点加减运算的操作过程大体分为四步:1. 0 操作数的检查;2. 比较阶码大小并完成对阶;3. 尾数进行加或减运算;4. 结果规格化并进行舍入处理。