## Linux 核心專題: 重作第四次作業 > 執行人: YiChiChao ## 任務說明 重作第四次作業、彙整其他學員的相關成果,涵蓋所有延伸問題。 ## TODO: 重作第三週測驗題 > 彙整其他學員的相關成果,涵蓋所有延伸問題 ### 第二題 目標是透過 shift 完成 $n/10$ ,並確保解有小數點後第一位之精確度。 由於 $10$ 無法透過 shift 獲得,需要找一個接近 $10$ 且可以透過 shift 獲得的值。首先需要先確立此值的範圍使得解能維持在小數點後第一位的精確度 $n=ab$ $l=cd$ $(n \geq l)$ $\frac{ab}{10} \leq \frac{n}{x} \leq \frac{ab.9}{10} \Rightarrow \frac{n}{a.b9} \leq x \leq \frac{n}{a.b} \Rightarrow \frac{n}{a.b9} \leq x \leq 10$ 證明在上述範圍內的 $x$ 在所有 $l \leq n$,皆滿足 $c.d \leq \frac{l}{x} \leq c.d9$: $c.d \leq \frac{l}{x} \leq c.d9$ 左式:顯然成立, 右式: $cd(\frac{1}{10} + \frac{0.09}{a.b}) \leq c.d+0.09 \Rightarrow c.d + \frac{0.09cd}{ab} \leq c.d+0.09$ 因為 $ab \geq cd$ ,所以右式成立。 因為被除數的大小不會超過 19 ,所以上面的式子我們直接帶入 $n=19$ 討論: $\frac{19}{10} \leq \frac{19}{x} \leq \frac{19.9}{x} \Rightarrow 9.55 \leq x \leq 10$ 取題目中討論的 $\frac{128}{13}$,$\frac{tmp}{\frac{128}{13}} = \frac{13tmp}{128}$ ,其中 $13tmp$ 透過 $( \frac{tmp}{8} + \frac{tmp}{2} + tmp) \times 8$ 獲得。 ```((((tmp >> 3) + (tmp >> 1) + tmp) << 3``` 往右位移 7 得 $\frac{13tmp}{128}$: ```q = ((((tmp >> 3) + (tmp >> 1) + tmp) << 3) + d0 + d1 + d2) >> 7``` ## TODO: 重作第四週測驗題 > 彙整其他學員的相關成果,涵蓋所有延伸問題