|
* M+ ^# v* K& ?. U) x9 U8 Y B其實是原作者一時手快, 原文應該寫成下面這樣比較好懂..., j5 L/ X) u1 R7 p4 r; d s( q
% m/ s6 W4 K$ E) j5 {% OX 先寫成 X = a * 2^n, (a = 0.5~1) 的form(形式) , 將乘數 a 給normalized to 0.5~1的範圍.
; Z! ]' k1 R, N6 B! m6 }5 A) E+ l8 c% f/ U7 {9 u
這樣子 X = 2時, a = 1, n = 1' [- \* p1 z, K+ \; \" |2 g+ Q
X = 6 時, x= 0.75, n = 3. ~) Z, K( g: r3 U3 @+ ~# q
. s5 ~% E6 H: _4 y5 {: U8 h8 Y原因是 a 介於 0.5~1時, 它的小數表示法會是 0.1xxx (2進位) 對整個表達空間的使用會比較好 (不會浪費太多bit).
7 r! M0 i: T5 a4 m! O9 L) Q r2 B s3 O0 a
至於用泰勒展開式, 是工程計算常用的方法, 因為.... 它能有效的控制到精度誤差 (就是收斂, 到第幾項能收斂到多少, 是可以確定的), 又很萬用" ? [7 c5 v$ [4 k0 F. ~
所以在數值計算上, 泰勒展開式很常見到. 但不見得是最好的解, 有時候看場合會改用查表法, cordic...$ t& B$ b1 z: F. `, p
9 L( i0 W, \$ \) C/ z
數學真的很重要! (雖然我都忘光了 haha)* q! B8 U. Z7 T
3 I, }5 I; P6 {: |" i1 ^
|
|