n進法・n進数の解説と問題例
次に,n進法に関する「きちんとした式」を述べます。 n進法において,n個の記号のどれかを並べた a k a k − 1 a k − 2 ⋯ a 1 a 0 . a − 1 a − 2 ⋯ a − m a_k a_ a_ \cdots a_1 a_0 . a_ a_ \cdots a_ a k a k − 1 a k − 2 ⋯ a 1 a 0 . a − 1 a − 2 ⋯ a − m という記号列は a k × n k + a k − 1 × n k − 1 + a k − 2 × n k − 2 + ⋯ + a 1 × n + a 0 + a − 1 n + a − 2 n 2 + ⋯ + a − m n m a_k \times n^k + a_ \times n^ + a_\times n^ + \cdots\\ +a_1 \times n + a_0 + \dfrac + \dfrac + \cdots + \dfrac\\ a k × n k + a k − 1 × n k − 1 + a k − 2 × n k − 2 + ⋯ + a 1 × n + a 0 + n a − 1 + n 2 a − 2 + ⋯ + n m a − m という数を表すと定義します。定義は複雑でわかりにくいので,例を見てみましょう。
- 10進数で 403 403 403 は 4 × 1 0 2 + 3 4\times 10^2+3 4 × 1 0 2 + 3 のことを表します。
- 2進数で 1000 1000 1000 は 1 × 2 3 1\times 2^3 1 × 2 3 のことを表します。
- 4進数で 230.1 230.1 230.1 は以下の数を表します:
a 2 × 4 2 + a 1 × 4 + a 0 + a − 1 4 = 2 × 16 + 3 × 4 + 0 + 1 4 = 32 + 12 + 0 + 1 4 = 177 4 \begin &a_2 \times 4^2 + a_1 \times 4 + a_0 + \dfrac>\\ &= 2 \times 16 + 3 \times 4 + 0 + \dfrac \\ &= 32 + 12 + 0+ \dfrac\\ &= \dfrac \end a 2 × 4 2 + a 1 × 4 + a 0 + 4 a − 1 = 2 × 16 + 3 × 4 + 0 + 4 1 = 32 + 12 + 0 + 4 1 = 4 177
また,n進数であることを明示したい場合は,数字の右下に小さく数字nを書きます。例えば,n進数の 2341 2341 2341 は, 234 1 ( n ) 2341_ 234 1 ( n ) と表記します。
n進数は,ざっくり言えば 下の位のものがn個集まると次の位に繰り上がる数の表現方法 です。1円玉が10個集まると10円玉に,10円玉が10個集まると100円玉になるようなイメージです。
- 時間の表現方法については60秒が1分,60分が1時間となるような60進法です。
- 週の数え方は7日で1週間なので7進法です。
- コンピュータの制御には0,1のみを用いた2進法が使われています。
理由の1つは, n進法を使うことで,n種類の記号だけでいくらでも大きな数を表せるから です。
n進法を使わないで,「一億」までの数が表せるでしょうか?繰り上がりがないので,全ての数に一つの記号を対応させなければなりません。 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A , B , C , D , E , F , G , ⋯ , % , ! , " , ⋯ 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,\cdots, \%, !, ", \cdots 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A , B , C , D , E , F , G , ⋯ , % , ! , " , ⋯ などたくさん記号を持ってきて0から順に対応させるのは現実的ではないです。
つまり, 大きな数を表すためには,規則を作って有限個の記号のみを使って表現することが必要 です。
また,n進数は,各ケタを足したり引いたりすることが簡単にできます。つまり筆算ができる という特長もあります。
2進法における 1010 1 ( 2 ) 10101_ 1010 1 ( 2 ) を10進数で表すといくつか?
定義(さきほどのn進法の「きちんとした式」)により, 1 × 2 4 + 1 × 2 2 + 1 = 21 1 \times 2^4 + 1 \times 2^2 + 1 = 21 1 × 2 4 + 1 × 2 2 + 1 = 21 と計算できます。 2進法と10進法を互いに変換するやり方については別の記事でもまとめています。→二進法と十進法の変換方法と計算例
16進法における 3 D A . F 8 ( 16 ) 3DA.F8_ 3 D A . F 8 ( 16 ) を10進数で表すといくつか?
定義により, 3 × 1 6 2 + 13 × 16 + 10 + 15 16 + 8 1 6 2 = 31583 32 = 986.96875 3 \times 16^2 + 13 \times 16 + 10 + \dfrac + \dfrac\\ = \dfrac = 986.96875 3 × 1 6 2 + 13 × 16 + 10 + 16 15 + 1 6 2 8 = 32 31583 = 986.96875 と計算できます。
10進法における 46 46 46 は3進数で表すといくつか?
10進数からn進数に変換する方法に 与えられた数をひたすらnでわっていって,あまりを下から並べていく という方法があります。
例3の場合「 46 46 46 から出発して 3 3 3 で割った商 15 15 15 を下に,あまり 1 1 1 を右下に書きます。出てきた商 15 15 15 に対して同じことを繰り返していきます。商が 0 0 0 になった時点で終了します。最後に 右側の列の数字を下から読む と答えになります。つまり, 120 1 ( 3 ) 1201_ 120 1 ( 3 ) が答えです。
5桁で一番小さい3進数は 1000 0 ( 3 ) 10000_ 1000 0 ( 3 ) であり, 6桁で一番小さい3進数は 10000 0 ( 3 ) 100000_ 10000 0 ( 3 ) です。それぞれ10進数に変換すると, 1000 0 ( 3 ) = 3 4 = 81 10000 0 ( 3 ) = 3 5 = 243 10000_ = 3^4 = 81\\ 100000_ = 3^5 = 243 1000 0 ( 3 ) = 3 4 = 81 10000 0 ( 3 ) = 3 5 = 243 となります。よって, 81 81 81 番目から 243 − 1 = 242 243-1=242 243 − 1 = 242 番目までが5桁です。その個数は 242 − 81 + 1 = 162 242-81+1=162 242 − 81 + 1 = 162 個です。
5桁で一番大きい3進数 2222 2 ( 3 ) 22222_ 2222 2 ( 3 ) を考えても良いですが,計算が大変になります。上記の方法の方がスマートです。
求めたい5進数を a b c ( 5 ) abc_ ab c ( 5 ) とおきます。問題の条件より a b c ( 5 ) × 3 + 8 = a b c ( 9 ) abc_ \times 3 + 8 = abc_ ab c ( 5 ) × 3 + 8 = ab c ( 9 ) よって, 3 ( 25 a + 5 b + c ) + 8 = 81 a + 9 b + c 6 a − 6 b − 2 c = 8 3 a − 3 b − c = 4 3 a = 4 + 3 b + c 3(25a + 5b + c) + 8 = 81a + 9b + c\\ 6a - 6b - 2c = 8\\ 3a - 3b -c = 4\\ 3a = 4 + 3b + c 3 ( 25 a + 5 b + c ) + 8 = 81 a + 9 b + c 6 a − 6 b − 2 c = 8 3 a − 3 b − c = 4 3 a = 4 + 3 b + c ここで, b , c ≥ 0 b,c \geq 0 b , c ≥ 0 より, 3 a = 4 + 3 b + c ≥ 4 3a = 4 + 3b + c \geq 4 3 a = 4 + 3 b + c ≥ 4 よって, a ≥ 2 a \geq 2 a ≥ 2 でなければならないことがわかります。そこで, a = 2 , 3 , 4 a=2,3,4 a = 2 , 3 , 4 の場合をそれぞれ考えます。
(i) a = 2 a = 2 a = 2 のとき 3 b + c = 2 3b + c = 2 3 b + c = 2 b > 0 b > 0 b > 0 とするとこれを満たす c c c は明らかに存在しなくなってしまうので, b = 0 b = 0 b = 0 よって, c = 2 c = 2 c = 2
(ii) a = 3 a = 3 a = 3 のとき 3 b + c = 5 3b + c = 5 3 b + c = 5 b > 1 b > 1 b > 1 とするとこれを満たす c c c は明らかに存在しなくなってしまうので, b = 0 , 1 b = 0,1 b = 0 , 1
b = 0 b = 0 b = 0 の時 c = 5 c = 5 c = 5 ですが, a , b , c a,b,c a , b , c は5進数の記号であるため, c ≤ 4 c \leq 4 c ≤ 4 により不適です。
b = 1 b = 1 b = 1 の時 c = 2 c = 2 c = 2 は答えとして適します。
(iii) a = 4 a = 4 a = 4 のとき 3 b + c = 8 3b + c = 8 3 b + c = 8 b > 2 b > 2 b > 2 とするとこれを満たす c c c は明らかに存在しなくなってしまうので, b = 0 , 1 , 2 b = 0,1,2 b = 0 , 1 , 2
b = 0 b = 0 b = 0 の時 c = 8 c = 8 c = 8 ですが, a , b , c a,b,c a , b , c は5進数の記号であるため, c ≤ 4 c \leq 4 c ≤ 4 により不適です。
b = 1 b = 1 b = 1 の時 c = 5 c = 5 c = 5 となって同様に不適です。
b = 2 b = 2 b = 2 の時 c = 2 c = 2 c = 2 となります。
(i),(ii),(iii)を全て合わせて, 20 2 ( 5 ) , 31 2 ( 5 ) , 42 2 ( 5 ) 202_, 312_, 422_ 20 2 ( 5 ) , 31 2 ( 5 ) , 42 2 ( 5 ) が答えとなります。
公立地方進学校出身。高校時代は部活動に勤しみ,合間を縫って勉強を進めた。 受験生時代には毎日12時間以上の勉強を続け,東京大学理科一類に現役合格。 大学でも数学・物理を得意とし,情報系の学科に進みつつも,独学で勉強を続けている。 学びTimesでは主に「高校数学の美しい物語」「高校生から味わう理論物理入門」の記事執筆・修正業務に尽力している。