n進数
解説
a のビット数 | a の最大値 | b | b の 2 進数表現 | b のビット数 |
---|---|---|---|---|
1 | 1 | 1 | 1 | 1 |
2 | 3 | 9 | 1001 | 4 |
3 | 7 | 49 | 110001 | 6 |
4 | 15 | 225 | 11100001 | 8 |
5 | 31 | 961 | 1111000001 | 10 |
6 | 63 | 3969 | 111110000001 | 12 |
n | 2n |
- n ビットで表すことのできる最大値は、と表現することができます。
- であるから、となります。
- を展開すると、となります。
- 問題文に、a は正の整数であるという条件があるため、3 で求めた式のうち、は最大でも-3 となります。
- 重みによっては 1 桁で-3 を越えることがあるため、はの部分が最大の桁になります。
- を 2 進数で表現すると、ビットになります。
- よって、b を 2 進数で表現すると最大でビットになります。
私たちが普段モノや単位を扱うときには、10 進数を使っています。
0~9 までの 10 個の数字を使い、10 を超える場合は桁数を増やして表現することで、数を表現しています。
それに対しコンピュータでは、2 進数を使って計算を行います。
10 進数では 0 から 9 までの 10 個の数字を使って数を表現しますが、2 進数では 0 と 1 の 2 個の数字を使って数を表現します。
このように、数を表現するために使う数字の個数を基数といい、n 進数という表現を使います。
この項では、n 進数の基本的な考え方と計算方法について解説します。
2 進数の基本的な考え方
まず、2 進数で数を表現した場合、10 進数との対応を見てみましょう。
10 進数 | 2 進数 |
---|---|
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
2 進数では、1 桁で表現できる数が 0 と 1 の 2 つだけです。
そのため、3 以上の数を表現するためには、桁数を増やして表現する必要があります。
例えば、10 進数の 10 は、2 進数では 1010 と表現されます。
基数の桁と重み
10 進数では、各桁の数に 10 の冪乗をかけて足し合わせることで数を表現しています。
例えば、123 という数は、という計算で表現されます。
これを分解すると、という計算になります。
私たちは日常的に 10 進数を使っているため、このような計算を意識せずに行っていますが、2 進数でも同様の計算を行う必要があります。
つまり、2 進数で 1010 という数は、という計算で表現されます。
これを計算すると、となり、10 進数の 10 と同じ数を表現していることがわかります。
このように、増えるにつれて基数の冪乗が増えていくことを、各桁の重みと呼びます。
小数点以下の数
小数点以下の数を表現する場合も同様に、各桁の数に基数の冪乗をかけて足し合わせることで数を表現します。
例えば、10 進数の 0.125 は、2 進数では 0.001 と表現されます。
この場合、という計算で表現されます。
これを計算すると、となり、10 進数の 0.125 と同じ数を表現していることがわかります。
ビットとバイト
前述の通り、コンピュータでは 2 進数を使って計算を行います。
そのため、2 進数で表現される数を扱う際には、ビットという単位を使います。
例えば、10 進数のを 2 進数で表現するととなりますが、のように 4 桁で表現する場合、ビットの数ということになります。
また、私たちが普段コンピュータでデータを取り扱う単位としては、バイトの方が馴染みがあるかもしれません。
このバイトは、8 ビットの数を 1 つの単位として扱うもので、1 バイトは 8 ビットの数を表すことができます。
つまり、ビットでは 1 桁で 0 と 1 の 2 つの数を表現できるのに対し、バイトでは通りの数を表現することができます。
8 進数と 16 進数
2 進数の他にも、8 進数や 16 進数などの n 進数があります。
8 進数は 0 から 7 までの 8 個の数字を使って数を表現し、16 進数は 0 から 9 までの 10 個の数字と A から F までの 6 個のアルファベットを使って数を表現します。
1 桁で表現できる数を増やすことで、数を表現する際の桁数を減らすことができます。
あまり使うことはありませんが、0 から 9、A-Z までの文字を使えば、36 進数まで表現できます。
n 進数の変換
ここまでの説明の中で、10 進数から 2 進数への変換を見てきました。
同様に、2 進数から 8 進数や 16 進数への変換も行うことができます。
n 進数で 1 桁で表現することのできる数と重みの関係を理解しておけば、n 進数同士の変換も行うことができます。
例えば、2 進数のを 8 進数に変換する場合を考えてみましょう。まずは分かりやすいように、一度 10 進数に変換してみます。
このように、2 進数のは 10 進数のと同じ数を表現しています。では、これを 8 進数に変換するとどうなるでしょうか。
このように、10 進数のは 8 進数のと同じ数を表現しています。
また、8 は 2 の 3 乗であるため、2 進数の 3 桁で表現することができます。
と 3 桁に区切ることで、、となり、直接 8 進数に変換することもできます。
練習問題
最後に、練習問題を解いてみましょう。
解説
10 進数を 26 進数の各桁に変換すると、となります。
それぞれ対応するアルファベットは、、であるため、答えはとなります。