【计算机组成与设计】3.4计算机CPU除法运算

3.4.1除法算法及其硬件结构

【计算机组成与设计】3.4计算机CPU除法运算

  • 回忆小学时学过的除法运算,每次将除数右移一位然后与被除数相减。因为是右移所以除数应该被放在64位寄存器的左边32位,而余数应该被初始化为被除数,因为从图中可以看出并没有被除数参与运算,真正参与运算的是余数。

【计算机组成与设计】3.4计算机CPU除法运算
- 改进后的除法
【计算机组成与设计】3.4计算机CPU除法运算

64位余数左移的原因,将每次运算后较小的余数在改变商的同时,左移扩大。由于事先不知道余数和除数大小,只能先去减,如果一减发现差是负数,这种情况就是十进制除法,余数太小商补零,然后余数补零的做法。只是机器不能那么容易看出孰大孰小,所以只能先去减,若不行,在相加,返回当原来的状态。商上0。后左移。

可以发现改进后的除法和乘法运算的硬件结构是一样的