contributed by < chi-ming5566
>
測驗一
dividend=0
或 1
時,則直接回傳結果。od = slots & 1
是用來判斷 divisor 是奇數還偶數:
od=0
時slots >> 1
,所以D1 = 2
。od=1
時會使用(slots + D2) >> 1
,可以猜想到D2
的目的是要把 divisor 變為偶數,先假設D2 = 1
:
divisor + 1
來得到 這個數字,因此,我們需要補上 及 這兩數之間的誤差。result
,並且slots
就是 B,因此divop(result,slot)
就等於。測驗二
INSERT_WORDS
是用來將int
型態的 ix0 轉換成 float
的 d ,EXTRACT_WORDS
則是用來將 float
型態的 d 轉換成int
的 ix0 。
判斷 ix0
是否為 0 或負數,如果是 0 則回傳 0,負數則回傳 NAN。
Exponent 全為 1 的時候,如果 fraction 全為 0 是 INF,fraction 不全為 0 則是 NAN。
測驗三
首先討論連續的數字各數 k 的情況:
k=1
,每個數字都可以看成 1 個連續的數字,因此 ret
初始值設為 1。k=2
,ex : 1+2, 2+3, 3+4。k=3
,ex : 1+2+3, 2+3+4, 3+4+5。再來透過以下表格,整理連續 k 個數字有可能對應的 N 值,而且
n>=0 && n is a integer
:
k | N | func(n) |
---|---|---|
1 | 1, 2, 3, 4, 5, 6 | 0+1*n |
2 | 3, 5, 7, 9, 11, 13 | 1+2*n |
3 | 6, 9, 12, 15, 18, 21 | 3+3*n |
4 | 10, 14, 18, 22, 26, 30 | 6+4*n |
5 | 15, 20, 25, 30, 35, 40 | 10+5*n |
由此可知, 每個 "k 個連續數字總和的結果",都是一個等差數列,因此我們可以對 " k 個連續數字總和的數列" 歸納出一個公式為 。