プロが教えるわが家の防犯対策術!

いつもお世話になっております。
早速ですが、VB2008にて小数点⇔n進数のやり方がわからず困っています。
16進数 404ccccd
10進数 1078774989
2進数 1000000010011001100110011001101

小数点に変換すると3.2になるはずですが、やり方がわかりません。

CONVERTやbitconverter等試してみたのですがうまくいきません。
ネットで検索し、小数点からn進数は見つけたのですが、逆の方法が見つかりません。
逆演算すればとも思ったのですが、いまいちうまくいかず質問させていただきました。

宜しくお願いいたします。

A 回答 (2件)

> 16進数 404ccccd


> 10進数 1078774989
> 2進数 1000000010011001100110011001101

> 小数点に変換すると3.2になるはずですが、やり方がわかりません。

どれが3.2になるのですか?
10進数 1078774989はどうみても1,078,774,989でしょ?
337,117,184.0625で除算するなら別ですが。

質問される元データが誤ってるように思います。
    • good
    • 0
この回答へのお礼

bin-chan様
回答ありがとうございます。

もう一度確認してみます。

お礼日時:2012/10/12 22:38

単精度実数型の内部形式です。


全体は32ビットです。上位ビットから
符号1ビット:0は正、1は負です。
指数8ビット:7Fを0とします。
仮数24ビット(最上位は必ず1と見る
ので、残り23ビットと合わせて考え
ます)1ビットずつ並べると以下の
ようになります。

0 10000000 (1)10011001100110011001101
(1)は実際には記録されない最上位ビットです。

符号は0なので正です。
指数は0x80なので、7Fを0とすると+1です。

仮数の最上位桁が2の+1乗になります。
110011は(2の+1乗)+(2の0乗)+(2の-3乗)+
(2の-4乗)となります。

整数部は2+1だから3です。
小数部は0.125+0.0625+…で0.2の近似値です。
つまり、0.2は2進数では表わせません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!