Skip to content

ALU

1. 乘法

1.1 原码乘法

结果 = 被乘数 × 乘数

基本算法:

  • 若乘数的当前位为 1 ,将被乘数和部分积求和
  • 若乘数的当前位为 0 , skip
  • 部分积左移
  • 循环 32 次

1.2 补码乘法

\[ [y]_{补} = y_{n-1} \cdot 2^n + y = y_{n-1} \cdots y_0 = \sum_{k=0}^{n-1} 2^k y_k \\ \Rightarrow y = - 2^{n-1} y_{n-1} + \sum_{k=0}^{n-2} 2^k y_k \]

布斯算法:

原理推导:

Screen Shot 2021-12-24 at 12.45.50 AM

操作过程:

Screen Shot 2021-12-24 at 12.46.41 AM

1.3 除法

1.3.1 原码一位除

Screen Shot 2021-12-24 at 10.51.42 AM

1.3.2 加减交替除法

原理:

Screen Shot 2021-12-24 at 10.54.22 AM

具体操作(by Acha):

image-20211222202357313

若求中间某一步的余数,则看其正负;若为负,则需加上除数 Y (带符号的补码形式)。


Last update: December 27, 2021
Authors: Co1lin