数学A / 数学と人間の活動(整数の性質)

n進法

要点整理

普段使っている「10進法」を見直してみる

私たちが普段使っている数の表し方は「10進法」と呼ばれるものです。具体例として、$3452$ という数を考えてみます。この数は、次のように「位(くらい)ごとの重み」を足し合わせたものだと考えることができます。

$3452 = 3 \times 1000 + 4 \times 100 + 5 \times 10 + 2 \times 1$

ここで、$1000 = 10^3$、$100 = 10^2$、$10 = 10^1$、$1 = 10^0$ですから、上の式は次のように書き直せます。

$3452 = 3 \times 10^3 + 4 \times 10^2 + 5 \times 10^1 + 2 \times 10^0$

つまり、10進法とは「一の位・十の位・百の位…と、位が1つ上がるごとに大きさが10倍になっていく」という約束のもとで数を表す方法なのです。このように、数字が置かれている位置によってその数字が表す大きさが変わる表し方のことを、位取り記数法といいます。10進法では、各位に使える数字は $0, 1, 2, \ldots, 9$ の10個だけです。10個そろうと繰り上がって、次の位が1つ増える、という仕組みになっています。

n進法とは何か

10進法は「10個の数字を使い、位が上がるごとに10倍」という約束でしたが、この「10」という数を別の数 $n$ に置き換えたものがn進法です。n進法では、次のような約束で数を表します。

  • 使う数字は $0, 1, 2, \ldots, n-1$ の $n$ 個だけです(10進法での9にあたる「一番大きい数字」が $n-1$ になります)。
  • 位が1つ上がるごとに、その位の重みは $n$ 倍になります。つまり、一の位は $n^0=1$、次の位は $n^1$、その次は $n^2$、…という重みを持ちます。

n進法で表された数だと分かるように、数字の右下に小さく $(n)$ を書いて表します。たとえば「2進法で表した1011」という数は、次のように書きます。

$1011_{(2)}$

この数を10進法の数(私たちが普段使っている数)に直すには、10進法のときと全く同じ考え方を使います。右から順に $2^0, 2^1, 2^2, 2^3$ の重みをかけて、すべて足せばよいのです。

$1011_{(2)} = 1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0$

一般に、n進法で表された数 $a_k a_{k-1} \cdots a_1 a_0 {}_{(n)}$(ここで各 $a_i$ は $0$ から $n-1$ までの数字)を10進法の数に直す公式は、次のようになります。

$a_k \times n^k + a_{k-1} \times n^{k-1} + \cdots + a_1 \times n + a_0$

これは「n進法の各位の数字に、その位の重み($n$のべき乗)をかけて、全部足し合わせる」という意味です。

10進法の数をn進法に直す方法

逆に、10進法で表された数を n進法の数に直すにはどうすればよいでしょうか。ここでは「$n$で割り続けて、余りを下から順に読む」という方法を使います。

たとえば、10進法の $92$ を3進法に直してみましょう。まず、$92$ を $3$ で割ります。

$92 = 3 \times 30 + 2$

商が $30$、余りが $2$ です。この余り $2$ が、3進法で表したときの一の位の数字になります。次に、商である $30$ をさらに $3$ で割ります。

$30 = 3 \times 10 + 0$

余りは $0$ です。これが十の位(3進法での「$3^1$の位」)の数字になります。さらに商の $10$ を $3$ で割ります。

$10 = 3 \times 3 + 1$

余りは $1$ です。さらに商の $3$ を $3$ で割ります。

$3 = 3 \times 1 + 0$

余りは $0$ です。最後に商の $1$ を $3$ で割ります。

$1 = 3 \times 0 + 1$

余りは $1$ で、商が $0$ になったのでここで割り算をやめます。ここまでで出てきた余りを、最後に出てきたものから順番に並べると、3進法の表し方になります。余りが出てきた順番は $2, 0, 1, 0, 1$ でしたので、これを逆から読むと $1, 0, 1, 0, 2$ となり、

$92 = 10102_{(3)}$

と表せます。なぜ「最後に出てきた余りから読む」のかというと、割り算を繰り返すたびに、その余りは「$3$ の何乗の位の数字か」がどんどん大きくなっていくからです(1回目の余りは一の位、2回目の余りは3の位、…というように、割り算を繰り返すほど上の位の数字が出てくるためです)。

念のため検算してみましょう。$10102_{(3)}$ を10進法に直す公式を使うと、

$10102_{(3)} = 1 \times 3^4 + 0 \times 3^3 + 1 \times 3^2 + 0 \times 3^1 + 2 \times 3^0 = 81 + 0 + 9 + 0 + 2 = 92$

となり、確かに $92$ に戻りました。

n進法の数字が満たすべき条件

n進法では、各位に使える数字は $0$ から $n-1$ までと決まっています。たとえば5進法であれば、使える数字は $0, 1, 2, 3, 4$ の5個だけで、$5$ という数字は絶対に出てきません(もし位の中の計算で $5$ になったら、繰り上がって上の位が $1$ 増える、という仕組みになっているからです)。この条件は、後の例題3のように「$n$ の値を求める」問題でとても重要な手がかりになりますので、覚えておいてください。

例題

例題1(基本)

問題

2進法で表された数 $1101_{(2)}$ を、10進法の数で表しなさい。

解答・解説を見る

2進法の数を10進法に直すには、右の位から順に $2^0, 2^1, 2^2, 2^3$ の重みをかけて、すべて足し合わせます。$1101_{(2)}$ は、右から数字を並べると $1, 0, 1, 1$ ですので、次のように計算します。

$1101_{(2)} = 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0$

それぞれの項を計算します。$2^3 = 8$、$2^2 = 4$、$2^1 = 2$、$2^0 = 1$ ですから、

$1101_{(2)} = 1 \times 8 + 1 \times 4 + 0 \times 2 + 1 \times 1$

これを計算すると、

$1101_{(2)} = 8 + 4 + 0 + 1 = 13$

したがって、答えは $13$ です。

例題2(標準)

問題

10進法で表された数 $92$ を、3進法の数で表しなさい。

解答・解説を見る

10進法の数をn進法に直すときは、その数を $n$ で割り続けて、出てきた余りを最後から順に読みます。ここでは $n=3$ ですので、$92$ を $3$ で次々に割っていきます。

まず、$92$ を $3$ で割ります。

$92 = 3 \times 30 + 2$

商は $30$、余りは $2$ です。

次に、商の $30$ を $3$ で割ります。

$30 = 3 \times 10 + 0$

商は $10$、余りは $0$ です。

次に、商の $10$ を $3$ で割ります。

$10 = 3 \times 3 + 1$

商は $3$、余りは $1$ です。

次に、商の $3$ を $3$ で割ります。

$3 = 3 \times 1 + 0$

商は $1$、余りは $0$ です。

最後に、商の $1$ を $3$ で割ります。

$1 = 3 \times 0 + 1$

商は $0$、余りは $1$ です。商が $0$ になったので、割り算はここで終わりです。

出てきた余りを求めた順に並べると $2, 0, 1, 0, 1$ です。これを最後に出てきたものから順に読むと、$1, 0, 1, 0, 2$ となります。よって、

$92 = 10102_{(3)}$

検算として、$10102_{(3)}$ を10進法に直してみましょう。

$10102_{(3)} = 1 \times 3^4 + 0 \times 3^3 + 1 \times 3^2 + 0 \times 3^1 + 2 \times 3^0$

$3^4 = 81$、$3^3=27$、$3^2=9$、$3^1=3$、$3^0=1$ を代入すると、

$10102_{(3)} = 1 \times 81 + 0 \times 27 + 1 \times 9 + 0 \times 3 + 2 \times 1 = 81 + 0 + 9 + 0 + 2 = 92$

確かに $92$ に戻りましたので、答えは $10102_{(3)}$ で正しいことが確認できました。

例題3(応用)

問題

n進法で表された数 $132_{(n)}$ が、10進法の数で $42$ に等しいとき、$n$ の値を求めなさい。ただし、$n$ は $3$ より大きい整数とします。

解答・解説を見る

まず、なぜ「$n$ は $3$ より大きい整数」という条件がついているのかを確認しておきましょう。n進法では、各位に使える数字は $0$ から $n-1$ までと決まっています。$132_{(n)}$ には数字の $3$ が使われていますので、$3$ が使える数字の範囲に入っていなければなりません。つまり $3 \leqq n-1$ 、すなわち $n \geqq 4$ である必要があります。これが「$n$ は $3$ より大きい整数」、つまり $n \geqq 4$ という条件の意味です。

次に、$132_{(n)}$ を10進法の数に直す式を作ります。位取りの公式にしたがって、右から $n^0, n^1, n^2$ の重みをかけて足し合わせると、

$132_{(n)} = 1 \times n^2 + 3 \times n + 2 \times 1$

これが $10$進法の $42$ に等しいので、次の方程式が成り立ちます。

$n^2 + 3n + 2 = 42$

右辺の $42$ を左辺に移項します。

$n^2 + 3n + 2 - 42 = 0$

計算すると、

$n^2 + 3n - 40 = 0$

この2次方程式を、左辺を因数分解して解きます。かけて $-40$、足して $3$ になる2つの数を探すと、$8$ と $-5$ が見つかります(実際に、$8 \times (-5) = -40$、$8 + (-5) = 3$ となっており、条件に合っています)。したがって、

$(n+8)(n-5) = 0$

これより、$n = -8$ または $n = 5$ です。

ここで、$n$ は進法の底(何進法かを表す数)ですから、正の整数でなければなりません。さらに先ほど確認した条件 $n \geqq 4$ も満たす必要があります。$n=-8$ は負の数なので条件に合わず、$n=5$ は $n \geqq 4$ を満たしています。

したがって、答えは $n = 5$ です。

検算してみましょう。$132_{(5)}$ を10進法に直すと、

$132_{(5)} = 1 \times 5^2 + 3 \times 5 + 2 = 25 + 15 + 2 = 42$

確かに $42$ に一致しますので、$n=5$ で正しいことが確認できました。

練習問題

問題

10進法で表された数 $150$ を、6進法の数で表しなさい。

答え

$150 = 410_{(6)}$

(解き方の流れ:$150 \div 6 = 25$ 余り $0$ 、$25 \div 6 = 4$ 余り $1$ 、$4 \div 6 = 0$ 余り $4$ 。余りを最後から順に読むと $4, 1, 0$ となるので、$150 = 410_{(6)}$ です。検算すると、$4 \times 6^2 + 1 \times 6 + 0 = 144 + 6 + 0 = 150$ となり、正しいことが確認できます。)