タイトル : Re^10: Double型のアスキー変換について 投稿日 : 2011/07/04(Mon) 11:40 投稿者 : ハイド
> > Double 65.0 の内部バイナリ表現が、 > > 00,00,00,00,00,40,50,40 > > となる理由ですが、この内訳は、以下のようになっています。 > > 念のため、今度は逆方向の変換も説明しておきます。 > > まずは、00,00,00,00,00,40,50,40 を 64 桁の 2進数表現に変換します。 > ここでは説明の都合上、並び順を逆にしてあります(元がリトルエンディアンなので)。 > > [0100 0000],[0101 0000],[0100 0000],[0000 0000],[0000 0000],[0000 0000],[0000 0000],[0000 0000] > > そして Double 型(倍精度浮動小数点型)とは、 > 符号部 1bit > 指数部 11bit > 仮数部 52bit > から成るため、上記 64 bit を 1、11、52 に分解します。 > > [0][10000000101][0000010000000000000000000000000000000000000000000000] > > > 符号部「0」。これは「+」を表します。 > > 指数部「10000000101」。10進数でいうと 1029 です。 > 指数部は 1023 がバイアスされているため、これは 6桁分のシフトを意味します。 > > 残る仮数部については、2進小数表現としての > [1.0000010000000000000000000000000000000000000000000000]を意味します。 > > 符号部が+、指数部で 6 桁シフトされているため、これは > 「+1000001.0000000000000000000000000000000000000000000000」の意味です。 > つまり、10進数でいえば『65.0』に相当する値というわけですね。 > > 参考情報として、こちらもどうぞ。 > http://www.gizcollabo.jp/vbtomo/boards/vbqanda.php?do=spread&num=14852 詳しく説明していただきありがとうございます。 大変勉強になりました。 |