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

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