|
9 X" ~0 r3 [$ ?8 d, l+ C其實是原作者一時手快, 原文應該寫成下面這樣比較好懂...) G1 `$ q; ^5 n
: {; k- Q5 |1 D) f( }: N4 Y: z: \ N
X 先寫成 X = a * 2^n, (a = 0.5~1) 的form(形式) , 將乘數 a 給normalized to 0.5~1的範圍.
4 Q: C# F/ A' M, G4 w
4 f; e) F1 C! g( J) K. {" r這樣子 X = 2時, a = 1, n = 1
: n: X! f4 i% S. @+ ^7 `, o# uX = 6 時, x= 0.75, n = 3' E0 Q9 q; x, g0 F$ f# o$ J+ `! y
7 _& C1 z- Y2 k/ k" y# P2 C
原因是 a 介於 0.5~1時, 它的小數表示法會是 0.1xxx (2進位) 對整個表達空間的使用會比較好 (不會浪費太多bit).
+ _. E. z5 K7 ~& y) K% b, l! i/ C' y4 S9 U. O( w# |/ E
至於用泰勒展開式, 是工程計算常用的方法, 因為.... 它能有效的控制到精度誤差 (就是收斂, 到第幾項能收斂到多少, 是可以確定的), 又很萬用
, j- N* n: ?5 }所以在數值計算上, 泰勒展開式很常見到. 但不見得是最好的解, 有時候看場合會改用查表法, cordic...
5 ]2 Z% F% ?" t5 @9 X
2 G9 v: g2 y9 b! x4 G8 Y# [/ A數學真的很重要! (雖然我都忘光了 haha)
! M8 }: V( X. y3 F0 e: M. W; Z- N7 B" o7 k _9 }4 l' v
|
|