原码除法运算

恢复余数法

  • 由于原码表示与无符号数非常类似,仅比无符号数多一个符号,因此,进行原码除法运算时,可将符号位与数值部分分开处理
    • 商的符号:由被除数和除数各自的符号进行异或运算求得;
    • 商的数值部分:由被除数和除数各自的数值部分即真值的绝对值相除求得。

前提条件:

  • 除数+0
  • 定点小数:|被除数| < |除数|
  • 定点整数:|被除数|≥|除数|
  • 商的符号 = 被除数的符号 xor 除数的符号
  • |商| = |被除数| ÷ |除数|
  • 将商的符号与|商|拼接在一起

image.png|800

不恢复余数法

image.png|500

举个栗子

image.png|700

补码除法运算

不恢复余数法

与原码除法将符号位和数值部分分开处理不同,补码除法将符号位和数值部分一起参加运算,商符是在求商的过程中自然形成的。因此,补码除法的运算方法没有原码除法的运算方法直观,需要解决以下3个主要问题:

  • 如何处理商值
  • 如何处理商符
  • 如何得到新余数

举个例子:

image.png|

注意:

  • 开始的时候, 同号相减商1, 异号相加商0
  • 商1相减, 商0相加
  • 每次比较都是和y补相比较
  • 开始的时候是x补和y补相比较, 并且没有位移运算
  • 注意次数要对, 不要多算了