定点运算.docx

上传人:小飞机 文档编号:3433750 上传时间:2023-03-13 格式:DOCX 页数:31 大小:51.75KB
返回 下载 相关 举报
定点运算.docx_第1页
第1页 / 共31页
定点运算.docx_第2页
第2页 / 共31页
定点运算.docx_第3页
第3页 / 共31页
定点运算.docx_第4页
第4页 / 共31页
定点运算.docx_第5页
第5页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《定点运算.docx》由会员分享,可在线阅读,更多相关《定点运算.docx(31页珍藏版)》请在三一办公上搜索。

1、定点运算一、移位运算 二、加法与减法运算 三、软件技术的兴起和发展 四、除法运算 第三节 定点数运算 定点数运算包括移位、加、减、乘、除几种。 一、移位运算 1移位的意义 移位运算在日常生活中常见。例如15米可写作1500厘米,单就数字而言,1500相当于小数点左移了两位,并在小数点前面添了两个0;同样15也相当于1500相对于小数点右移了两位,并删去了小数点后面的两个0。可见,当某个十进制数相对于小数点左移n位时,nn相当于该数乘以10;右移n位时,相当于该数除以10。 计算机中小数点的位置是事先约定的,因此,二进制表示的机器数在相对于小数点作nn位左移或右移时,其实质就便该数乘以或除以2(

2、n=1,2.n)。 移位运算又叫移位操作,对计算机来说,有很大的实用价值,例如,当计算机没有乘运算线路时,可以采用移位和加法相结合,实现乘运算。 计算机中机器数的字长往往是固定的,当机器数左移n位或右移n位时,必然会使其n位低位或n位高位出现空位。那么,对空出的空位应该添补0还是1呢?这与机器数采用有符号数还是无符号数有关,对有符号的移位叫算术移位。 2算术移位规则 对于正数,由于x原=x补=x反=真值,故移位后出现的空位均以0添之。对于负数,由于原码、补码和反码的表示形式不同,故当机器数移位时,对其空位的添补规则也不同。下表列出了三种不同码制的机器数,分别对应正数或负数,移位后的添补规则。必

3、须注意的是:不论是正数还是负数,移位后其符号位均不变,这是算术移位的重要特点。 不同码制机器数移位后的空位添补规则 正数 负数 码 制 原码、补码、反码 原码 补码 添补代码 0 0 左移添0 右移添1 反 码 1 由上表可得出如下结论: 机器数为正时,不论左移或右移,添补代码均为0。 由于负数的原码其数值部分与真值相同,故在移位时只要使符号位不变,其空位均添0。 由于负数的反码其各位除符号位外与负数的原码正好相反,故移位后所添的代码应与原码相反,即全部添1。 分析任意负数的补码可发现,当对其由低位向高位找到第一个“1”时,在此“1”左边的各位均与对应的反码相同,而在此“1”右边的各位均与对应

4、的原码相同,即添0;右移时困空位出现在高位,则添补的代码应与反码相同,即添1。 例:设机器数字长为8位,若A=26,写出三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。 解:A=+26=(+11010)2 则A原=A补 =A反=0,0011010 移位结果表示如下: 移位操作 移位前 左移一位 左移两位 右移一位 右移两位 机 器 数 A原=A补=A反 0,0011010 0,0110100 0,1101000 0,0001101 0,0000110 对应的真值 +26 +52 +104 +13 +6 可见,对于正数,三种机器数移位后符号位不变,左移时最高数位丢1,结

5、果出错;右移时最低数位丢1,影响精度。 A=-26=(-11010)2 三种机器数移位结果示于下表。 移位操作 移位前 左移一位 左移两位 码 机 器 数 原 1,0011010 1,0110100 1,1101000 对应的真值 -26 -52 -104 右移一位 右移两位 移位前 左移一位 左移两位 右移一位 右移两位 移位前 左移一位 左移两位 右移一位 右移两位 1,0001101 1,0000110 补 码 1,1100110 1,1001100 1,0011000 1,1110011 1,1111001 反 码 1,1100101 1,1001011 1,0010111 1,111

6、0010 1,1111001 -13 -6 -26 -52 -104 -13 -7 -26 -52 -104 -13 -6 可见,对于负数,三种机器数移位后符号位均不变。负数的原码左移时,高位丢1,结果出错;低位丢1,影响精度。负数的补码左移时,高位丢0,结果出错;低位丢1,影响精度。负数的反码左移时,高位丢0,结果出错;低位丢0,影响精度。 下图示意了机器中实现算术左移和右移操作的硬件框图。其中真值为正的三种机器数的移位操作;负数原码的移位操作;负数补码的移位操作;负数反码的移位操作。 3算术移位和逻辑移位的区别 有符号数的移位称为算术移位,无符号数的移位称为逻辑移位。逻辑移位的规则是:逻辑

7、左移时,高位移出,低位添0;逻辑右移时,低位移出,高位添0。例如,寄存器内容为01010011,逻辑左移为1010010,算术左移为00100110。又如寄存器内容为10110010,逻辑右移为01011001。若将其视为补码,算术右移为11011001。显然,两种移位的结果是不同的。上例中为了避免算术左移时最高数位丢1,可采用带进位(Cy)的移位,其示意图如下图所示。算术左移时,符号位移至Cy,最高数位就可避免移出。 二、加法与减法运算 加减法运算是计算机中最基本的运算,因减法运算可看作被减数加上一个减数的负值,即A-B=A+(-B),故在此将机器中的减法运算和加法运算合在一起讨论。现代计算

8、机中都采用补码作加减法运算。 1补码加减运算的基本公式 补码加法的基本公式为: 整数 A补+B补=A+B补 (mod 2n+1) 小数 A补+B补=A+B补 (mod 2) 即补码表示肋两个数在进行加法运算时,可以把符号位与数位同等处理,只要结果不超n+1出机器能表示的数值范围,运算后的结果按2取模(对于整数);或按2取模(对于小数),就能得到本次加法的运算结果。 对于减法因A-B=A+(-B) 则A-B补=A+(-B)补 由补妈加法基本公式可得: 整数 A-B补=A补+-B补 (mod 2n+1) 小数 A-B补=A补+-B补 (mod 2) 因此,若机器数采用补码, 当求A-B时, 只需先

9、求-B补,就可按补码加法规则进行运算。而-B补由B补连同符号位在内,每位取反,末位加1而得。 例:x=0.1010,y=-0.0011,用补码的加法求x+y 解:x补=0.1010,y补=1.1101 x补+y补=0.1010+1.1101=0.0111 x+y=0.0111 例:x=0.1001,y=-0.0011,用补码的减法求x-y 解:x补=0.1001,y补=1.1101,-y补=0.0011 x补-y补=x补+-y补=0.1001+0.0011=0.1100 x-y=0.1100 例:设机器数字长为8位,其中一位为符号位,令A=-93,B=+45,求A-B补。 解:由A=-93=-

10、1011101,得A补=1,0100011 由B=+45=+0101101,得B补=0,0101101,-B补=1,1010011 A-B补=A补+-B补=1,0100011+1,1010011=10,1110110 按模2的意义,最左边的“1”自然丢掉,故A-B补=0,1110110,还原成真值得A-B=118,结果出错,这是因为A-B=-138超出了机器字长所能表示的范围。在计算机中,这种超出机器字长的现象,叫溢出。为此,在补码定点加减运算过程中,必须对结果是否溢出作出明确的判断。 解:由A=-93=-1011101,得A补=1,0100011 2溢出判断 补码定点加减运算判断溢出有三种方

11、法。 (1)用一位符号位判断溢出。对于加法,只有在正数加正数和负数加负数两种情况下才可能出现溢出,符号不同的两个数相加是不会出现溢出的。对于减法,只有在正数减负数或负数减正数两种情况下才可能出现溢出,符号相同的两个数相减是不会出现溢出的。因此在判断溢出时可以根据参加运算的两个数据和结果的符号位进行;两个符号位相同的补码相加,如果和的符号位与加数的符号相反,则表明运算结果溢出;两个符号位相反的补码相减,如果差的符号位与被减数的符号位相反,则表明运算结果溢出。这种方法需要判断操作是加法还是减法,以及运算结果与操作数的符号关系。 符号不同的两个数相加不会产生溢出的原因是字长为n+1位时,数值部分为n

12、位,数值nn部分的最大绝对值为2。如果参加运算的两个数x和y的绝对值都小于2,则(+x)+(-y)和n(-x)+(+y)的绝对值都不会大于2,因此只需考虑(+x)+(+y)和(-x)+(-y)的情况,这时结果z的符号应与x和y的符号相同,即当x0=1且y0=1时,z0=0说明数据溢出;或者当x0=0且y0=0时,z0=1说明数据溢出。这样可列出下表所示的判断逻辑的真值表。 x0 y0 z0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 n+1V 0 1 0 0 0 0 1 0 根据真值表,可得判断溢出的逻辑表达式: 这种溢出判断方法不仅需要判断

13、加法运算的结果,而且需要保持原操作数。 利用数据编码的最高位和次高位的进位状况来判断运算结果是否发生了溢出。 两个补码数实现加减运算时,若最高数值位向符号位的进位值与符号位产生的进位输出值不相同,则表明加减运算产生了溢出。因为当x和y均为n+1位正整数时,其和有两种情nn况:当x+y2时,不会发生溢出;当x+y2时符号位没有进位,表明发生溢出。当x和ynn都是n+1位负数时,其和也有两种情况:当x+y-2时,不会发生溢出;当x+y0时,可上商“1”,再对Ri左移一位后减除数,即2Ri-y*。 当余数Ri0时,可上商“0”,然后再做Ri+y*,即完成恢复余数的运算,再做2(Ri+y*)-y*,也即2Ri+y*。 可见,原码恢复余数法可归纳为: 当余数Ri0时,商上“1”,做2Ri-y*的运算; 当余数Ri0时,商上“0”,做2Ri+y*的运算。 这里已看不出余数的恢复问题了,而只是做加y*或减y*,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号