计算机运算原理.docVIP

  • 120
  • 0
  • 约1.85万字
  • 约 23页
  • 2018-03-23 发布于重庆
  • 举报
计算机运算原理

计算机运算原理 技术?2007-08-21 20:41:18?阅读1312?评论4??字号:大中小?订阅 第三节 定点数运算   定点数运算包括移位、加、减、乘、除几种。 一、移位运算   1.移位的意义   移位运算在日常生活中常见。例如15米可写作1500厘米,单就数字而言,1500相当于小数点左移了两位,并在小数点前面添了两个0;同样15也相当于1500相对于小数点右移了两位,并删去了小数点后面的两个0。可见,当某个十进制数相对于小数点左移n位时,相当于该数乘以10n;右移n位时,相当于该数除以10n。   计算机中小数点的位置是事先约定的,因此,二进制表示的机器数在相对于小数点作n位左移或右移时,其实质就便该数乘以或除以2n(n=1,2...n)。   移位运算又叫移位操作,对计算机来说,有很大的实用价值,例如,当计算机没有乘(除)运算线路时,可以采用移位和加法相结合,实现乘(除)运算。   计算机中机器数的字长往往是固定的,当机器数左移n位或右移n位时,必然会使其n位低位或n位高位出现空位。那么,对空出的空位应该添补0还是1呢?这与机器数采用有符号数还是无符号数有关,对有符号的移位叫算术移位。   2.算术移位规则   对于正数,由于[x]原=[x]补=[x]反=真值,故移位后出现的空位均以0添之。对于负数,由于原码、补码和反码的表示形式不同,故当机器数移位时,对其空位的添补规则也不同。下表列出了三种不同码制的机器数(整数或小数均可),分别对应正数或负数,移位后的添补规则。必须注意的是:不论是正数还是负数,移位后其符号位均不变,这是算术移位的重要特点。   不同码制机器数移位后的空位添补规则 ? 码?? 制 添补代码 正数 原码、补码、反码 0 ? 原码 0 负数 补码 左移添0 右移添1 反?? 码 1   由上表可得出如下结论:   (1)机器数为正时,不论左移或右移,添补代码均为0。   (2)由于负数的原码其数值部分与真值相同,故在移位时只要使符号位不变,其空位均添0。   (3)由于负数的反码其各位除符号位外与负数的原码正好相反,故移位后所添的代码应与原码相反,即全部添1。   (4)分析任意负数的补码可发现,当对其由低位向高位找到第一个“1”时,在此“1”左边的各位均与对应的反码相同,而在此“1”右边的各位(包括此“1”在内)均与对应的原码相同,即添0;右移时困空位出现在高位,则添补的代码应与反码相同,即添1。   例:设机器数字长为8位(含一位符号位),若A=±26,写出三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。   解:(1)A=+26=(+11010)2   则[A]原=[A]补?=[A]反=0,0011010   移位结果表示如下: 移位操作 机? 器?? 数 对应的真值 [A]原=[A]补=[A]反 移位前 0,0011010 +26 左移一位 0,0110100 +52 左移两位 0,1101000 +104 右移一位 0,0001101 +13 右移两位 0,0000110 +6   可见,对于正数,三种机器数移位后符号位不变,左移时最高数位丢1,结果出错;右移时最低数位丢1,影响精度。   (2)A=-26=(-11010)2   三种机器数移位结果示于下表。 移位操作 机? 器?? 数 对应的真值 移位前 原 码 1,0011010 -26 左移一位 1,0110100 -52 左移两位 1,1101000 -104 右移一位 1,0001101 -13 右移两位 1,0000110 -6 移位前 补 码 1,1100110 -26 左移一位 1,1001100 -52 左移两位 1,0011000 -104 右移一位 1,1110011 -13 右移两位 1,1111001 -7 移位前 反 码 1,1100101 -26 左移一位 1,1001011 -52 左移两位 1,0010111 -104 右移一位 1,1110010 -13 右移两位 1,1111001 -6   可见,对于负数,三种机器数移位后符号位均不变。负数的原码左移时,高位丢1,结果出错;低位丢1,影响精度。负数的补码左移时,高位丢0,结果出错;低位丢1,影响精度。负数的反码左移时,高位丢0,结果出错;低位丢0,影响精度。   下图示意了机器中实现算术左移和右移操作的硬件框图。其中(a)真值为正的三种机器数的移位操作;(b)负数原码的移位操作;(c)负数补码的移位操作;(d)负数反码的移位操作。   3.算术移位和逻辑移位的区别   有符号数的移位称为算术移位,无符号数的移位称为逻辑移位。逻辑移位的规则是:逻辑左移时,高位移出,低位添0;逻辑右移时,低位移出,高位添0。例

文档评论(0)

1亿VIP精品文档

相关文档