- ベストアンサー
基数変換の数学的説明
文系の四大卒です。 ITパスポートという初歩的なパソコン資格の受験用に、10進法を2進法に変換する方法として、「2で割って、余りを下から順に並べる」と教わりました。 「はあ、そうですか」とその場では実際的のこととして鵜呑みにしましたが、内心いまひとつ納得がいきません。このやり方を受験用の方法論でなく、より数学的に説明するとどうなりますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
たとえば 4 桁の自然数 N の2 進記法は、 N = B3*(2^3) + B2*(2^2) + B1*(2) + B0 における、{B3, B2, B1, B0} を列記したものですね。 上式から明らかなように、B0 は N を 2 で割ったときの余り。 割り算の商 N' は、 N' = B3*(2^2) + B2*(2) + B1 なので、B1 は N' を 2 で割ったときの余り。 …という繰り返し。
その他の回答 (2)
- tadys
- ベストアンサー率40% (856/2135)
文字列”ABC”をn進法として解釈するという事は ABC => Axn^2 + Bxn^1 + Cxn^0 という数値を表すとする事です。 Axn^2 + Bxn^1 + Cxn^0 を 2で割ると Axn^1 + Bxn^0 余り C Axn^1 + Bxn^0 を 2で割ると Axn^0 余り B Axn^0 を 2で割ると 0 余り A となって 余りを並べると ”ABC” となります。 XYZ(10)で10進数をABC(2)で2進数を表すとして、 10進数の”XYZ”が2進数の ”ABC”に変換すされるばあいは 最初はどんな2進数になるか分からないので XYZ(10) = ???(2) 2で割ると aaa(10) 余りC =ss(2) 余りC (2で割った時の余りは10進でも2進でも変わらない) ( aaaやssがどんな表記になるかは具体的な数値により変わる) aaa(10) = sss(2) を2で割ると bb(10) 余り B = t(2) 余り B bb(10) = t(2) を2で割ると 0 余り A = 0 余り A となります。 つまり2で割った時の余りについては10進数と2進数で差がないので、 10進数で2で割る操作を繰り返して余りを求めれば2進数に変換できるのです。 同様に3進数や4進数、5進数なども有ります。 コンピュータの世界では8進数と16進数が良く使われます。 基数に関しては正の整数である必要は無く、0以外で有ればOKなので、実用性は別として、変な進数の表記を考えることができますよ。
お礼
書き込みありがとうございました。 数学って面白そうですよね。「博士の愛した数式」で数学に興味を持ちました。^^;
補足
冒頭の一文「文字列ABC・・・?」 でちょっとつまずいてしまいました。
- edomin7777
- ベストアンサー率40% (711/1750)
2進数を10進数に変換するとき(「()」で、進数を表しています。) (1111011)2 =(1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2^1+1*2^0)10 =(123)10 で変換されるのは判りますよね? このとき元の2進数は (1111011)2 =1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2^1+1*2^0 =2*(2*(2*(2*(2*(2*(1)+1)+1)+1)+0)+1)+1 と表すことが出来ます。 2で割ったときは外側の余りから最初に現れてきます。 これが、2で割った余りを下から上に読んでいくと2進数に変換される理由です。 こんな説明で判ります? 不十分だと思うので、判らなかったら補足等お願いします。
お礼
ご教示ありがとうございます。 「余り」が桁の数字として表示されてしまうという(文系的な)違和感が、数学のロジックを邪魔しているような気がします。(こんな説明で判ります?^^;)
お礼
早速の回答ありがとうございました。 ・・・ナルホド。 敢えて表現しませんが、少し理解度が深まりました。