第二章数据表示、运算和运算器部件§2.3--§2.5重点:1.熟练掌握二进制编码、数制转换、定点小数和整数的原、反、补码。2.掌握三种常用的检错纠错码的使用场合和基本实现原理。3.熟练掌握定点小数、整数、浮点数在计算机内的表示、补码加减法的运算规则、一位乘除法的实现算法4.掌握定点运算器的功能与组成、控制与操作方法5.掌握浮点数的运算规则§2.3二进制数值数据的编码与运算算法五.原码一位除法的实现算法:1.除法条件:小数除法:0<|被除数|<|除数|整数除法:0<|除数|≤|被除数|2.原码除法的符号位单独按模加得到3.绝对值相除(1)恢复余数法:①被除数减去除数②若余数为正,表示够减,相应位上商为1,将余数左移一位减去除数;若余数为负,表示不够减,相应位上商为0,将余数加上除数(恢复余数),再左移一位减去除数。③重复第②步,直到求得商的各位为止。例:X=0.1011Y=0.1101求:X/Y=?[-|Y|]补=1.0011被除数商说明00.101100000起始情况+)11.0011-Y11.11100不够减,商0,恢复余数+)00.1101+Y00.101101.01100余数、商左移一位+)11.0011-Y00.100101够减,商101.001001余数、商左移一位+)11.0011-Y00.0101011够减,商100.1010011余数、商左移一位+)11.0011-Y11.11010110不够减,商0,恢复余数+)00.1101+Y00.101001.01000110余数、商左移一位+)11.0011-Y00.011101101够减,商1因此,X/Y商=0.1101X/Y余=0.0111×2-4(2)不恢复余数法(加减交替法):①被除数减去除数②若所得余数为正,表示够减,相应位上商为1,将余数左移一位减去..除数;若所得余数为负,表示不够减,相应位上商为0,将余数左移一位加上..除数。③重复第②步,直到求得商的各位为止。若最后一次上商为0,则应再做一次加除数操作,以获得正确的余数。例:X=0.1011Y=0.1101求:X/Y=?[-|Y|]补=1.0011被除数商说明00.101100000起始情况+)11.0011-Y11.11100不够减,商011.11000余数、商左移一位+)00.1101+Y00.100101够减,商101.001001余数、商左移一位+)11.0011-Y00.0101011够减,商100.1010011余数、商左移一位+)11.0011-Y11.11010110不够减,商011.10100110余数、商左移一位+)00.1101+Y00.011101101够减,商1因此,X/Y商=0.1101X/Y余=0.0111×2-4例:X=-0.10110Y=-0.11001求:X/Y=?[-|Y|]补=11.00111被除数商说明00.10110000000起始情况-Y)11.00111-Y11.111010不够减,商011.110100余数、商左移一位+Y)00.11001+Y00.1001101够减,商101.0011001余数、商左移一位-Y)11.00111-Y00.01101011够减,商100.11010011余数、商左移一位-Y)11.00111-Y00.000010111够减,商100.000100111余数、商左移一位-Y)11.00111-Y11.0100101110不够减,商010.1001001110余数、商左移一位+Y)00.11001+Y11.01011011100不够减,商0+Y)00.11001余数为负,恢复正确余数00.00100因此,X/Y商=0.11100X/Y余=-0.00100×2-5(余数的符号总是与被除数的符号一致)六.定点补码不恢复余数一位除法的实现算法1)若被除数与除数同号,则被除数减去除数;若被除数与除数异号,则被除数加上除数。2)若余数与除数同号,上商为1,余数左移一位减去除数;若余数与除数异号,上商为0,余数左移一位加上除数。3)重复第2)步,直到求得商的各位为止。4)商的校正:当精度要求不高时,采用末位恒置1法;当精度要求较高时,采用校正法:若商为正,不用修正;商为负,在商的最低位加1。例:X=-0.10110Y=-0.11001求:X/Y=?[X]补=11.01010[Y]补=11.00111被除数商说明11.01010000000起始情况-Y)00.11001同号,-Y00.000110余数与除数异号,商000.001100余数、商左移一位+Y)11.00111+Y11.0110101余数与除数同号,商110.1101001余数、商左移一位-Y)00.11001-Y11.10011011余数与除数同号,商111.00110011余数、商左移一位-Y)00.11001-Y11.111110111余数与除数同号,商111.111100111余数、商左移一位-Y)00.11001-Y00.1011101110余数与除数异号,商001.0111001110余数、商左移一位+Y)11.00111+Y00.10101011100余数与除数异号,商0因此,X/Y商=0.11100补码的余数不作要求.§2.4运算器部件的组成与设计一.运算器部件的功能与组成1.运算器部件的功能:运算器是计算机的执行部件,完成对数据的加工、处理。①完成对数据的算术和逻辑运算,给出运算的结果及结果特征②暂存参加运算的数据和中间结果运算的结果特征:进位C:运算结果最高位有进位,C=1结果溢出位V:运算结果发生算术溢出,V=1结果为0位Z:运算结果为0,Z=1结果为负位S:运算结果为负,S=12.运算器的组成:①算术与逻辑运算部件(ALU)②寄存器:通用寄存器专用寄存器:如暂存器、乘商寄存器③多路选择器④接受数据和输出结果的逻辑电路二.位片结构的运算器芯片Am2901见书例:三.教学计算机运算器的设计与实现1.Am2901芯片的管脚信号2.4片Am2901芯片间的连接3.Am2901芯片之外的线路设计①状态标志寄存器控制②最低位进位输入信号Cin的控制③左右移位时,移位输入信号的控制4.运算器的控制与操作§2.5浮点运算与浮点运算器一.浮点数的运算规则㈠浮点加减运算步骤1.对阶:将参加运算的两个浮点数小数点对齐①对阶标志:两数阶码相等②对阶方法:先求阶差:ΔE=EX-EY,然后将阶码小的数的尾数向右移|ΔE|位,阶码加|ΔE|,使两数阶码相等。为减少误差,可将右移丢掉的高几位值保留起来,以供舍入操作使用。2.位数加/减:将完成对阶后的两个数的尾数执行求和/差操作。3.结果规格化处理:1)规格化数的定义:若尾数用原码表示,则满足121M的数为规格化数。若尾数用补码表示,则满足121M或211M的数为规格化数。2)规格化数的标志:若nfMMMMM21.][原,则规格化标志为:尾数未溢出且11M,其形式为:1.11.0][或原M若nfMMMMM21.][步,则规格化标志为:尾数未溢出且11MMf,其形式为:0.11.0][或补M若nffMMMMMM2121.][变形补,则规格化标志为:1121121MMMMMMffff,其形式为:0.111.00][或补M3)规格化的方法:(尾数用补码表示)①若运算结果尾数发生溢出或121ffMM,则称为向左破坏规格化,此时应向右规格化,其方法是:将尾数右移一位,阶码加1。②若运算结果尾数未溢出,但011MMf(单位符号)或1121121MMMMMMffff(双符号位),则称为向右破坏规格化,此时应向左规格化,其方法是:将尾数向左移位,每移一位,阶码减1,直到满足11MMf或1121121MMMMMMffff为止。4.舍入操作:1)舍入原则:有舍有入,不产生积累误差。2)舍入方法:①“0”舍“1”入法:移掉的数值最高位为1,则在尾数末位上加1;移掉的数值最高位为0,则舍去移掉的数值。②末位恒置“1”法:把结果的最低位固定置“1”。5.判结果的正确性:即检查阶码是否溢出若运算结果阶码值小于所能表示的最小负数,则阶码下溢,置浮点形式机器零;若运算结果阶码值大于所能表示的最大正数,则阶码上溢,置溢出标志。㈡浮点乘除运算:yxyxyxEEyxEEyxEyExMMYXMMYXMYMX22)(22则设:1.移码加减:为判溢出,移][X用双符号运算且最高符号位固定为0。若运算结果最高符号位为1,则表示溢出。若最低符号位为0,表示上溢;为1,表示下溢。2.浮点数尾数处理:若运算结果位数超过尾数的确定位数,对多余数的处理方法是:1)采用截断法:即丢掉正常尾数最低位之后的全部数值。2)舍入处理:若尾数用原码表示:①若尾数最低位为1,或移出的几位中有1的数值位,则使最低位值为1。②0舍1入法。若尾数用补码表示:①丢失数据的各位均为0,不必舍入。②丢失数据最高位为0,以下各位不为0,则舍去丢失的值。③丢失数据最高位为1,以下各位均为0,则舍掉。④丢失数据最高位为1,以下各位不全为0,则在尾数最低位上加1。移补移][][][YXYX移补移][][][YXYX