Try   HackMD

Linux 核心專題: 重作第四次作業

執行人: YiChiChao

任務說明

重作第四次作業、彙整其他學員的相關成果,涵蓋所有延伸問題。

TODO: 重作第三週測驗題

彙整其他學員的相關成果,涵蓋所有延伸問題

第二題

目標是透過 shift 完成

n/10 ,並確保解有小數點後第一位之精確度。

由於

10 無法透過 shift 獲得,需要找一個接近
10
且可以透過 shift 獲得的值。首先需要先確立此值的範圍使得解能維持在小數點後第一位的精確度

n=ab
l=cd

(nl)

ab10nxab.910na.b9xna.bna.b9x10

證明在上述範圍內的

x 在所有
ln
,皆滿足
c.dlxc.d9

c.dlxc.d9

左式:顯然成立,

右式:

cd(110+0.09a.b)c.d+0.09c.d+0.09cdabc.d+0.09
因為
abcd
,所以右式成立。

因為被除數的大小不會超過 19 ,所以上面的式子我們直接帶入

n=19 討論:

191019x19.9x9.55x10

取題目中討論的

12813
tmp12813=13tmp128

,其中
13tmp
透過
(tmp8+tmp2+tmp)×8
獲得。
((((tmp >> 3) + (tmp >> 1) + tmp) << 3
往右位移 7 得
13tmp128
:
q = ((((tmp >> 3) + (tmp >> 1) + tmp) << 3) + d0 + d1 + d2) >> 7

TODO: 重作第四週測驗題

彙整其他學員的相關成果,涵蓋所有延伸問題