2010-12-16 10 views

答えて

5

IEEE浮動小数点数は、内部で指数Eと仮数M(それぞれが2進整数で表される)を持ちます。実際の値は、基本的に

2^E * M 

基本対数数学は言うされる:

log2(2^E * M) 
= log2(2^E) + log2(M) 
= E + log2(M) 

コードの最初の部分は、EとM.線を分離する(1)多項式近似を用いてlog2(M)を計算コメント。最後の行にはEと近似の結果が追加されます。

+0

-128の代わりに-127を使用して、E^2の代わりにE^2を得る。 – Skeen

+0

@Skeen:もちろん、2^EではなくE^2 –

+0

Oh>。<私は読書に失敗しますが、私を殺さないでください! :O、なぜ-127の代わりに-128ですか? – Skeen

2

それは近似値です。まず、指数部のlog2を直接取る(簡単に行う)。その後、仮数部のlog2の近似式を使用する。次に、これらの2つのlog2コンポーネントを加算して最終結果を得ます。

+0

これは指数をどのように抽出してlog_2という名前の整数に入れるのか、そしてそれはsignbitと仮数をどのように抽出してポインタを使ってvalに保存するのか分かります。私が理解していないのは、これらを一緒に追加して動作させる理由です。 – Skeen

+0

そして私はsignbitと仮数を抽出すると、exp = 127(0)を設定し、したがってval = signbit * fractionを設定することを理解しています。しかし、それをlog_2で追加する方法は、本当にバグです。 – Skeen

+0

そして実際には指数を抽出しません。IEEE 754がsignbit * 2 ^(exp-127)* frac – Skeen

関連する問題