記数法の変換(整数)(n進法→10進法、10進法→n進法)

スポンサーリンク
我々が普段使っているのは10進法である.  しかし,\ この基準(底)の10という数に数学的必然性はない.  おそらく,\ 両手の指を折って数を数えていたことから10進法が主流になったのだろう.  10に数学的必然性がないのならば,\ 他の数を基準として数えた人達もいたはずである.  現在でも時間には60進法が用いられているし,\ 英語には12進法の名残も見られる.  また,\ コンピューターの世界では必然的に2進法が用いられる.  ON・OFFの切り替えなど2値のみで動作でき,\ 構造が単純になるからである.  10進法に慣れすぎているだけで,\ 10を基準とすることが常に有利とは限らないのである.  では,\ 他の数字を基準とする記数法を学習することにしよう.  そもそも10進法とは,\ 数を0\,~\,9の10個の文字で表現する}ことである.  同様に,\ 2進法は0\,~\,1の2個,\ 3進法は0\,~\,2の3個,\ 5進法は0\,~\,4の5個}である.  また,\ 0\,~\,9にA,\ Bを加えた12文字で表現するのが12進法}である.  このように,\ 10を超えて数字が足りなくなればアルファベット(大文字)を含めて表す.  さて,\ どうすれば限られた文字数で●の個数を表現できるだろうか.  次のように,\ 文字が足りなくなるたびに位を1つ上げていく}のが合理的である.  この規則でいくと,\ 10進法では1が10個集まって10になるとき位が1つ上がる.}  10が10個集まって100になるとまた位が1つ上がる.}  100が10個集まって1000になるとさらに位が1つ上がる.}\ 以降も同様である.  文字数が10個しかないため,\ 10個そろうたびに位を上げるしかなくなるわけである.  よって,\ 1,\ 10,\ 100,\ 1000,\ $・・・・・・$の位ができることになる.  結局,\ 10の累乗($・・・,\ 10^3,\ 10^2,\ 10^1,\ 10^0}$)を位取りの基本とするのが10進法である.  例えば,\ 10進法で表された2846は次のような意味合いをもつ.  同様に,\ 2進法では1が2個集まって2になるとき位が1つ上がる.}  2が2個集まって4になるとまた位が1つ上がる.}  4が2個集まって8になるとさらに位が1つ上がる.}\ 以降も同様である.  文字数が2個しかないため,\ 2個そろうたびに位を1つ上げるしかなくなるわけである.  よって,\ 1,\ 2,\ 4,\ 8,\ $・・・・・・$の位ができることになる.  結局,\ 2の累乗($・・・,\ 2^3,\ 2^2,\ 2^1,\ 2^0}$)を位取りの基本とするのが2進法である.  例えば,\ 2進法で表された1101は次のような意味合いになる.  複数の底が混在する場合,\ 右下に括弧で底を明記する.\ (10)は省略されることが多い.  このように,\ $nの累乗(・・・,\ n^3,\ n^2,\ n^1,\ n^0)を位取りの基本とするのがn進法である.$  $n$が大きくなるほど必要な文字数が増えるが,\ 少ない桁数で大きな数を表せる.  $1101_{(2)}=13_{(10)}$と同様にして,\ $n}$進数\,→\,10進数の変換ができる  以下のように,\ 繰り返し2で割ることで$a_0}$から順に特定できる.  左辺13を2で割ったときの等式を作成すると $(左辺)=2×6+1}$  一方,\ 右辺を可能な限り2でくくると,\ $(右辺)=2×(a_3×2^2+a_2×2^1+a_1)+a_0}$となる.  両辺の2で割ったときの余りの部分を比較すると $a_0=1}$  次に,\ 商の部分のみ取り出し,\ $6=a_3×2^3+a_2×2^1+a_1$として同じ手順を踏む.  $(左辺)=2×3+0},\ (右辺)=2×(a_3×2+a_2)+a_1}$より,\ $a_1=0$}である.  同様に,\ $3=a_3×2+a_2$とすると$(左辺)=2×1+1}$,\ $(右辺)=2× (a_3)+a_2}$である.  よって, $a_2=1}$,\ 同時に$a_3=1}$もわかる.  一見複雑だが,\ 所詮は繰り返し2で割っているだけであり,\ 筆算表記すると以下となる. \\[-1zh]  2で1回割ったときの余りが$a_0$,\ 2回割ったときの余りが$a_1,\ ・・・$といった具合である.  商が割る数より小さくなったところで終了する.  矢印のような順で数字を並べて$1101_{(2)$となる.  2進数以外の$n$進数への変換も同様,\ 繰り返し$n$で割ればよい. 中級者以上は累乗数の値2^2=4,\ 2^3=8,\ ・・・\ を覚えておき,\ 直接的に和の式を作る}のがよい. 本質的であるが故,\ 素早く求められる.\ ただし,\ 大きな数になるにつれ,\ 筆算のほうが有利になる. 大きな累乗数から順に何個取り出せるかを考えていくと,\ 最高位から順に求まる.} 例えば,\ 13からは8を1個取り出せ,\ さらに残った5からは4を1個取り出せるから,\ 以下となる.  13_{(10)}=8+4+1=1・2^3+1・2^2+1=1101_{(2)} 220からは81を2個,\ 残った58からは27を2個,\ 残った4からは3を1個取り出せる. 5進法で143と表される数を2進法で表せ. (2)\ \ 2進法で10011と表される数を8倍した数を2進法で表せ. (3)\ \ 3進法で2222と表される数を10進法で表せ. (4)\ \ 2進法で11111101と表される数を8進法で表せ. (5)\ \ 8進法で576と表される数を2進法で表せ. (6)\ \ $n$は5以上の整数とする.\ 10進法で$(n+2)^2$と表される数を$n$進法で表せ. \\ (1)\ \ m進数からn進数への変換は,\ 一旦10進数を経由する}のが基本となる. \ \ 筆算表記を示したが,\ 48=32+16=2^5+2^4\,と考えると瞬殺できる. (2)\ \ まず,\ 特に指定のない8は10進数であることに注意する. \ \ 基本方針は,\ 8を2進数にして掛けるか,\ 10011を10進数にして掛けるかの2択である. \ \ 本問では,\ 掛ける数8がたまたま2の累乗数なので,\ 8を2進数にして掛けると簡潔に済む. \ \ 2進数同士の掛け算については別項で詳しく取り上げるが,\ ×1000ならば10進法と変わらない. \ \ 本問で重要なのは,\ 2進法において2^n\,を掛けると小数点の位置がn桁分ずれる}ことである. \ \ これは,\ 10進法において10^n\,を掛けると小数点の位置がn桁分ずれるのと同じである. \ \ このような認識があれば,\ 2進法において8倍したときの数は瞬時にわかる. \ \ 一応,\ 一旦10進数を経由する別解も示した. \ \ この場合でも,\ 別解2のようにすべてを計算してしまわずに,\ 別解1のように処理すると済む. (3)\ \ 本解は,\ 2222_{(3)}+1_{(3)}=10000_{(3)\,であることを利用するものである. \ \ これは,\ 10進法において9999+1=10000であることと同じである. (4)\ \ 当然,\ 一旦253_{(10)}\,を求めてから筆算で375_{(8)}\,を求めることもできるが,\ スマートではない. \ \ 2^3=8より,\ 2^3\,やその累乗をくくり出す}ことで,\ すべて計算せずとも8進数に変換できる. \ \ なお,\ 2^6=2・2・2・2・2・2=(2^3)(2^3)=8^2\,である. \ \ 2^3\,やその累乗ごとにまとめることは,\ 2進数を3桁ごとに区切って考える}ことに等しい. \ \ つまり,\ 11_{(2)}\,|\,111_{(2)}\,|\,101_{(2)}=3_{(8)}\,|\,7_{(8)}\,|\,5_{(8)\,のように考えると暗算も可能である. (5)\ \ (4)と逆に8を2^3\,に変換し,\ さらに,\ 5,\ 7,\ 6も2の累乗数の和で表す.} \ \ 要するに,\ 5_{(8)}\,|\,7_{(8)}\,|\,6_{(8)}=101_{(2)}\,|\,111_{(2)}\,|\,110_{(2)\ である.\ なお,\ 576_{(8)}=382_{(10)}\,である. (6)\ \ 文字であっても構造は同じである.\ \ n≧5であるから,\ 係数の1,\ 4がそのまま答えとなる. 3進数2000は$n$進数312である.\ 自然数$n$を求めよ. \\ それぞれ10進数に変換してから等式で結べばよいだけである.
スポンサーリンク
スポンサーリンク
高校数学A 整数
シェアする
受験の月をフォローする