|
7 H! Y% s7 A3 w9 j/ {' O3 ]
其實是原作者一時手快, 原文應該寫成下面這樣比較好懂...
/ ?2 z! H" d" j1 z, \" `. i% {3 L$ Y1 o. A! w: |+ s7 H/ S
X 先寫成 X = a * 2^n, (a = 0.5~1) 的form(形式) , 將乘數 a 給normalized to 0.5~1的範圍.
+ c& S, L8 b# T+ ?/ J, q- I# J' ^
k+ G$ q% Q5 ^* f這樣子 X = 2時, a = 1, n = 1
( ?, {! v% S2 \2 X; ^8 jX = 6 時, x= 0.75, n = 37 l) ]! N7 F& V$ W( k# b+ x: f
4 s& A$ g: `9 {
原因是 a 介於 0.5~1時, 它的小數表示法會是 0.1xxx (2進位) 對整個表達空間的使用會比較好 (不會浪費太多bit).8 j) f2 f$ z% g* X5 X6 k% F6 @
6 k) O$ p4 L9 t% f+ b至於用泰勒展開式, 是工程計算常用的方法, 因為.... 它能有效的控制到精度誤差 (就是收斂, 到第幾項能收斂到多少, 是可以確定的), 又很萬用
' n1 _1 Y S4 t8 a4 P- }所以在數值計算上, 泰勒展開式很常見到. 但不見得是最好的解, 有時候看場合會改用查表法, cordic...
) \! b/ n& k. {" Q5 b
( ]* k* H( D2 Q+ t數學真的很重要! (雖然我都忘光了 haha)
! t* X5 }4 r* G' l8 I7 M0 G8 Q F! J/ v) C2 M3 |% i- `
|
|