为什么我们需要用乘法来实现除法?首先在计算机运算中,乘法的效率要来得高于除法。其次,除法的实现在电路中非常不容易,而用乘法能实现在一定精度下的除法。

证明

downloads:

假设 \( Q = \frac{N}{D} \),则:

\begin{aligned*}
Z &= 1 - D \\
Q &= \frac{N}{D} = \frac{N(1+Z)}{D(1+Z)} \\
  &= \frac{N(1+Z)}{(1-Z)(1+Z)} \\
  &= \frac{N(1+Z)}{1-Z^2}
\end{aligned*}

\( K = 1+Z^2 \) 重复这个过程

\begin{aligned*}
Q &= \frac{N(1+Z)}{1-Z^2} \cdot \frac{1+Z^2}{1+Z^2} \\
  &= \frac{N(1+Z)(1+Z^2)}{1-Z^4}
\end{aligned*}

重复N次

\begin{aligned*}
Q &= \frac{N}{D} = \frac{N(1+Z)(1+Z^2)(1+Z^3)\dots (1+Z^{2n-1})}{1-Z^{2n-1}} \\
\because Z < 1 &\Rightarrow \lim_{N\to 0} Z^{2n-1} = 0 \\
\therefore Q &= N(1+Z)(1+Z^2)(1+Z^3)\dots (1+Z^{2n-1})
\end{aligned*}

对于8位精度,只需要 \( n = 3 \) 即可,而 \( n = 5 \) 则有32位精度。

就是这样。