アプリ版:「スタンプのみでお礼する」機能のリリースについて

小数点が混じった2進数の11.11を8進数に変換するさい、2進数の11.11をいったん10進数に変換します。因みに10進数にすると3.75になります。そしてここで質問です。
この3.75を下一桁から求めるやり方で計算していくと、まず8進数にしたいのだから3.75/8なのですが
ここから先をどうしてよいのかが分からないのです。この式そのものの答えは、0.46875ですが、馬鹿正直に割り切るべきですが、それともどこかで計算を止めるべきですか。
因みに変換ツールで答えを出すと11.11は、03.60となりますが、0.46875は、見る影もありません。どうすれば、3.75/8から先述の答えである03.60にたどり着けますか。

質問者からの補足コメント

  • うーん・・・

    ご回答有難うございます。
    εというしるしは、イプシロンというものみたいなのですが、ネットで暫く調べてみても、回答文のイプシロンが下記サイトのイプシロンのどれに合致するのかがよくわかりません。
    https://ja.wikipedia.org/wiki/%CE%95

    3.75は、10進数で10進数から別のn進数を求めるときは、
    10進数の数値/n^m=商、余
    余/n^m-1...
    或いは、
    10進数の数値/別のn進数=商、余
    商/別のn進数...
    上記のような除算していたような気がするのですが、イプシロン印も相まってよく理解できませんでした。

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/11/02 19:47
  • うーん・・・

    ご回答有難うございます。
    >>=1*2^1+1*2^0+1*2^(-1)+1*2^(-2)=3.75
    ここまでの式は理解できるのですが、そこから下の式は、どういうロジックで作られた式なのか理解できませんでした。
    「3*8^0+8*(1*2^(-1)+1*2^(-2))/8」の「3*8^0+...」の3は、3.75の3ですか。と、すると
    「8*(1*2^(-1)+1*2^(-2))/8」は、.75を指していることになりますか?

    No.4の回答に寄せられた補足コメントです。 補足日時:2016/11/02 19:53

A 回答 (7件)

2進数から8進数にするだけなら#1の方の方法が一番良い。

10進数に一度変換するのは手間がかかりすぎる。

それでもあえて10進数の3.75を8進数に変換する方法を説明します。
まず、整数部分と小数部分に分けます。3と0.75に分けます。
整数部分の3はそのままで良いでしょう。小数部分を8進数にするにはまず8倍します。
0.75*8=6
これで小数点以下の1桁目は"6"となります。また、この計算で小数部分が出てこなかったここで計算はおしまい。

たとえば10進数の"0.3"を8進数に変換するには
0.3*8=2.4 1桁目は"2" 次に2.4の小数部分を8倍して
0.4*8=3.2 2桁目は"3" 同様に
0.2*8=1.6 3桁目は"1"
0.6*8=4.8 4桁目は"4"
0.8*8=6.4 5桁目は"6" ここで1桁目の計算の際に出てきた0.4が残りますのでこれからは循環となります。

よって
0.3(10進)=0.2314631463146...(8進)
となります。
    • good
    • 1

No.2です。

ありゃりゃ、「補足」に書かれたことについて。

>εというしるしは、イプシロンというものみたいなのですが、ネットで暫く調べてみても、回答文のイプシロンが下記サイトのイプシロンのどれに合致するのかがよくわかりません。

単に、「もしも、8進数の4ケタ n1, n2, n3, n4 だけで表わせない「はんぱ分」があるかもしれないので、これを仮に「 ε
」と書いておいて、あとで ε=0 を確認した」というだけのことです。

この式↓が何を意味しているのか、何をしようとしているものなのか、全く理解できていないということですね?
  n1 * 8^1 + n2 * 8^0 + n3 * 8^(-1) + n4 * 8^(-2) + ε

「n進数」とはどういうことなのか、その「定義」を理解していないのではありませんか?

こういう「本質的でない」部分と、「重要で本質的な部分」の区別がついていないのが、質問者さん最大の問題のように思います。
    • good
    • 0

なんというか, 「位取り記数法」という考え方を理解できていないように思えるんだが, どうだろうか.

    • good
    • 0

2進数の11.11


=1*2^1+1*2^0+1*2^(-1)+1*2^(-2)
=3*8^0+8*(1*2^(-1)+1*2^(-2))/8
=3*8^0+6*8^(-1)
=3.6 (8進数での表示)
この回答への補足あり
    • good
    • 0

>どうすれば、3.75/8から先述の答えである03.60にたどり着けますか。


とりあえずココに対して…。

0.75は分数にすると3/4。
分母を8にすると6/8。

・・・
小数点より上の数まで一緒に割ってどうする。
    • good
    • 0

No.1です。



ちなみに「2進数の11.11」であれば、「8進法の03.60」と書くのは不自然です。
「8進法の03.60」になるのは、「2進数の 000 011.110 000」です。分かりますか?

さらに、ちなみに、「いったん10進数に変換」するのであれば、
  2進数の11.11
→ 1*2^1 + 1*2^0 + 1*2^(-1) + 1*2^(-2)
 = 2 + 1 + 0.5 + 0.25
 = 3.75      ①

これを8進数にするには、たとえば
 n1 * 8^1 + n2 * 8^0 + n3 * 8^(-1) + n4 * 8^(-2) + ε
とおいてみれば、これは
 n1 * 8 + n2 + n3 * 0.125 + n4 * (1/64) + ε
ということですから、①との比較から
 n1 = 0
 n2 = 3
 n3 = 6
 n4 = 0
  ε = 0
で、8進数の「3.6」となることとが分かります。
この回答への補足あり
    • good
    • 0

2進数→8進数なら、わざわざ10進数にしなくとも、「2進数の3桁ごとにまとめて、8進数の1桁にする」という操作で可能ですよ。



コンピュータ関係の勉強をしたことがあれば、2進数←→16進数の変換はよくやりますよね?

2進数の11.11 = 2進数の 011.110
 ↓
8進数の 3.6
・2進数の 011 → 8進数の 3
・2進数の 0.110 → 8進数の 0.6 (2進数の 110 → 8進数の 6)
ですから。
    • good
    • 1

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