定点数的运算 —— 原码、补码的除法运算

一、引入 我们按照常规的方法进行除法运算,计算机需要解决两个问题:①被除数和除数的大小比较;② 每次计算余数位数不断扩大。因此,我们提出了原码不恢复余数法、补码加减交替法。
定点数的运算 —— 原码、补码的除法运算
文章图片

二、原码恢复余数法

  • 符号位与数值位分开求,商符由两个数的符号位“异或”形成
题目 定点数的运算 —— 原码、补码的除法运算
文章图片

步骤一
  • 被除数 x 和除数 y 均取绝对值参加运算
  • 符号位为x s ⊕ y s x_s⊕y_s xs?⊕ys?
  • 计算除数y的绝对值的补码
  • 计算除数y的绝对值的负数的补码
定点数的运算 —— 原码、补码的除法运算
文章图片

步骤二
  • 累加寄存器(ACC)取 n+1 位(包含一位符号位,以便相加,故最终结果中ACC的第一位是符号位),初始化为 |x|
  • 乘商寄存器(MQ)取 n+1 位(包含一位符号位,故最终结果中MQ的第一位是符号位),初始化为0
定点数的运算 —— 原码、补码的除法运算
文章图片

步骤三
  • 先用被除数减去除数(|X|-|Y|=|X|+[-|Y|]补)
  • 当余数为正时,商上1,余数和商左移一位,再减去除数;当余数为负时,商为0,余数和商左移一位,再加上除数。执行 n+1 步
  • 当 n+1 步余数为负时,需加上|Y|得到第 n+1 步正确的余数(余数和被除数需要保持同号)
    定点数的运算 —— 原码、补码的除法运算
    文章图片
步骤四
  • ACC中第2~5位为余数的数值部分
  • MQ中第2~5位的为商的数值部分
【定点数的运算 —— 原码、补码的除法运算】由步骤1可知,符号为 +,故 余数为 +0.0111*2^(-4),商为 +0.1101
三、补码加减交替法 题目 定点数的运算 —— 原码、补码的除法运算
文章图片

步骤一
  • 符号位参与运算,运算的数均以补码表示,被除数 x 取双符号位,除数 y 取双符号位
  • 计算被除数 y 的负数的补码
定点数的运算 —— 原码、补码的除法运算
文章图片

步骤二
  • 累加寄存器(ACC)取 n+2 位(包含两位符号位,以便相加,故最终结果中ACC的前两位是符号位),初始化为 |X|补
  • 乘商寄存器(MQ)取 n+1 位(包含一位符号位,故最终结果中MQ的第一位是符号位),初始化为0
定点数的运算 —— 原码、补码的除法运算
文章图片

步骤三
  • 若被除数与除数同号,则被除数减去除数;若被除数与除数异号,则被除数加上除数
  • 若余数与除数同号,则商上1,余数左移一位减去除数;若余数与除数异号,则商上0,余数左移一位加上除数。执行 n 次
定点数的运算 —— 原码、补码的除法运算
文章图片

步骤四 ACC中是余数,故 0.0111*2^(-4)
MQ中是商,故 [X/Y]补=1.0101,X/Y=-0.1011
四、原码、补码除法的比较 定点数的运算 —— 原码、补码的除法运算
文章图片

    推荐阅读