tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。