• ベストアンサー

小数点⇔n進数のやり方

いつもお世話になっております。 早速ですが、VB2008にて小数点⇔n進数のやり方がわからず困っています。 16進数 404ccccd 10進数 1078774989 2進数 1000000010011001100110011001101 小数点に変換すると3.2になるはずですが、やり方がわかりません。 CONVERTやbitconverter等試してみたのですがうまくいきません。 ネットで検索し、小数点からn進数は見つけたのですが、逆の方法が見つかりません。 逆演算すればとも思ったのですが、いまいちうまくいかず質問させていただきました。 宜しくお願いいたします。

  • hoido
  • お礼率76% (64/84)

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

単精度実数型の内部形式です。 全体は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進数では表わせません。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 16進数 404ccccd > 10進数 1078774989 > 2進数 1000000010011001100110011001101 > 小数点に変換すると3.2になるはずですが、やり方がわかりません。 どれが3.2になるのですか? 10進数 1078774989はどうみても1,078,774,989でしょ? 337,117,184.0625で除算するなら別ですが。 質問される元データが誤ってるように思います。

hoido
質問者

お礼

bin-chan様 回答ありがとうございます。 もう一度確認してみます。

関連するQ&A

  • 進数の小数点をどう変換するのか

    現在進数の小数点で詰まってます 2進数⇒10進数へ変換するときは 11.01011⇒ 1*2~1+1*2~0+0*2~-1+1*2~-2+0*2~-3+1*2~-4+1*2~5 2 +1 +0 +0.25 +0.125 +0.625 +0.3125 3+1.3125 4.3125 2進数⇒16進数へ変換するときは 11.01011⇒ B.0 |8+0+2+1| B.0B で良いと思ってます(間違ってたらすいません) ここで本題なんですが、小数点を含んだ進数で 2進数⇒8進数 8進数⇒2進数 10進数⇒2進数 16進数⇒2進数 この[通り]の場合の小数点の出し方を何方かご存知ないですか? 無ければ無い、あればあるで教えて頂けないでしょうか 扱う数字はいくつでも勿論結構です、宜しく御願いします

  • 2、8、10、16進数に変換(小数点)

    10進数や2進数や8進数や16進数に変換する場合、 小数点以下を変換できません。 方法はありませんか?

  • 2進数データのビット演算

    vb.netにて 0と1からなる2進数で記録した2つの値をビット演算したいと思っております。 Convert.ToInt32("1111101000", 2) などを使って、一度数値に変換して演算すれば、計算可能なことはわかったのですが、計算に利用したいデータが2進数で1000桁ほどあります。桁数が多い場合、Convert.ToInt32ではエラーが出て実行できません。 無数に長い2進数のデータをビット演算するにはどうすればよろしいでしょうか。 ご存知の方、ご教授よろしくお願いいたします。

  • 浮動小数点の変換手順

    単精度の浮動小数点の演算で、符号無しの2進数に変換した後、バイアスとして127を加えて嵩上げする理由は何でしょうか?

  • 浮動小数点法での2進数変換

    浮動小数点法を用いての2進数への変換に関して質問です。 10進数の(-0.0001)を浮動小数点表示を用いて2進数に変換しなさいという問題が全くわかりません。 どなたか詳しく解説してください。お願いします。

  • 10進数の14.5を浮動小数点(IEEE754形式)の2進数に変換するにはどうしたらよいでしょうか?

    10進数の14.5を浮動小数点(IEEE754形式)の2進数に変換するにはどうしたらよいでしょうか? 10進数の-7.5を浮動小数点(IEEE754形式)の2進数に変換するにはどうしたらよいでしょうか? 計算方法を教えてください。

  • 固定小数点で0.1?

    10進から、2進数、16進数に変換するのによくわからないことがあります。 固定小数点で0.1はどのように表せるのでしょうか? どなたかわかりやすく教えてください。お願いします。

  • 小数点の引き算が不正確

    みなさまこんばんわです。よろしくお願い申し上げます。 VB.NET 2008でFunctionプロシージャを作っています。 その内容は、Double型の値を与えると、その小数点第一位のみをInteger型で返すというものです。 たとえば、3.142を与えると、1を返します。38.98を与えると、9を返します。 これを次のようにコーディングしました。コメントは、39.9を与えたときの動作です。答えは、9を期待しますよね。 ------------------------------------- Function SyosutenWoKaesu(ByVal NyuuryokuSuuchi As Double) As Integer Dim SyosutenBubun As Double Dim SeisuuBu As Integer SeisuuBu = Fix(NyuuryokuSuuchi) 'Fix関数は、入力数値の整数部を返すので、39をInteger型で返します SyosutenBubun = NyuuryokuSuuchi - CDbl(SeisuuBu) 'データ型をDouble型に変換し、引き算。39.9-39なので、0.9という答えを期待しますが、実際は、0.899999999999999が返ってきます SyosutenBubun = SyosutenBubun * 10 SyosutenWoKaesu = Fix(SyosutenBubun) '10倍した数の整数部なので、8を返します。困ります。 End Function ------------------------------------- なんで 39.9 - 39 が0.9じゃないんでしょうか? しかも、10.9など、少ない数字だと、きちんと演算されます。また、100.9などだと、途中、0.900000000000006などの数値になるんですけど、答えはきちんと9を出力します。 また、小数点第一位が9以外だと、うまくいくんです。 ちなみに、CDbl関数を使わなくても同じでした。また、-演算子の代わりに、Mod演算子(割り算の余りを返す演算子)を使っても全く同じでした。 なんでこんな不正確な演算結果になるんでしょうか? あるいは、別のもっとスマートな方法がありますでしょうか? よろしくお願い申し上げます。

  • 小数の 10進数→n進法の変換  について

    先日このことに関して質問をさせてもらったのですが その中で 10進法の小数をn進法に変換する場合 普通は、大きい桁からまとまりを作っていくと思うのですが 小さい桁からまとまりを作って求めることも出来るというように回答をいただいたのですが 「 0.8125という10進数の数を2進法にしたい場合に、最も小さい桁からまとまりを作っていけば、 0.8125に、2^(-4)=0.0625が1個含まれる 0.8125-0.0625=0.75に、2^(-2)=0.25が1個含まれる 0.75-0.25=0.5に、2^(-1)=0.5が1個含まれる ということで、2進数で.1101となることがわかる    」 これは、それぞれどのように計算をして求めているのでしょうか? 自分で計算してみたのですがよくわかりませんでした。 よろしくお願いします。

  • 小数点の読み方

    いつもお世話になります。 英語で音読の練習をしていますが、例えば、 ¥12.7 2.77% 0.565 など、ピリオドの部分はなんと発音すればよいのでしょう? それと、小数点以下の部分、小数点第2位以降はなんと発音すればよいのでしょう? よろしくお願いします。