版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 运算方法和运算部件,早期的计算机是作为计算工具而应用于科学研究和军事领域的,对数据进行快速运算是促进计算机诞生和早期发展的动力。 目前计算机的应用范围大大扩展了,但是数值在计算机中是如何表示的,怎样进行运算,如何实现运算仍是最最基本的问题,也是本章要讨论的课题。,第3章 运算方法和运算部件,3.1 数值的表示方法和转换 3.2 带符号的二进制数据在计算机中的 表示方法及加减法运算 3.3 二进制乘法运算 3.4 二进制除法运算 3.5 浮点的运算方法 3.6 运算部件 3.7 数据校验码,3.1 数值的表示方法和转换,3.1.1 数值型数据的表示和转换 3.1.2 十进制数的编码与运算
2、,3.1.1 数值型数据的表示和转换,进位计数制 进位制:凡是用数字符号排列,按由低位到高位进位计数的方法叫做进位计数,简称进位制。 进位制涉及的两个基本要素: 基数 位权,3.1.1 数值型数据的表示和转换,基数 一种进位制允许选用基本数字符号的个数叫做基数。 位权 每个数字符号所表示的数值等于该数字符号值乘以一个数码所在位有关的常数,这个常数叫做“位权”,简称“权”。 位权的大小是以基数为底,数码所在位置的序号为指数的整数次幂。,3.1.1 数值型数据的表示和转换,十进制每位的值等于该位的权与该位数码的乘积。 一个十进制可以写成按权展开的多项式和的形式。 例如: 789.23 710281
3、01910021013102,3.1.1 数值型数据的表示和转换,例:写出(1101.01)2,(237)8,(10D)16的十进制数 (1101.01)2= 123 + 122 + 021 + 120 + 02-1 + 12-2 = 8 + 4 + 1 + 0.25 = 13.25 (237)8 = 282 + 381 + 780 = 128 + 24 + 7 = 159 (10D)16 = 1162 + 13160 = 256 + 13 = 269,3.1.1 数值型数据的表示和转换,二进制数、八进制数、十六进制数和十进制数之间的关系见表:,3.1.1 数值型数据的表示和转换,不同数制间的
4、数据转换 二进制数、八进制数和十六进制数之间的转换 二进制数转换成十进制数 十进制数转换成二进制数 十进制数转换成八进制数,3.1.1 数值型数据的表示和转换,二进制数、八进制数和十六进制数之间的转换 二进制的不足之处:在绝大多数情况下比同等数值的十进制数占用更多的位数。 二进制转换成八进制时,以小数点为分界线,整数部分从低位到高位,小数部分从高位到低位,每3位二进制为一组,不足三位的,小数部分在低位补0,整数部分在高位补0,然后用1位八进制的数字来表示。 二进制与十六进制之间的转换方法类似二进制与八进制之间的转换方法,每4位二进制为一组。 八进制数与十六进制数之间的转换,可将二进制数作为中间
5、媒介进行转换。,3.1.1 数值型数据的表示和转换,例: (1 101.010 1)2 = (001 101.010 100)2 = (15.24)8 (1 1101.0101)2 = (0001 1101.0101)2 = (1D.5)16 (15.24)8 = (001 101.010 100)2 = (1101.0101)2,3.1.1 数值型数据的表示和转换,二进制数转换成十进制数 利用数制公式计算。 十进制数转换成二进制数 整数转换方法除基取余法 小数转换方法乘基取整法,3.1.1 数值型数据的表示和转换,整数转换方法除基取余法 例:把十进制数205转换成二进制数。 换算结果: (2
6、05)10(1 1 0 0 1 1 0 1)2,3.1.1 数值型数据的表示和转换,小数转换方法乘基取整法 例:把十进制小数0.8125转换成二进制数。 换算结果: (0.8125)10(0. 1 1 0 1)2,3.1.1 数值型数据的表示和转换,注: 并不是所有的十进制小数都能转换成有限位二进制小数并出现乘积的小数部分为0的情况,有时整个换算过程无限进行下去。(例:0.2) 此时可以根据精度要求并考虑计算机字长位数取一定长度的位数后四舍五入,这样得到的二进制数是原十进制数的近似值。 当一个数既有整数部分又有小数部分时,分别进行转换后再进行拼接。,3.1.1 数值型数据的表示和转换,十进制数
7、转换成八进制数 参照十进制数转换成二进制数的方法,将基数2改为8,即可实现转换。,3.1.1 数值型数据的表示和转换,数据符号的表示 数据的数值通常以正()负()号后跟绝对值来表示,称之为“真值”。 在计算机中正负号也需要数字化,一般用0表示正号,1表示负号。 正号有时可省略。,3.1 数值的表示方法和转换,3.1.1 数值型数据的表示和转换 3.1.2 十进制数的编码与运算,3.1.2 十进制数的编码与运算,十进制数位的编码与运算:在计算机中采用4位二进制码对每个十进制数位进行编码。 有权码 无权码 数字串在计算机内的表示与存储 字符形式 压缩的十进制数形式,3.1.2 十进制数的编码与运算
8、,有权码 表示一位十进制数的二进制码的每一位有确定的权。 一般用8421码,其4个二进制码的权从高到低分别为8、4、2和1。 用0000,0001,1001分别表示0,1,9,每个数位内部满足二进制规则,而数位之间满足十进制规则,故称这种编码为“以二进制编码的十进制(binary coded decimal,简称BCD)码”。,3.1.2 十进制数的编码与运算,8421BCD与十进制数的关系(有权码),3.1.2 十进制数的编码与运算,8421码实现加、减运算时的修正规则: 4位一组二进制数,两个8421码表示的数相加之和等于或小于1001,即十进制的9时,不需要修正,在各组内,二进制代码相加
9、,仍遵循“逢二进一”的规则。 4位一组二进制数,两个8421码相加结果大于1001(即十进制9)时,则应该对该组的4位进行“加6修正”,使它向高一组产生进位。 4位一组二进制数,两个8421码相加结果大于或等于10000(即十进制16),而向高一组进位时,则应该对该4位进行“加6修正”。,3.1.2 十进制数的编码与运算,另外几种有权码,如2421,5211,4311码,也是用4位二进制码表示一个十进制数位,但4位二进制码之间不符合二进制规则。 这几种有权码有一特点,即任何两个相加之和等于(9)10的二进制码互为反码。,3.1.2 十进制数的编码与运算,3.1.2 十进制数的编码与运算,无权码
10、 表示一个十进制数位的二进制码的每一位没有确定的权。用得较多的是余3码(Excess-3 Code)和格雷码(Gray Code),格雷码又称“循环码”。 余3码是在8421码基础上,把每个编码都加上0011而形成的,其运算规则是: 当两个余3码相加不产生进位时,应从结果中减去0011; 产生进位时,应将进位信号送入高位,本位加0011。,3.1.2 十进制数的编码与运算,数字串在计算机内的表示与存储 字符形式: 一个字节存放一个十进制数位或符号位,存放的是09十个数字和正负号的ASCII编码值 。 压缩的十进制数形式: 一个字节存放两个十进制数位,既节省了存储空间,又便于完成十进制数的算术运
11、算。 其值用BCD码或ASCII码的低4位表示。符号位也占半个字节并放在最低数字位之后,其值可从4位二进制码中的6种冗余状态中选用。,第3章 运算方法和运算部件,3.1 数值的表示方法和转换 3.2 带符号的二进制数据在计算机中的 表示方法及加减法运算 3.3 二进制乘法运算 3.4 二进制除法运算 3.5 浮点的运算方法 3.6 运算部件 3.7 数据校验码,3.2 带符号的二进制数据在计算机中的表示方法及加减法运算,机器数是指数在计算机中的表示形式,一般是采用某种编码形式表示带符号的二进制数。 真值是指机器数所对应的实际数值。 机器数有三种表示方式: 原码 补码 反码,3.2 带符号的二进
12、制数据在计算机中的表示方法及加减法运算,3.2.1 原码、补码、反码及其加减法运算 3.2.2 加减法运算的溢出处理 3.2.3 定点数和浮点数,3.2.1 原码、补码、反码及其加减法运算,原码表示法 规则:机器数的最高一位表示符号,“0”表示正号,“1”表示负号;后面各位用数的绝对值表示。,3.2.1 原码、补码、反码及其加减法运算,0的不唯一性:定点小数 +0原 = 0.00,-0原 = 1.00整数 +0原 = 000,-0原 = 100,3.2.1 原码、补码、反码及其加减法运算,原码表示很直观,与真值转换很方便,进行乘除运算比较容易; 但是原码进行加减运算时,符号位不能视同数值一样参
13、加运算; 原码的运算规则复杂,运算时间长; 计算机大量的数据处理工作是加减运算,采用原码表示就很不方便了。,3.2.1 原码、补码、反码及其加减法运算,反码表示法 一个负数的原码符号位不动,其余位取相反码就是机器数的另一种表示形式反码表示法。 正数的反码与原码相同。,设:x原 = x0 x1x2xn 当x0 0时, x反 = x0 x1x2xn 当x0 1时, x反 =,上节回顾,第2章 计算机的逻辑部件 2.3 阵列逻辑电路 2.3.2 可编程序逻辑阵列(PLA) 2.3.3 可编程序阵列逻辑(PAL) 第3章 运算方法和运算部件 3.1 数值的表示方法和转换 3.1.1 数值型数据的表示和
14、转换 3.1.2 十进制数的编码与运算 3.2 带符号的二进制数据在计算机中的表示方法及加减法运算 3.2.1 原码、补码、反码及其加减法运算,3.2.1 原码、补码、反码及其加减法运算,补码表示法 设计补码表示法的目的是: 使符号位能和有效数值部分一起参加数值运算,从而简化运算规则,节省运算时间。 使减法运算转化成加法运算,从而进一步简化计算机中运算器的线路设计。 计算机中补码的概念来源于数学上的“模”和补数。,3.2.1 原码、补码、反码及其加减法运算,一种较简单的由原码求得补码的方法: 正数的补码表示与原码一样: x补 x原 负数的补码是将原码符号位保持“1”之后,其余各位取相反的码,末
15、位加1便得到补码。即:取原码的反码再加1: x补 x反1 例:已知x1010B,求x补x反1101Bx补 x反11110B,3.2.1 原码、补码、反码及其加减法运算,真值0和0的补码表示是一致的,但在原码和反码表示中具有不同的形式。 根据互补的概念,一个补码机器数再求一次补就得到机器数的原码了。,3.2.1 原码、补码、反码及其加减法运算,当补码加法运算的结果不超出机器范围时,可得出以下重要结论: 用补码表示的两数进行加法运算,其结果仍为补码。 X+Y补=X补+Y补。 符号位与数值位一样参与运算。,3.2.1 原码、补码、反码及其加减法运算,原码、补码、反码比较: 三种编码的最高位都是符号位
16、。 当真值为正时,三种编码的符号位都用0表示,数值部分与真值相同。即它们的表示方法是相同的。 三种编码方法的区别主要在于对负数的表示方法有所不同。当真值为负时,三种编码的符号位都用1表示,但数值部分的表示各不相同,数值部分存在这样的关系: 补码是原码的“求反加1”(整数),或者“求反末位加1”(小数); 反码是原码的“每位求反”。 它们所能表示的数据范围,基本上是一样的,-2nX2n(整数)或-1X1(小数),只是补码多表示一个数-2n(整数)或-1(小数)。,3.2 带符号的二进制数据在计算机中的表示方法及加减法运算,3.2.1 原码、补码、反码及其加减法运算 3.2.2 加减法运算的溢出处
17、理 3.2.3 定点数和浮点数,3.2.2 加减法运算的溢出处理,当运算结果超出机器数所能表示的范围时,机器无法表达,称作“溢出”,此时机器将停止运算,屏幕显示溢出警告。 溢出判断规则与判断方法: 单符号位操作检测方法 变形码操作检测方法,3.2.2 加减法运算的溢出处理,单符号位操作检测方法 当操作数中的加数与被加数符号相同时,若运算结果的符号与操作数的符号不一致,表示溢出;否则,表示没有溢出。 而当加数和被加数符号不同时,相加运算的结果是绝对不会溢出的。,3.2.2 加减法运算的溢出处理,例:x0.1001,y0.1110,用补码运算判断xy是否溢出。 解:x补0.1001,y补0.111
18、0 两个正数相加的结果符号位为1, 表示相加后有溢出。,3.2.2 加减法运算的溢出处理,变形码操作检测方法: 每个操作数在运算时都采用两个符号位; 正数用00表示,负数用11表示,两个符号位与码值位一起参加运算; 若运算结果的两个符号位的代码不一致时表示溢出; 两个符号位的代码一致时,表示没有溢出。,3.2.2 加减法运算的溢出处理,正溢出:若两个符号位代码为01,表示正溢出,表明运算结果是大于允许取值范围的正数; 负溢出:若两个符号位为10,表示负溢出,表明运算结果是负数,其绝对值大于允许取值范围。 注:最高符号位永远表示结果的正确符号。,3.2.2 加减法运算的溢出处理,例:x0.101
19、1,y0.1100,用补码运算判断xy是否溢出。 解:x补11.0101,y补11.0100 符号位的代码是10,两个符号位的代码 不一致,表示运算结果溢出。,3.2.2 加减法运算的溢出处理,例:x0.1011,y0.1101,用补码运算判断xy是否溢出。 解:x补00.1011,y补00.1101 符号位的代码是01,两个符号位的代码 不一致,表示运算结果溢出。,3.2 带符号的二进制数据在计算机中的表示方法及加减法运算,3.2.1 原码、补码、反码及其加减法运算 3.2.2 加减法运算的溢出处理 3.2.3 定点数和浮点数,3.2.3 定点数和浮点数,定点数: 定点数表示法:约定所有机器
20、数的小数点隐含在某一个固定位置上; 当约定所有机器数的小数点位置在机器数的最低位之后时,称定点整数。定点整数是纯整数; 当约定所以机器数的小数点位置在符号位之后、有效数值部分最高位之前时,称之为定点小数。定点小数是纯小数。,3.2.3 定点数和浮点数,无论定点整数还是定点小数,都可以有原码、反码、补码的形式。 定点数表示方法简单直观,不过定点数表示数的范围小,不易选择合适的比例因子,运算过程容易产生溢出。,3.2.3 定点数和浮点数,浮点数: 浮点数表示法:小数点位置可以任意浮动。 科学计数法: 58600D1050.586 586D1030.586 0.0586D1010.586 浮点数:
21、1011101B270.1011101 101.1101B230.1011101 0.01011101B210.1011101,3.2.3 定点数和浮点数,计算机多数情况下采用浮点数表示数值,它与科学计算法相似,把任意一个二进制数通过移动小数点位置表示成阶码和尾数两部分。 N = MRE N为浮点数, M(mantissa)为尾数, E(exponent)为阶码, R(radix)称为“阶的基数(底)”,而且R为一常数,一般为2、8或16。,3.2.3 定点数和浮点数,浮点数的机内表示一般采用以下形式: MS是尾数的符号位,设置在最高位上。 E为阶码,有n+1位,一般为整数,其中有一位符号位,
22、设置在E的最高位上,用来表示正阶或负阶。 M为尾数,有m位,由MS和M组成一个定点小数。MS=0,表示正号,MS=1,表示负号。 尾数的位数决定了数N的精度,尾数的位数越长,能表达的精度越高。,3.2.3 定点数和浮点数,规格化浮点数 所谓浮点数的规格化,就是通过移动尾数,使尾数M的最高位数字M11。 即M满足1/2|M|1时,这个浮点数就是规格化的数,否则就不是。 在字长一定的情况下,规格化的浮点数精度最高。 若M11,且尾数不是全0时就要移动尾数直到M11,阶码相应变化,保证N值不变。,3.2.3 定点数和浮点数,计算机中数据的数值范围和精度 数值范围是指机器所能表示的一个数的最大值和最小
23、值之间的范围。 数据精度是指一个数的有效位数。 例如,32位定点小数(补码)的范围为-11-2-31,定点整数(补码)的范围是-231+231-1,数据精度为31位。 浮点数由于阶码的存在而扩大了数据的范围。例如,标准的32位单精度数,其数值的可表示范围为-2127(1-2-23)2127,精度为24位。因此用于科学计算的计算机一般都有浮点处理器。,3.2.3 定点数和浮点数,定点数表示法和浮点数表示法的比较 浮点数表示的范围比定点数大。 因为运算过程中随时对中间结构的浮点数规格化,所以不易丢失有效数字,提高了运算精度。 运算规则的复杂性不同 溢出情况,第3章 运算方法和运算部件,3.1 数值
24、的表示方法和转换 3.2 带符号的二进制数据在计算机中的 表示方法及加减法运算 3.3 二进制乘法运算 3.4 二进制除法运算 3.5 浮点的运算方法 3.6 运算部件 3.7 数据校验码,3.3 二进制乘法运算,实现乘除法运算大致有三种方案: 采用软件实现乘除法运算。使用原有的运算器硬设备,运用基本运算指令编制实现乘、除法运算的子程序。 在原有运算器的基础上增加一些硬件设备来实现乘、除法操作。 设置专用的乘、除法器,使运算处理设备专用化,目的是加快运算速度。,3.3 二进制乘法运算,3.3.1 定点数一位乘法 3.3.2 定点数二位乘法 3.3.3 阵列乘法器,3.3.1 定点数一位乘法,定
25、点原码一位乘法 乘法规则:乘积的符号由两数符号位按位相加得到,而乘积的数值部分则是两个正数相乘之积。 乘积符号的运算法则:同号相乘为正,异号相乘为负。由于被乘数和乘数的符号组合只有四种情况(00,01,10,11),因此积的符号可按“异或”(按位加)运算得到。,3.3.1 定点数一位乘法,假设: 被乘数X原=X0X1X2Xn 乘 数Y原=Y0Y1Y2Yn 则乘积XY原=X原Y原 =(X0Y0)(X1X2Xn)(1Y2Yn) 符号表示把符号位和数值邻接起来。,3.3.1 定点数一位乘法,习惯方法: 例:求x=0.1101和y=0.1011的乘积xy,3.3.1 定点数一位乘法,运算规则: 从乘数
26、的最低位开始,用乘数y的每个二进制位去乘被乘数x,若y的某个二进制位为1,则得位积x;如为0,则得位积0。 y的各位分别乘以x的所得的位积,因为位权不同,逐次向左移位,即在空间上按一定位数错开,这样逐位进行下去,直到乘数各位都乘完为止。 把经过移位对准的各次位积相加起来即得结果。,3.3.1 定点数一位乘法,缺点: 将多个数一次相加,机器难以实现。一般的加法器,只能把两个输入数相加,多个位积的同时输入是无法实现的。 乘积位数增长了一倍,即2n,而机器字长只有n位。,3.3.1 定点数一位乘法,改进: 把一次求和的操作,变成逐步累加求部分积的操作; 将求积过程中逐位按权左移位积的操作,改为位积不
27、动,而是上次部分积右移的操作。,3.3.1 定点数一位乘法,机器算法: 例:求x=0.1101和y=0.1011的乘积xy,3.3.1 定点数一位乘法,机器算法: 若用zi表示第i次部分积,则 z0 = 0 z1 = 2-1 (ynx + z0) z2 = 2-1 (yn-1x + z1) zi = 2-1 (yn-i+1x + zi-1) zn = 2-1 (y1x + zn-1) zn即为x和y的乘积,即xy = zn,例:求x=0.1101和y=0.1011的乘积xy,3.3.1 定点数一位乘法,实现原码一位乘法的逻辑电路框图:,3.3.1 定点数一位乘法,原码的主要问题是符号位不能参加
28、运算,单独用一个异或门产生乘积的符号位。 补码运算就可以实现符号位直接参加运算。 补码一位乘法: 校正法(P85) 比较法(P87),3.3.1 定点数一位乘法,补码与真值的转换,3.3.1 定点数一位乘法,补码的右移 正数右移一位,相当于乘1/2。 负数用补码表示时,右移一位也相当于乘1/2。 因此,在补码运算的机器中,一个数不论其正负,连同符号位向右移一位,符号位保持不变,就等于乘1/2。,3.3.1 定点数一位乘法,补码乘法规则 设被乘数为x补x0.x1x2xn 乘数为y补y0.y1y2yn均为任意符号 则有补码乘法算式(校正法): 当y0时,y00,x y补=x补y 当y0时,y01,
29、x y补=x补(0.y1y2yn)+ x补,例:x0.1101,y0.1011, (校正法) 即:x补11.0011,y补Y 0.1011,求xy补?,例:x0.1101,y0.1011, (校正法) 即:x补11.0011, x补00.1101,y补11.0101,求xy补?,3.3.1 定点数一位乘法,补码乘法规则 将补码乘法算式(校正法): 当y0时,y00,x y补=x补y 当y0时,y01,x y补=x补(0.y1y2yn)+ x补 写成各项部分积累加的形式(P86) :,3.3.1 定点数一位乘法,运算逻辑实现的递推关系: z0补0 z1补21z0补(yn1yn) x补 (yn1
30、0) z2补21z1补(ynyn1) x补 zn补21zn1补(y2y1) x补 这种根据相邻两位比较结果决定运算操作的方法称为“比较法”。也称Booth算法。,3.3.1 定点数一位乘法,实现这种补码乘法规则时,在乘数最末位yn后面要增加一位补充位yn1。 开始时yn10,由ynyn1判断第一步该怎么操作; 然后再由yn1yn判断第二步该怎么操作。 因为每做一步都要右移一位,故做完第一步后, yn1 yn正好移到原来ynyn1的位置上。 依此类推,所以每步都用ynyn1位置进行判断,故ynyn1两位称为判断位。,3.3.1 定点数一位乘法,补码一位乘法的运算规则 如果ynyn1,即判断位是1
31、1或00,则yi1yi0, 部分积zi0 ,再右移一位; 如果ynyn110,则yi1yi1,做减法,即做加x补操作。部分积zix补,再右移一位; 如果ynyn101,则yi1yi1,做加法,部分积zix补,再右移一位。 这样重复进行n1步,但最后一步不移位。包括一位符号位,所得乘积为2n1位,其中n为尾数位数。,例:x补1.0101,y补1.0011,求xy补?,3.3.1 定点数一位乘法,3.3 二进制乘法运算,3.3.1 定点数一位乘法 3.3.2 定点数二位乘法 3.3.3 阵列乘法器,3.3.3 阵列乘法器,硬件乘法器的常规设计是采用“串行移位”和“并行加法”相结合的方法,这种方法不
32、需要很多器件。 然而加法-移位的方法实在太慢,执行一次乘法的时间至少是执行一次加法时间的n倍,不能满足当前科学和工程对高速乘法提出的要求。 自从大规模集成电路问世以来,高速的单元阵列乘法器应运而生,出现了各种形式的阵列乘法器,大大提高了计算速度。,3.3.3 阵列乘法器,3.3.3 阵列乘法器,3.3.3 阵列乘法器,阵列的每一行送入乘数Y的每一位数位,而各行错开形成的每一斜列则送入被乘数的每一数位。 图中每一个方框包括一个与门和一位全加器。 该方案所用加法器数量很多,但内部结构规则性强,适于用超大规模集成电路实现。,第3章 运算方法和运算部件,3.1 数值的表示方法和转换 3.2 带符号的二
33、进制数据在计算机中的 表示方法及加减法运算 3.3 二进制乘法运算 3.4 二进制除法运算 3.5 浮点的运算方法 3.6 运算部件 3.7 数据校验码,3.4 二进制除法运算,3.4.1 定点除法运算 3.4.2 提高除法运算速度的方法举例 阵列除法器,3.4.1 定点除法运算,定点原码一位除法 定点补码一位除法(加减交替法),3.4.1 定点除法运算,定点原码一位除法 设被除数 x原xf.x1x2xn 除数 y原yf.y1y2yn 商 q原 qf.q1q2qn (xfyf).(x1x2xn/y1y2yn) 余数 r原 rf.r1r2rn 则它们之间有如下关系: x原y原q原 + r原 符号
34、处理qfxfyf,3.4.1 定点除法运算,手算方法:,3.4.1 定点除法运算,特点: 每次都是由心算来比较余数和除数的大小,余数大时,商1;余数小时,商0。第一次比较时,余数就是被除数。 每做一次减法,总是保持余数不动,而除数向右移一位。 商的符号单独处理。 要求加法器的位数为除数位数的两倍。,3.4.1 定点除法运算,为适应机器运算,需要进行改进: 用补码加代替直接减(两个符号位) 除数右移改为余数左移。 机器算法: 在计算机中,小数点是固定的,不能简单地用手算的办法,为便于机器操作,除数y固定不动(即小数点固定),使被除数和余数进行左移(相当于乘2),效果与手算相同。(比较法),3.4
35、.1 定点除法运算,3.4.1 定点除法运算,注意: 余数不是真正的余数,由于每次所得的余数多乘了2,求得小数点后的n位商后,相当于多乘了2n,故正确余数为2-nrn 另外,在进行数值部分除法时,因为定点小数的绝对值小于1,若被除数绝对值除数的绝对值,则商1,因而会产生溢出。 所以在执行除法以前,先要判断是否溢出,不溢出时才进行除法运算,否则除法就不进行,并由相应的程序进行处理。,3.4.1 定点除法运算,恢复余数法 用余数减去除数求得差值,当差值大于0时,商上1;当差值小于0时,商上0。 减去除数的运算,机器可用加上除数的补码机器负数的方式转换为加法运算。另外,当差值小于0时,商上“0”,不
36、够减,多减去了除数,还必须加上除数,重新恢复原来的余数。 除数不动,使余数左移一位。,3.4.1 定点除法运算,这种方法的缺点是: 当某一次Y的差值为负时,要多一次Y恢复余数的操作,降低了执行速度,又使控制线路变得复杂,因此在计算机中很少采用。 计算机中普遍采用的是不恢复余数的除法方案,又称之为加减交替法。,3.4.1 定点除法运算,加减交替法 加减交替法是对恢复余数除法的一种修正。 原码加减交替法的规则是: 当余数为正时,商上1,余数左移一位,减除数绝对值得新余数; 当余数为负时,商上0,余数左移一位, 加除数绝对值得新余数。 若最后一次商为0,而又需得到正确余数,则在这最后一次仍需恢复余数
37、。 原码加减交替法,省去了恢复余数的加法过程,加快了除法速度。,3.4.1 定点除法运算,证明: 当余数Ri为正时 恢复余数法为:2RiY商为1 加减交替法为:2RiY商为1 当余数Ri为负时 恢复余数法为:2( RiY) Y商为0 加减交替法为: 2 Ri Y商为0,3.4.1 定点除法运算,说明: 对定点小数除法,首先要比较除数和被除数的绝对值的大小,以检查是否出现商溢出的情况。 判溢:被除数减去除数,若差为正,即最高位有进位输出表示溢出。 商的符号为相除二数的符号的半加和。 被除数的位数可以是除数的两倍,其低位的数值部分开始时放在商寄存器中。运算过程中,放被除数和商的寄存器同时移位,并将
38、商寄存器中的最高位移到被乘数寄存器的最低位中。,3.4.1 定点除法运算,3.4.1 定点除法运算,定点补码一位除法(加减交替法) 算法规则: 被除数与除数同号,被除数减去除数;被除数与除数异号,被除数加上除数。 余数和除数同号,商1,余数左移一位,下次减除数;余数和除数异号,商0,余数左移一位,下次加除数。 重复步骤,包括符号位在内,共做n+1步。,例: x0.1001 y0.1101 求xy补? 解: x补1.0111 y补0.1101 y补1.0011,3.4.1 定点除法运算,商的校正: 刚好能除尽时,如果除数为正,商不必校正;如果除数为负,则商加2-n。 不能除尽时,如果商为正,则不
39、必校正;如果商为负,则商加2-n 。 例: q补1.01000.0001(校正量)1.0101 r补1.1111,3.4.2 提高除法运算速度的方法举例,跳0跳1除法 除法运算通过乘法操作来实现,阵列除法器,阵列除法器适合于大规模集成电路的制造。 与通常的除法器相比,阵列除法器不仅所需的控制线路较少,而且能够提供令人满意的高速运算。 恢复余数阵列除法器 不恢复余数阵列除法器,阵列除法器,第3章 运算方法和运算部件,3.1 数值的表示方法和转换 3.2 带符号的二进制数据在计算机中的 表示方法及加减法运算 3.3 二进制乘法运算 3.4 二进制除法运算 3.5 浮点的运算方法 3.6 运算部件
40、3.7 数据校验码,3.5 浮点的运算方法,浮点数的表示形式(以2为底): N = M 2E M为浮点数的尾数,一般为绝对值小于1的规格化二进制小数,用原码或补码形式表示; E为浮点数的阶码,一般是用补码表示的整数。 阶码的底除了2以外,还有用8或16表示的。,3.5 浮点的运算方法,3.5.1 浮点数的加减法运算 3.5.2 浮点数的乘除法运算,3.5.1 浮点数的加减法运算,设有两个浮点数X和Y,它们分别是: XMx 2Ex YMy 2Ey 其中Ex、Ey分别为X、Y的阶码; Mx、My分别为X、Y的尾数。 两浮点数进行加减的运算规则是: XY Mx2Ex My2Ey (Mx2Ex-EyM
41、y)2Ey ,ExEy,3.5.1 浮点数的加减法运算,两浮点数进行加减,首先要看两数的阶码是否相同,即小数点位置是否对齐。 若两数的阶码相等,表示小数点是对齐的,就可进行尾数的相加减; 反之,若两数阶码不等,表示小数点位置没有对齐,此时必须使两数的阶码相等,这个阶段称为对阶。 对阶完后才能做两尾数的加减。 运算结果可能不是规格化的数,为了保证运算精度,需要对运算结果进行规格化。 而在对阶和规格化的过程中可能有数码丢掉,为了减小误差,还需要进行舍入。 判断溢出。,3.5.1 浮点数的加减法运算,对阶:小阶向大阶看齐 尾数求和(差) 规格化 舍入 浮点数的溢出判断,3.5.1 浮点数的加减法运算
42、,对阶:小阶向大阶看齐 对阶的第一步是求阶差:EExEy 若E = 0,表示两数阶码相等,即ExEy,不需要对阶; 若E 0,表明Ex Ey ; 若E 0,表明Ex Ey ; 对于Ex Ey的情况,需要对阶。 采用 “小阶向大阶看齐”的方法,即小阶的尾数右移E位,小阶的阶码增加E与大阶相等。,3.5.1 浮点数的加减法运算,尾数求和(差) 对阶完成后,就按定点加减运算求两数的尾数之和。 规格化 对于浮点数的原码表示法,其规格化数为:正数:00.1xxx;负数:11.1xxx 对于浮点数的补码表示法,规格化数为:正数:00.1xxx;负数:11.0 xxx,3.5.1 浮点数的加减法运算,补码规
43、格化的条件是: 若和或差的尾数两符号位相等且与尾数第一位不等,即00.1xxx或11.0 xxx,就是规格化的数; 若和或差的尾数两符号位相等且与尾数第一位相等,则需向左规格化。即00.0 xxx或11.1xxx,需将和或差的尾数左移,每移一位,和或差的阶码减一,直至尾数第一位与尾符不等时为止,叫做向左规格化; 若和或差的尾数两符号位不等,即01.xxx或10.xxx形式,表示尾数求和(差)结果绝对值大于。此时应该将和(差)的尾数右移1位,阶码加,即进行向右规格化。,3.5.1 浮点数的加减法运算,舍入 在对阶或向右规格化时,尾数要向右移位,这样,右移的尾数的低位部分会被丢掉,从而造成一定误差
44、,故应进行舍入处理。 “0舍1入”法,即右移时丢掉的最高位为0,则舍去;是1,则将尾数的末位加1(相当于进入)。 “恒置1”法,即不管移掉的是0还是1,都把尾数的末位置1。,3.5.1 浮点数的加减法运算,浮点数的溢出判断 表示成规格化数以后,由阶码进行判断是否溢出。 设阶码数值部分取7位,符号位取2位,用补码表示,则能表示的范围是: 最大阶码:E补 = 001111111 = 127 最小阶码:E补 = 110000000 =128,3.5.1 浮点数的加减法运算,小于128,称为下溢:发生在左规时; 用机器0表示(阶码、尾数全0); 例如,和的阶码=11000,左规一位时变成10.XXXX
45、。 大于+127时,称为上溢,这是浮点数的真正溢出 置溢出标志,作中断处理; 例如,当和的阶码 = 00 1111,而尾数还须右规时,会变成01 0000。,3.5.1 浮点数的加减法运算,总结: E补=01 XXX为上溢,真正溢出,需做溢出处理。 E补=10 XXX为下溢,浮点数值趋于零,用机器零表示。,3.5.1 浮点数的加减法运算,例: X = 2010 0.11011011, Y = 2100 (0.10101100) ,求X+Y。 解 :计算过程: 对阶: 阶差:E =EX补+EY补 = 00010 + 11100 = 11110 X阶码小,MX右移2位,保留阶码E = 00100。
46、 MX补=00 00 110 110 11 下划线上的数是右移出去而保留的附加位。,3.5.1 浮点数的加减法运算,尾数求和(差) MX补+MY补 = 00 00110110 11 + 11 01010100 = 11 10001010 11 规格化 左规,移1位,结果=11 00010101 10; 阶码1,E = 00 1001 = 00 011。,3.5.1 浮点数的加减法运算,舍入 附加位最高位为1,在所得结果的最低位+1,得新结果: M补 = 11 00010110,M = 0.11101010。 判溢出 阶码符号位为00,故不溢出,最终结果为:X + Y = 2011 (0.111
47、01010),3.5 浮点的运算方法,3.5.1 浮点数的加减法运算 3.5.2 浮点数的乘除法运算,3.5.2 浮点数的乘除法运算,浮点乘法运算 设有两个浮点数X和Y,它们分别是: X2Ex Mx Y2Ey My 浮点数乘法运算的规则为: XY2(ExEy)(MxMy) 即:乘积的阶码由两数阶码相加求得;乘积的尾数等于被乘数和乘数的尾数之积。,3.5.2 浮点数的乘除法运算,两个尾数的乘法可采用定点数乘方法: 需要对浮点数尾数积进行规格化(左规、右规) 舍入:0舍1入,若采用双倍字长乘积时,没有舍入问题。,3.5.2 浮点数的乘除法运算,例:已知 x0.1100002101, y0.1110
48、002100,设阶码数值部分各取5位,阶符2位;尾数数值部分各取6位,尾符2位,按机器浮点数运算步骤,求xy。 解 : 求阶和 ex补=00 00101,ey补00 00100 e补=ex补ey补00 01001,3.5.2 浮点数的乘除法运算,尾数相乘 可利用原码或补码定点数乘法求尾数之乘积,可得: SxSy原1.101010000000 或 SxSy补1.010110000000 规格化 可看出SxSy原或SxSy补已是规格化形式,勿需规格化。,3.5.2 浮点数的乘除法运算,舍入 若取单字长乘积,可得 SxSy原=1.101010 或SxSy补=1.010110, 所以,xy原1.101
49、01020001001 xy补1.01011020001001 得 xy0.10101021001 101010000 判溢出 阶码未溢出,故结果为正确。,3.5.2 浮点数的乘除法运算,浮点除法运算 设有两个浮点数X和Y,它们分别是: X2Ex Mx Y2Ey My 浮点数除法运算的规则为: XY2(ExEy) (MxMy) 即:商的阶码由两数阶码相减求得; 商的尾数由两数的尾数相除求得。,第3章 运算方法和运算部件,3.1 数值的表示方法和转换 3.2 带符号的二进制数据在计算机中的 表示方法及加减法运算 3.3 二进制乘法运算 3.4 二进制除法运算 3.5 浮点的运算方法 3.6 运算
50、部件 3.7 数据校验码,3.6 运算部件,定点运算部件 定点运算部件由算术逻辑运算部件ALU、若干个寄存器、移位电路、计数器、门电路等组成。 ALU部件主要完成加减法算术运算及逻辑运算,其中还应包含有快速进位电路。,3.6 运算部件,3.6 运算部件,浮点运算部件 通常由阶码运算部件和尾数运算部件组成,其各自的结构与定点运算部件相似。 但阶码部分仅执行加减法运算。 其尾数部分则执行加减乘除运算,左规时有时需要左移多位。,第3章 运算方法和运算部件,3.1 数值的表示方法和转换 3.2 带符号的二进制数据在计算机中的 表示方法及加减法运算 3.3 二进制乘法运算 3.4 二进制除法运算 3.5
51、 浮点的运算方法 3.6 运算部件 3.7 数据校验码,3.7 数据校验码,计算机系统中的数据,在读写、存取和传送的过程中可能产生错误。 减少和避免这类错误的方法: 一方面是精心设计各种电路,提高计算机硬件的可靠性; 另一方面是在数据编码上找出路,即采用某种编码法,通过少量的附加电路,使之能发现某些错误,甚至能确定出错位置,进而实现自动改错的能力。,3.7 数据校验码,数据校验码是一种常用的带有发现某些错误或自动改错能力的数据编码方法。 它的实现原理,是加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码。 这样,就可以通过检测编码的合法性来达到发现错误的目的。 合理地安排非法编码数量
52、和编码规则,就可以提高发现错误的能力,或自动改正错误的目的。,3.7 数据校验码,3.7.1 奇偶校验码 3.7.2 海明校验码 3.7.3 循环冗余校验(CRC)码,3.7.1 奇偶校验码,奇偶校验码是一种开销最小,能发现数据代码中一位出错情况的编码,常用于存储器读写检查,或ASCII字符传送过程中的检查。 它是在被传送的n位信息组上, 加上一个二进制位作为校验位,使配置后的n+1位二进制代码中1的个数为奇数(奇校验)或偶数(偶校验)。,3.7.1 奇偶校验码,例: 数据奇校验编码偶校验编码 000000001 000000000 00000000 010101000 010101001 0
53、1010100 011111110 011111111 01111111 其中,最高位为校验位,其余低八位为数据位。 这种方案只能发现一位错或奇数个位错,但不能确定是哪一位错,也不能发现偶数个位错。,3.7.1 奇偶校验码,3.7 数据校验码,3.7.1 奇偶校验码 3.7.2 海明校验码 3.7.3 循环冗余校验(CRC)码,3.7.2 海明校验码,这是由Richard Hamming于1950年提出的、目前还被广泛采用。 实现原理: 是在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。 当某一位出错后,就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了依据。,3.7.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术驱动的创新型决策模型研究
- 打破学习障碍学生支持与帮助的先进方法
- 小区环境卫生设施的维护管理
- 家校联合在解决孩子问题上的方法研究
- 小学数学学习法与教育心理学结合
- 学生视角下的办公技能提升与劳动教育
- 2025年度香菇食品加工厂建设项目投资合同3篇
- 2025年度股权投资合同:互联网初创企业股权投资协议2篇
- 2025年度高端精密仪器设备维护与检测合同3篇
- 《第一单元 图文处理与编排 第4课 总结与评价 三、组内交流》说课稿教学反思-2023-2024学年初中信息技术人教版七年级上册
- 智慧农业的传感器与智能设备
- 旅游路线规划设计方案
- DB37-T 5097-2021 山东省绿色建筑评价标准
- 五年级上册简易方程练习100题及答案
- MDR医疗器械法规考核试题及答案
- 让学生看见你的爱
- 领导沟通的艺术
- 发生用药错误应急预案
- 南浔至临安公路(南浔至练市段)公路工程环境影响报告
- 绿色贷款培训课件
- 大学生预征对象登记表(样表)
评论
0/150
提交评论