讲解

原码一位乘法

  1. 两个 n+1 位的数,第一位是符号
  2. 乘积的符号由两个数的符号位异或而成
  3. 乘数的最低位为 ,若 ,则部分积加上被乘数 ,然后逻辑右移;若 ,则部分积加上 0,然后逻辑右移
  4. 重复 n 次(机器字长 n+1)

补码一位乘法(Booth 算法)

  • 符号位参与运算,因为是补码
  • 被乘数取双符号位,乘数取单符号位
  • 乘数末位增设附加位,初值为 0
  • 根据最低位和次低位的取值来确定操作,其中右移为算数右移
  • 重复 n+1 次(机器字长 n+1 )
次低位最低位操作
00部分积右移一位
01部分积加 补,右移一位
10部分积加 补,右移一位
11部分积右移一位

原码除法运算(不恢复余数法)

  1. 商的符号由两个数的符号位异或得到
  2. 先用被除数减去除数
    • 当余数为正时,商上 1,余数和商左移一位,再减去除数
    • 当余数为负时,商上 0,余数和商左移一位,再加上除数
  3. 当第 n+1 步(机器字长为 n+1)余数为负时,需加上 得到正确的余数(和被除数同号)

补码除法运算(加减交替法)

  • 符号位参与运算,除数和被除数均用补码表示,商和余数也用补码表示,使用两位符号位
  • 若被除数和余数
    • 同号,则被除数减去除数
    • 异号,则被除数加上除数
  • 若余数与除数
    • 同号,则商上 1,余数左移一位减去除数
    • 异号,则商上 0,余数左移一位加上除数
  • 重复 n+1 次(机器字长 n+1)
  • 一般情况下,商的末位恒置 1