第6章运算方法本章知识要点:无符号数的定义及编码方法。有符号数的定义及四种编码方法。定点小数、定点整数的定义及编码方法。浮点数的表示方法。IEEE754浮点标准。定点数和浮点数的移位及加减运算。定点数和浮点数的乘除运算。数值的逻辑运算。三种专用运算部件:流水线、查找表和华莱士树。6.1无符号数和有符号数6.1.1无符号数和有符号数的定义1.无符号数的定义全部二进制位均用来表示数值本身,没有正负之分。2.有符号数的定义最高二进制位表示该数的正负,将此二进制位称为符号位;其余的二进制位用来表示数值本身,将这些二进制位称为数值位。6.1.2无符号数和有符号数的表示1.无符号数的表示:原码2.有符号数的表示:原码、反码、补码和移码1位符号表示法:正数0,负数12位符号表示法:正数00,负数11表6-1有符号数的编码方法编码方法正数负数符号位数值位符号位数值位原码0真值的绝对值1真值的绝对值反码0真值的绝对值1真值的绝对值按位取反补码0真值的绝对值1真值的绝对值按位取反末位加“1”移码1真值的绝对值0真值的绝对值按位取反末位加“1”表6-2四种编码方法下的机器数真值原码反码补码移码﹢12701111111011111110111111111111111﹢100000001000000010000000110000001﹢000000000000000000000000010000000-01000000011111111-110000001111111101111111101111111-12711111111100000001000000100000001-128无无1000000000000000四种编码方法的特点:①原码:最简单明了,符号位不能直接参与加减运算。②补码:符号位和数值位同时参与运算,使用广泛。③反码:是原码与补码互求的过渡,较少使用。④移码:将所有的真值都映射到一个正数域。002n-12n-2n-12-1++n-1+-1真值X[X]移图6-1移码的意义6.1.3无符号数和有符号数表示范围的区别类型最值机器数真值范围无符号数最大值11111111255256最小值000000000有符号数最大值01111111127256最小值10000000-1286.1.4计算机对无符号数和有符号数的识别一个数究竟是有符号数还是无符号数,计算机并不知道,这是由编程人员来决定的,如果要处理的数是无符号的,那就使用处理无符号数的指令;如果要处理的数是有符号的,那就使用处理有符号数的指令。加减法只有一套指令,而其它的运算指令(如乘、除等)一般都有两套指令。6.2数的定点表示和浮点表示6.2.1定点表示法1.定点整数图6-2定点整数的格式定点整数的表示范围是:-2n≤X≤2n-1。X0Xn-1···X1Xn符号位数值位小数点位置2.定点小数图6-3定点小数的格式定点小数的表示范围是:-1≤X≤1-2-n。X0Xn-1···X1Xn符号位数值位小数点位置6.2.2浮点表示法1.浮点数的一般格式阶符尾值阶值数符阶码(E)尾数(M)2.浮点数的表示范围0负数区正数区上溢区上溢区下溢区)21(2)12(mn)21(2)12(mnmn2222mn223.IEEE754浮点标准(1)规格化浮点数的表示符号(S)尾数(M)阶码(E)022303123图6-6单精度浮点格式符号(S)尾数(M)阶码(E)051626352图6-7双精度浮点格式(2)特殊值和非规格化浮点数的表示(单精度)数值符号阶码尾数±00或10000000000000000000000000000000±∞0或11111111100000000000000000000000NaN0或111111111非0的任意值非规格化浮点数0或100000000非0的任意值6.3定点数的算术运算1.算术移位规则,见表6-9。2.逻辑移位规则左移时,高位移出,低位填补0;右移时,低位移出,高位填补0。6.3.1移位运算6.3.2定点补码加减运算1.补码加减运算的基本公式加法:定点整数:[X+Y]补=[X]补+[Y]补(mod2n)定点小数:[X+Y]补=[X]补+[Y]补(mod2)减法:定点整数:[X-Y]补=[X]补+[-Y]补(mod2n)定点小数:[X-Y]补=[X]补+[-Y]补(mod2)mod是取模运算,等于两个整数相除的余数。2.溢出的定义运算结果超出机器数所能表示的范围。两个正数相加得到负数或者两个负数相加得到正数就发生了溢出。3.溢出的判断Vfxfxfyfyfjfj≥1&&CsCfCsCfV&&≥1Vfj1fj2fj1fj2&&≥1图6-12双符号位溢出的判断电路图图6-11进位位的溢出判断图6-10单符号位的溢出判断6.3.3定点乘除运算1.原码一位乘法两数以原码相乘,乘积的符号位等于两乘数符号位的异或,而乘积的数值位等于两乘数绝对值的原码相乘。R1R2加法器被乘数乘数位部分积新部分积右移1位最终乘积累加后的部分积R0计数器加法和移位控制逻辑2-1MUX01S0加法图6-13原码一位乘法器的组成2.原码一位除法商的符号位等于两数符号位的异或,而商的数值位等于两数绝对值的原码相除。恢复余数法:始终用被除数(或余数)减去除数。如果所得余数符号位为0,则表明够减,商取1,然后余数左移一位继续往下运算;如果所得余数符号位为1,则表明不够减,商取0,并恢复原来的余数(即加上除数),然后余数左移一位继续往下运算。加减交替法:也称不恢复余数法。当余数为正时,商取1,余数左移一位,减除数;当余数为负时,商取0,余数左移一位,加除数。图6-14原码一位加减交替法除法器的组成R2(商)加法器左移1位R1(除数)计数器加法和移位控制逻辑加/减R0(被除数或余数)余数的符号位16.4浮点数的算术运算6.4.1浮点数的加减运算1.对阶:小阶向大阶看齐。2.尾数求和差3.规格化化处理:必须满足001××…×或110××…×的形式。4.舍入处理:“0舍1入法”。5.溢出判断:上溢时,机器停止运算,进行中断溢出处理;下溢时,按机器零处理,机器继续运行。6.4.2浮点数的乘除运算1.浮点乘法运算乘积的符号等于两乘数符号的异或,乘积的阶码等于两乘数的阶码之和,乘积的尾数等于两乘数的尾数之积。2.浮点除法运算商的符号等于被除数与除数符号的异或,商的阶码等于被除数与除数的阶码之差,商的尾数等于被除数与除数的的尾数之商。6.5逻辑运算及其实现AA1图6-15非运算的硬件实现ABA∧BA∧BAB(a)与门实现与运算的硬件(b)非门和或门实现与运算的硬件≥1&111图6-16与运算的硬件实现ABA∨B(a)或门实现或运算的硬件(b)非门和与门实现或运算的硬件≥1A∨BAB1&11图6-17或运算的硬件实现(a)异或门实现异或运算的硬件(b)与门、或门和非门实现异或运算的硬件ABABAB+1≥1&&1ABAB+=1图6-18异或运算的硬件实现6.6专用运算部件6.6.1流水线加法器乘法器X[i]Y[i]U[i]Z[i]缓存寄存器缓存寄存器缓存寄存器一级流水线二级流水线乘法器缓存寄存器V[i]缓存寄存器三级流水线图6-19Z[i]=(X[i]×Y[i]+U[i])×V[i]的三级流水线乘法器加法器X[i]Y[i]U[i]Z[i]图6-20Z[i]=(X[i]+Y[i])×U[i]的非流水线乘法器加法器X[i]Y[i]U[i]Z[i]缓存寄存器缓存寄存器缓存寄存器一级流水线二级流水线图6-21Z[i]=(X[i]+Y[i])×U[i]的二级流水线6.6.2查找表R1MULX1X2LDCLK64×6ROMA[5~3]A[2~0]D[5~3]D[2~0]3333R2LDCLK(a)查找表X1X2000111110101100011010001000000000111110101100011010001000110000101000100000011000010000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110001100001010001100001111010010010101001110001100001010001000000110001000000110000100000111000110000101000100000011000010000111001100001111010010010101011100011000010100010000100011011111011001010100101010100100011111011000110001101010100011011100001001(b)数据配置图6-22与3×3乘法器等价的查找表及其数据配置图6-23与2输入或门等价的查找表及其数据配置XYA14×1ROMA1A0X∨Y地址数据000011101111D0(a)查找表(b)数据配置6.6.3华莱士树1位全加器X3Y3C3S3CoutCinCXYS1位全加器X2Y2C2S2CinCXYS1位全加器X1Y1C1S1CinCXYS1位全加器X0Y0进位输入C0S0CinCXYS(a)4位逐位进位加法器X3Y3C3S3X2Y2C4S2C11位全加器X0Y0Z0S0CinCXYS(b)4位进位保存加法器C21位全加器X1Y1Z1S1CinCXYS1位全加器Z2CinCXYS1位全加器Z3CinCXYS图6-244位逐位进位加法器和4位进位保存加法器2-1MUX01SPP04442-1MUX01SPP14442-1MUX01SPP24442-1MUX01SPP3444X3X2X1X00000Y0Y3Y2Y1000000图6-25二个4位数相乘部分积的生成电路2-1MUX01SPP0=10104442-1MUX01SPP1=101004442-1MUX01SPP2=0000004442-1MUX01SPP3=0000000444101000001001000000图6-261010×0011生成的4个部分积PP0(1010)PP1(10100)PP2(000000)PP3(0000000)6位进位保存加法器8位逐位进位加法器7位进位保存加法器Cin0C(0000000)S(011110)C(00000000)S(0011110)最终结果(00011110)图6-271010×0011的华莱士树PP0PP1PP2进位保存加法器逐位进位加法器进位保存加法器Cin0CSCS最终结果PP3PP4PP5进位保存加法器CS进位保存加法器CS图6-28华莱士树6×6乘法器本章结束,再见!