• ベストアンサー

n進法→m進法への変換

やりなおしのSPI問題に頭を痛めています。10進法→n進法、n進法→10進法、というやり方はそれぞれ理解できますが、以下のような応用になると、うまくできません。どなたか、宜しくお願いします! 例題1 3進法で3桁の数は何個あるか。 (書き出していくとわかるのですが、それ以外に何か公式のようなもので求める方法がありますでしょうか。他の進数になるとたちまち困ります。) 例題2 3進法の112201は5進法でいくらか。 (いったん10進法に直さずに、n進法→m進法への変換をダイレクトに行なえ、効率的でわかりやすい方法はありますでしょうか。)

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

  • ベストアンサー
  • oyaoya65
  • ベストアンサー率48% (846/1728)
回答No.3

ヒント 例題1 一応正整数(固定小数点)と仮定します。 3進法の最大数は(222)3=2*3^2+2*3^1+2*3^0 =18+6+1=25 最小は(000)3=0ですから何個か分かりますね? 例題2→3進法→10進法→5進法 (112201)3=4*3^4+8*3^2+1=4*9^2+8*9+1=397 =79*5+2 =(15*5+4)*5+2 =((3*5+0)*5+4)*5+2 =>5進法 >n進法→m進法への変換をダイレクトに行なえ、効率的でわかりやすい方法はありますでしょうか。 一般的には良い方法ありません。 ただし、 2進法-4進法,2進法-8進法,2進法-16進法 3進法-9進法 4進法-16進法 5進法-25進法 のようにn進法と(n^k)進法の間ではダイレクトに変換できます。 ですから、 計算機のソフトや情報処理を扱う技術者の間では 2進法-8進法,2進法-16進法 が良く使われてきたし、 また2進法と10進法の変換を見かけ上で行う2進化10進法やV4のIPアドレス(32ビットの2進数)をドット区切り10進数の4組で表すことが行われたりしているわけです。 これらは一般的にn進法の変換が簡単にいかないために変換しやすい変換だけあつかったり、見かけ上2進数を10進数との関連付ける便法が採用されているわけです。 決して質問者さんだけが任意のn進法を別のm進法に変換するのに困っているわけではないですね。

その他の回答 (5)

  • maimait
  • ベストアンサー率38% (5/13)
回答No.6

#4です。 >割り算の最後の<+1>のところが<+2>の単純ミスのようです。  確かに明らかな単純ミスね。自らややこしいと書いたダイレクト変換での計算ミスを出してしまったようでお恥ずかしい限りです。  oyaoya65さん、ご指摘ありがとうございました。

  • oyaoya65
  • ベストアンサー率48% (846/1728)
回答No.5

#3です。 A#2,A#3では (112201)3 =(397)10 となっています。 私もA#4さんのダイレクト割り算もやっていましたが計算ミスする恐れがあったので回答から省きました。 ダイレクト割り算も出来るのはA#4さん回答の通りですが 112201 の割り算の最後の<+1>のところが<+2>の単純ミスのようです。 <+1>だと10進数に直すと396になります。 (確認してみてください。) そこだけ直せばダイレクトな割り算でもいけますね。 >=2221*12+1 >=(120*12+11)*12+1 >=((10*12+0)*12+11)*12+1 最後の式はA#3の >=((3*5+0)*5+4)*5+2 の式に対応しています。

  • maimait
  • ベストアンサー率38% (5/13)
回答No.4

例題2 ややこしいので不要と思われるけど、ダイレクト変換方法。 十進法以外での計算(割り算の筆算)で混乱しないなら、 3進法のまま5(3進法では12)で割りつづけ、 余りを順に出せば5進法の各桁が出てきます。 112201 =2221*12+1 =(120*12+11)*12+1 =((10*12+0)*12+11)*12+1 以下は答えになるので略 上の説明で混乱するor難しいようだったら、素直に十進を経由することをお薦めします。 何進数での変換も同じ要領でできることは確認していますが、10進数でない計算を苦もなくできる人向けかも。

  • ma-chan45
  • ベストアンサー率31% (46/145)
回答No.2

たびたびすみません。 NO.1です。 例題2ですが、やはり、一度10進数に直してやるのが一番分かりやすくて間違いが少ない方法だと思います。 112201(3) =(3^5x1)+(3^4x1)+(3^3x2)+(3^2x2)+(3^1x0)+(3^0x1) =397(10) この397を5進数に直してあげればよいかと思います。

  • ma-chan45
  • ベストアンサー率31% (46/145)
回答No.1

こんにちは 例題1のほうだけですが・・・・・ 3進法ということは、0・1・2の3つの数字のみをつかいますよね。 3桁ということは、この3つの数字がそれぞれ3回づつ使われる、ということなので、3桁の数は【 3×3×3 】個。 と、言いたいところですが、しかし、3桁目(一番大きい桁)に「0」を使うことはありませんので、 結局は【 2×3×3 】個、3桁の数がある、ということになります。 これでいいんじゃないかな、と思いますが・・・・。 例題1だけの回答ですいません。

関連するQ&A

  • n進法の変換!

    数学が得意で、Excelの達人の方!(じゃなくてもいいんですが……) たとえば、Windowsに載っている、電卓を関数モードで使うと、16進法10進法8進法2進法の変換ができるんですが、ほかには変換できません。 と、言うことで、数字(12桁以上必要)を入れると、ほかの進法に変わるシートを作りたいんですが、ぜんぜんうまくいきません。 誰か、うまいのを教えてください。体裁は気にしません。  ※変換前のn進法のnを、たとえばA2に入力  ※変換後のn'進法のn'を、たとえばA3に入力  ※変換する、n進数を入力 と、こんなシートを作りたいんです。 よろしくお願いいたします。

  • n進法についての問題です。

    nを2以上の整数とした時 n進法で表されて4桁の数abcd(n)のうちa=d≠0 b=cであるものを n進法の4桁回文とよぶ。 (1) 4進法の4桁回文全ての最大公約数を求めよ。 (2) n進法の4桁文は全てn+1で割り切れる事を示せ。 ※宜しくお願いします。

  • 「n進法から10進法への変換」

    *テキストの解説 5進法の「2132」を10進法へ変換する。 5進法の数は1桁目で1が5つ集まって次の桁へ繰り 上がるので2桁目の1は5だけの値がある(※1)。 2桁目でも5が5つ集まると繰り上がるので3桁目 の1は5×5=25の値(※2)があり4桁目は25 ×5=125の値(※3)があることになる。 2132=125×2+25×1+5×3+1×2=292 (終) 0,1,2,3,4, 10,11,12,13,14 20,21,22,23,24 30,31,32,33,34 質問1(※1 ※2 ※3) 2桁目の1は10なのになぜ5だけの値なのですか? (※1~3までそれぞれわかりません。) 質問2 最後の公式はどこからどう出てきたのですか? 質問3 公式ででた答えが正解の解答であるということを 確かめるためにはどうしたらよいのですか? 毎度のことですが、ちっともわからないので宜しく お願いします。

  • n進法の変換

    数字の0~9および英字のA~Z(OおよびIをのぞく)の34文字を使用した34進法の4桁の数字を10進法への変換方法、およびその逆(10進法→34進法)の変換方法をエクセルの計算式またはマクロを使用し作成する方法を教えてください。

  • 10^n から1を引いた数は9で割り切れることについて

    下記の過去質問における、私自身の回答(#4と#5)に関連した質問です。 http://oshiete1.goo.ne.jp/qa2100301.html たとえば、 10進法であれば、 「頭の桁が1で、その下がゼロばっかりの数」から1を引いた数は9で割り切れ、 16進法であれば、 「頭の桁が1で、その下がゼロばっかりの数」から1を引いた数はFで割り切れる、 ということについてです。 上記リンク中の自分の回答の文章で、 「ところが、10^n から1を引くと、必ず9だけが並んだ自然数(ただし、n=ゼロのときだけはゼロ)になります。これは、必ず9で割り切れます。」 という部分についてなのですが、 なんか、ちゃんとした証明の文章になっていないです。 このことをエレガントに、できるだけ簡潔に、証明する方法はないものでしょうか。

  • n進数の値を10進数の値に変換するには?

    こんにちは。 C言語において、n進数の値を10進数の値に変換する方法を考えています。 例えば、2進数の101を、10進数で表すと5になります。 これを関数化し、 n_to_m(int x, unsigned n); といったプロトタイプで、 渡された整数x(n進数)を、10進数での値に変換する関数を作りたいのです。 逆に、10進数の値を、n進数の値に変換する関数も一緒に作りたいと考えています。 何かいい方法を思いついた方がいらっしゃれば、是非アドバイスを頂きたいと思います。 では、よろしくお願い致します。

  • 小数の 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となることがわかる    」 これは、それぞれどのように計算をして求めているのでしょうか? 自分で計算してみたのですがよくわかりませんでした。 よろしくお願いします。

  • mを自然数,nを奇数とするとき,2(1^n+2^n+…+m^n)がm(m+1)で割り切れる

    mを自然数,nを奇数とするとき,2(1^n+2^n+…+m^n)が m(m+1)で割り切れることを証明したいのですが、あることに気づく必要があるといわれたのですが、それがどうもよくわかりません。 また、nが偶数のときには、何か別の性質があるのでしょうか?

  • gf・cmからN・mへの単位の変換

    題名の通りです。 たとえば 90gf・cm を N・m への変換する場合は何N・mになるのでしょうか?

  • rgb値を16進数に変換

    r,g,b値がそれぞれ10進数で与えられ、それらをそれぞれ16進数に変換します。このとき、例えばrの値が10進数でnだとすると、 (16進数の2桁目)=n/16 (16進数の1桁目)=n mod 16 になると思いました。 しかし、手元にある、人からもらったサンプルでは、 (16進数の2桁目)=(n mod 256)/16 となっていました。1桁目は私の考えと同じでした。 なぜn mod 256が入っているのか分かる方、教えてください。