0

浮動小数点数を2進数から使用可能な10進数に変換する必要があります。

もちろん、私の浮動小数点数はバイトに分割されているので、合計4バイトです。
1 2 3 4
[xxxxxxxx] [xxxxxxxx] [xxxxxxxx] [xxxxxxxx]

これらの4バイトはすでに10進数に変換されているので、たとえば
1 2 3 4
[0] [10] [104] [79]

これで、仮数は3つの部分、つまり右端の2バイト(3と4)とバイト2に保持されますが、MSBビットはありません(1つは簡単にマスクできるので、そこにも10進数があると仮定します)。つまり、3つの10進数です。

これらの3つの10進数の浮動小数点仮数への簡単な数学的変換はありますか?

これは線に沿っています。整数を取得する必要がある場合、式は
10 * 65536 + 104 * 256+79になります。

4

2 に答える 2

3

これらのバイトaを 、b、および と呼びcます。aは既にマスクされているため、仮数のビットのみが含まれ、指数は含まれておらず、数値は IEEE-754 32 ビット 2 進浮動小数点であり、バイトは適切なエンディアンで取得されていると想定しています。

生の指数フィールドが 1 ~ 254 (したがって、0 または 255 ではない) の場合、仮数は次のようになります。

1 + a*0x1p-7 + b*0x1p-15 + c*0x1p-23

または、同等に:

(65536*a + 256*b + c) * 0x1p-23 + 1.

生の指数フィールドが 0 の場合、合計から 1 を削除します (数値は非正規またはゼロです)。生の指数フィールドが 255 の場合、浮動小数点値は無限 ( ab、およびcがすべて 0 の場合) または NaN (それ以外の場合) です。

于 2013-03-13T18:35:12.863 に答える
2

変換を行ってからしばらく経っているため、あまり役に立ちませんが、このチュートリアルが役立つことを願っています.

于 2013-03-13T18:17:43.770 に答える