人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

?進法の数字を10進法にする方程式を教えてください。また、なぜ、そのような方程式になるかどうかも、教えてください。また、10進法だけでなく、たとえば、16進法や、2進法など、他の「進法」にする方程式が、あるのか、または、ないのかも、教えてください。


●質問者: ekisyo
●カテゴリ:コンピュータ 学習・教育
✍キーワード:数字 方程式
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pyopyopyo
●27ポイント

wikipedia に解説があります.

http://ja.wikipedia.org/wiki/%E4%BD%8D%E5%8F%96%E3%82%8A%E8%A8%9...

?進法の数字を10進法にする式は,たとえばX進法の数字をABCDとすると

D \cdot X^0 + C \cdot X^1 + B \cdot X^2 + A \cdot X^3

となります.

一般化すると,X進数の値の各桁を\{c_i | i=0,\dots,r\} とするとX進数の値を10進数の数値Tに変換する式は

 T = c_0 \cdot X^0 + c_1 \cdot X^1 + \dots + c_r \cdot X^r

となります.

他の「進法」についても,16進数の時はX=16,2進数の時はX=2とすることで,全ての「進法」が変換できます.


詳細については wikipedia を参照してください.


2 ● showyou
●27ポイント

http://www.asahi-net.or.jp/~AX2S-KMTN/ref/bdh.html

↑を読めば2進,16進と10進との変換はできるかと思います。


X進法の数値は、10進数において次の式で表すことができます。

an * X^n + a(n-1) * X^(n-1) + ・・・ + a0 * X^0

ここでan,a(n-1),a0は0から(X-1)までのいずれかの数値、X^nはXのn乗を意味します。X^0は1です。


たとえば10進数で324という数は

3*10^2 + 2*10^1 + 4*10^0

=3 * 100 + 2 * 10 + 4 * 1

と表せます。


一方16進数で144という数は10進法で

1*16^2 + 4*16^1 + 4*1^0

=1 * 256 + 4 * 16 + 4

=256 + 64 + 4

=324

となります。


さらに17進数で121という値を、10進法で表すと、

1*17^2 + 2*17^1 + 1*17^0

=289+34+1

=324

となります。


一方で10進からX進への変換ですが、先ほどの式を次のように変形していくとわかります。

an * X^n + a(n-1) * X^(n-1) + ・・・ + a0 * X^0

= a0*X^0 + a1*X^1+ a2*X^2+・・・+a(n-1)*X^(n-1) + X^(n-1) + an*X^n (式の順番変えただけです)

= a0 + X*( a1 + X*( a2 + X*(・・・+ a(n-1) + X*( an ) )))・・・)

この式をXで割る・・商はa1 + X*( a2 + X*(・・・+ a(n-1) + X*( an ) )))・・・)で余りはa0

さらにXで割る・・商はa2 + X*(・・・+ a(n-1) + X*( an ) )))・・・)で余りはa1

・・・

最後までXで割る・・余りはan

となります。


具体的な例を挙げますと、先ほどの10進で324という値を17進に変換する場合、

324 ÷ 17 = 19 余り 1

19 ÷ 17 = 1 余り 2

となります。これを先ほどの式の形で表すと、

324 = 1 + 17*( 2 + 17*( 1 ))

324 ÷ 17 = (2 + 17*( 1 )) 余り 1

(2 + 17*( 1 )) ÷ 17 = 1 余り 2

1 ÷ 17 = 0 余り 1

となります。

各余りがそれぞれa0,a1,a2に相当しますので、これをa2,a1,a0と並べれば

121という値を得ることができます。


他の進法からX進法に直す方法も同様にやっていけばあるのかも知れませんが、私は詳しく知りません。

ただし、2進と8進、16進間の変換は比較的容易に行えます。(8進-16進は一手間かかる)

それは、8=2^3であり、16=2^4であることから、

8進の1桁=2進の3桁,16進=2進の4桁に相当するからです。

このため、

8進,16進→2進は、各桁の値を2進に直してくっつける(例:16進で144 = 1 0100 0100)

2進→8進,16進は、下から3桁もしくは4桁ごとに区切って変換する(例:101000100を8進数に変換→ 101 000 100→504)

ことができます。


3 ● minkpa
●26ポイント

http://members.jcom.home.ne.jp/sansakuro/Thema/Word/Them_083.doc

こちらに詳しく解説されています。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ