机器数运算方法及运算器.docVIP

  • 141
  • 0
  • 约1.47万字
  • 约 13页
  • 2018-06-27 发布于福建
  • 举报
机器数运算方法及运算器

第4章 机器数的运算方法及运算器 4.1 机器数的加减运算及其实现 4.1.1 原码加法 1.符号相同的两个原码相加:符号相同的两个原码相加,只要两个数的数值相加即可,其符号不变。 例4.1 设X=+10001,Y=+01011,求Z=X+Y 解: 即,Z=+11100。 例4.2 设X=-10001,Y=-01011,求Z=X+Y 2.符号相异的两个原码相加:先比较两数的绝对值大小,用绝对值大的数减去绝对值小的数,结果的符号是绝对值大的数的符号。 【例4.3】设X=+10101,Y=-01010,求Z=X+Y 解: 先比较X与Y的绝对值,本题∣X∣|Y|,所以做减法|X∣-|Y|, 结果是Z=+01011 例4.2 设X=+01010,Y=-10111,求Z=X+Y 解: 先比较X与Y的绝对值,本题∣Y∣|X| ,所以做减法|Y∣-|X|, 结果是Z=-01101 用原码进行符号不同的两个数相加时有以下三步运算: ① 比较两个数的绝对值的大小; ② 绝对值大的数的绝对值减去绝对值小的数的绝对值; ③ 结果赋以绝对值大的那个数的符号。 4.1.2 补码加法 补码运算特点:①补码运算时,不用判断符号位,符号位与数值一块参与运算; ②两数相加之后,进位的最高位超出字长部分自动丢失。 1.定点补码运算性质 性质1 两数之和的补码等于两数补码之和。 [X+Y]补=[X]补+[Y]补 例4.5 设X=+11010,Y=-10101,用补码的加法求Z=X+Y 解:加数和被加数的数值位都是5位,在数值位之前加1位符号位。这样, [X]补=011010,[Y]补=101011 [X+Y]补= [X]补+[Y]补= 011010+101011=000101 所以,X+Y=+00101。 注意:在运算中,数值位和符号位有进位,本例采用单符号位,以2为模,进位的1就丢掉了。 例4.6 设X=+10101,Y=-11010,用补码加法求Z=X+Y 解:[X]补= 010101,[Y]补=100110 [X+Y]补=[X]补+[Y]补= 010101+100110=111011 所以,X+Y=-00101。 性质2 一个负数的补码的补码就是这个负数的原码。[[X]补]补=[X]原 例4.7 设有两个定点小数 X=-0.10011,Y=-0.11001,求这两个负数补码的补码。 解: [X]原=1.10011 [Y]原=1.11001 [X]补=1.01101 [Y]补=1.00111 [[X]补]补=1.10011=[X]原 [[Y]补]补=1.11001=[Y]原 补码这一性质,计算机中计算结果的补码均可化成该数的原码。 例4.8 设有两个定点小数 X=-0.1101,Y=0.0111,(-1X+Y0),求这两数之和。 解:[X]补=1.0011 [Y]补=0.0111 [X]补+[Y]补=1.0011+0.0111=1.1010 [X+Y]原=[[X]补+[Y]补]补=[1.1010]补=1.0110 所以,X+Y=-0.0110 用真值进行运算:X+Y=-0.1101+0.0111=-0.0110 结果相同。 用补码做加法是数值位连同符号位一起参加运算的。但是在有溢出的情况下,用一般的补码加法就得不到正确的结果,再看下面的例子。 例4.9 设有两个定点小数X=+0.10111,Y=+0.10001,用补码的加法求Z=X+Y 解:[X]补= 0.10111,[Y]补=0.10001 [X+Y]补= [X]补+[Y]补=0.10111+0.10001=1.01000 Z=X+Y=-0.11000 两个大于0.5的正数相加,结果就为负值,结果显然是错误的。 例4.10 设X=-0.10111,Y=-0.10001,用补码的加法求Z=X+Y 解:[X]补=1.01001,[Y]补=1.01111 [X+Y]补= [X]补+[Y]补=1.01001+1.01111=0.11000 Z=X+Y=+0.11000 两个绝对值大于0.5的负数相加,结果为正值,这也是错误的。 它们的和超出了机器数所能表示的最大范围,即产生了溢出,在有溢出的情况下,用一般补码加法就无法得到正确结果。 例4.11 设有两个定点小数X=+0.10111,Y=-0.10001,用补码的加法求Z=X+Y 解:[X]补= 0.10111,[Y]补=1.01111 [X+Y]补= [X]补+[Y]补 =0.10

文档评论(0)

1亿VIP精品文档

相关文档