タイトル : Re^9: Double型のアスキー変換について 投稿日 : 2011/07/04(Mon) 10:46 投稿者 : 魔界の仮面弁士
> 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 |