重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

A 回答 (3件)

細かい証明は知りませんが、一応参考に・・・


例えば、10進数14.375を2進数に直す場合、こんな方法があります。
 手順
1.整数部と小数部は分けて計算する。
ここで先に14を直すと 1110となります。
   つぎに小数部について考えます。
  2.小数部に2をかける。この場合、0.375*2=0.75となります。
ここで、出た値の整数部分が1以上
      (2進数の場合は1、基数がn⇒n以上)⇒
   その整数部分を取り出して値を小数にしてまた2をかける。
   それ以外(整数部分=0) ⇒ 0を取り出して(言い方が変です   が)また2をかける。
   今回の場合、後者ですから、 0.75*2=1.5となります。
   これが最終的に0になるまで繰り返します。
   1.5-1=0.5 0.5*2=1 1-1=0
 ここで整数部分が0になったので、
  3.取り出した順に並べる。この場合取り出した値は順に、011です から、頭に"0."をつけて答えは0.011となります。
  これを筆算で表すと、
   0.375
zzzzzz* 2
0 ← 0.750
↓zzzz* 2
1 ← 1.500 → 0.500
↓zzzzzzzzzzzzzz* 2
1 ←zzzzzzzzzzz 1.000 → 0.000 = 0
→ 0.011(うまく表せなくてスイマセン)
4.整数部と小数部をあわせる。この場合1110と0.011をくっつけて 答えは1110 . 011となります。
 今回は、2進数なので2を基数としてやりましたがこれがn進数の場合は、基数をnに変えればどんな数でも変換することができます
(整数部分でも同様。但し、基数が10以上の場合は10以上の数を見やすくするため別の文字でくくる場合がある。例えば 10 → A など)。
 最後に8,16進数の場合ですがこれらの値は2進数を3桁,4桁ごとに区切った値ですから10進数から2進数に直すことができれば、 
i) 8進数の場合
  1110 . 011を3桁ごとに区切って(整数部分は←方向に、小数部分は→方向に区切るもしも足りない場合は0を補う)この場合、
  1 110 . 011 → 001 110 . 011 となりますからそれぞれ8進数に直して、 16 . 3となりますし、
ii)16進数の場合
 でも同様で、
  1110 . 011を4桁ごとに区切って
  1110 . 011 → 1110 . 0110 となりますからそれぞれ16進数に直して、 E . 6となります。
 かなり長くなってしまいましたがどうでしょうか?







 
    • good
    • 0

文面から見ますと、変換は貴殿の方が慣れているようで。



10進法
100=10^2
10=10^1
1=10^0
0.1=10^(-1)
0.01=10^(-2)
0.001=10^(-3)

2進法
0.1→2^(-1)=0.5
0.01→2^(-2)=0.25
0.001→2^(-3)=0.125
0.0001→2^(-4)=0.0625
0.00001→2^(-5)=0.03125

8進法
0.1→8^(-1)=0.125
0.01→8^(-2)=0.015625
0.001→8^(-3)=0.001953125
ーーー
2進法→10進法
0.111→0.5+0.25+0.125=0.875
---
10進法→2進法
0.1=(1/10)=(1/2^4)+(1/2^5)+(1/2^8)+(1/2^9)+・・・
0.1→0.0001100110011・・・
0.2→0.0011001100110・・・
0.4→0.0110011001100・・・
0.8→0.1100110011001・・・
0.3=0.1+0.2などなど
意外に面倒で、この辺までにします。
ーーー
    • good
    • 0

10進数の、少数以下を8進数に変換する場合は、少数以下の数値を8倍します。

少数より上を8進数に変換します。
次に残った少数以下を、8倍して8進数に変換する。以上を繰り返して、少数以下が0になるまで繰り返すと求まります。
他の場合も同じです。
    • good
    • 0

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