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

n進数を別のn進数に換算するときに、以下の①と②の式、どちらかを利用します。

①n進数一つ一つの数字にn^m乗を乗算(仮に3進数なら3^m乗を乗算)することで別のn進数に変換できる。

 666(7進数)→10進数
 6*7^2+6*7^1+6*7^0=342

②n進数からn進数に変換するときは、下一桁目と上一けた目を求める二通りの方法がある。
上一桁目から求めるときは、n進数に変換したいn進数の数値に対してその数値より上回らないn^m乗で割って、算出した余を、先ほど利用したn^mの指数を「-1」減算した数で割って、
さらにそのあまりにn^mを…というのを指数が0になるまで続ける。
下一けた目から求めるときは、n進数の数値に対して変換したいn進数の「n」で割っていく。割ったら、算出した商を同じようにnで割る。算出した商が1になるまで続ける。
例(上一けた目から求める式)
 342(10進数)→7進数
 342/7^2=6 余48
48/7^1=6 余6
6/7^0=6 余0


ここで質問なのですが、①と②の式の使い分けが分かりません。
今まで漠然とn進数(変換前)<n進数(変換後)なら①、n進数(変換前)>n進数(変換後)なら②だと思っていたのですが、どうも違うみたいです。
①と②は、n進数を換算するときどのようにして使い分けるのでしょうか。

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

  • ご回答有難うございます。
    なるほど、直接換算すると使い慣れている10進数以外で計算する羽目になるので、いったん10進数に変換してから再度変換したいn進数にするわけなのですね。
    勉強になりました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/11/01 13:29

A 回答 (3件)

変換前も後も同じ「n」で書かれているので、とても分かりづらいです。


頭の中を少し整理して、適切な文章に書き直されるとよいと思います。

お見受けしたところ、
①:10進数以外の n進法の数値を、10進法に変換する。
②:10進法で表記された数を、10進法以外の k 進法の表記に変換する。
というやり方が書いてあるようにお見受けしますが、違いますか?
    • good
    • 0

どちらでも結果は同じです。



ですが

①は n→10進以外では困難です。
②は 10→n進以外では困難です。

これは、普段我々が途中計算を10進数でやっているからです。

666(7進数)→10進数 は
6*7^2+6*7^1+6*7^0
=6*49 + 6*7 + 6
=294+42+6
=342
と計算したことと思います。
途中の式は10進法なので、普段計算しなれているものです。


ですが例えば666(7進数)→8進数 をやろうとすると
6*7^2+6*7^1+6*7^0
=6*61(8進) + 6*7(8進) + 6(8進)
=446(8進)+52(8進)+6(8進)
=526(8進)
となり、途中の8進法をそのまま計算できる人は少ないでしょう。
この回答への補足あり
    • good
    • 1

①はn進数から10進数、②は10進数からn進数へと、10進数だからです。


342という書き方、また342/7²=6 余48 は10進法の位取り記数法を使ってるんですよ。だからそうなるんです。

342(10進数)を以下に表現すると、一望できる筈。
(左辺は7進、右辺は5進)

7( 7・6 + 6) + 6 = 5( 5( 5・2 + 3) + 3) + 2
    • good
    • 0

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