知っているだけに、あえて基数の説明を書こうとすると精神的に非常に苦しいです。
「こういうものだ!」としか言いようがないのですが、たまに悩む人がいるようなので本章を設けます
▲ |
一般的な解説ですが、10進数は0〜9の数字を組み合わせて表現される数値です。
1桁で10に相当する値を表現する数字(文字)はありません。 9 が最大の数字になります。
最大値の9 の次は1と0で組み合わさた2桁の10になります。
これでは当たり前すぎるので、少し説明を加えます。
一の位の数字で示される0〜9。十の位の数字で示される0〜9。
双方の数字が同じであったとしても位の位置により数字の「重み」が変わります。
普段から馴染みのある10進数ですが、各位の「重み」を簡単にまとめると以下の様になります。
千の位 | 百の位 | 十の位 | 一の位 | |
1000倍 | 100倍 | 10倍 | 1倍 |
例えば 1234 という数字であれば、
1234 = (1 * 1000) + (2 * 100) + (3 * 10) + (4 * 1)
となります。お金に例えれば、千円札が1枚、百円玉が2枚、十円玉が3枚、そして一円玉が4枚です。
各位の「重み」について規則性があることがわかりますか?位が上がる度に10倍されていますよね。
十の位が10で、百の位がその10倍の100。当たり前のことですが、これが重要です。
では各位が10倍されていることをまとめてみましょう。
千の位 | 百の位 | 十の位 | 一の位 | |
1000 = 100 * 10 | 100 = 10 * 10 | 10 = 1 * 10 | 1 = 1 |
一の位だけ例外になりますが、その他の位は順番に10倍されています。
では、これを一歩進めて「べき乗」表現してみます。
「べき乗」は「累乗」と表現されることがありますが、1つの数字同士を掛け合わせる操作です。
表現としては、10 * 10 であれば2回の掛け合わせで 102 と表現します。例外的に 100 は 1 になります。
それでは各位の「重み」を「べき乗」を使って表現してみます。
千の位 | 百の位 | 十の位 | 一の位 | |
1000 = (10 * 10) * 10 = 103 |
100 = (10) * 10 = 102 |
10 = (1) * 10 = 101 |
1 = 1 = 100 |
一の位から順番に「べき乗」の添字(掛け合わせる数)が+1されています。
つまり、10進数では各位の「重み」は 10n で表現することができます。
更に、10 が10進数であることを示し、n が位(桁の位置)を示しています。
続いて小数点以下を見てみましょう。
これまでの算数の経験上、小数点以下第1位は0.1、小数点以下第2位は0.01ですよね。
この小数点以下の数字に対しても位に対する「重み」が重要です。
一の位 | 小数点以下第1位 | 小数点以下第2位 | 小数点以下第3位 | |
1倍 | 0.1倍 | 0.01倍 | 0.001倍 |
例えば 1.234 という数字であれば、
1.234 = (1 * 1) + (2 * 0.1) + (3 * 0.01) + (4 * 0.001)
となります。
各位の「重み」についてはこれまでと同様に規則性があります。各位を重ねるたびに10分の1されています。
では、各位が10分の1されていることをまとめてみましょう。
一の位 | 小数点以下第1位 | 小数点以下第2位 | 小数点以下第3位 | |
1 = 1 | 0.1 = 1 / 10 | 0.01 = 0.1 / 10 | 0.001 = 0.01 / 10 |
さて、今度は各位を「べき乗」で表現してみます。
表現としては、 1 / 10 であれば1回の割り算で 10-1 と表現されます。
一の位 | 小数点以下第1位 | 小数点以下第2位 | 小数点以下第3位 | |
1 = 1 = 100 |
0.1 = 1 / 10 = 10-1 |
0.01 = 0.1 / 10 = 10-2 |
0.001 = 0.01 / 10 = 10-3 |
一の位から順番に「べき乗」の添字(割る数)が−1されていますね。
これにより小数点以上、小数点以下に関わらず10進数では各位の「重み」が 10n で表現することができました。
以上が10進数の特徴です。この考え方は後述の2進数、8進数、16進数にも応用できる考え方です。
▲ |
2進数は0、1の数字を組み合わせて表現される数値です。
0、1に続いて、次は2では無く10になります。同様に10、11に続くのは100になります。
以下に以下に2進数と、2進数の値に相当する10進数の値をまとめます。
2進数 | 10進数 | ||
0 | 0 | ||
1 | 1 | ||
10 | 2 | 2進数ではここで桁上がりが生じます。 | |
11 | 3 | ||
100 | 4 | 2進数ではここで桁上がりが生じます。 | |
101 | 5 | ||
110 | 6 | ||
111 | 7 | ||
1000 | 8 | 2進数ではここで桁上がりが生じます。 | |
1001 | 9 | ||
1010 | 10 | ||
1011 | 11 | ||
1100 | 12 | ||
1101 | 13 | ||
1110 | 14 | ||
1111 | 15 |
10進数と同様、2進数にも各位の「重み」があります。
2進数では百や千と言った概念が無いので、ここでは桁(便宜上、0桁目から)で表記します。
3桁目 | 2桁目 | 1桁目 | 0桁目 | |
8倍 | 4倍 | 2倍 | 1倍 |
例えば、 1011 という2進数の数値であれば、
1011 = (1 * 8) + (0 * 4) + (1 * 2) + (1 * 1)
となります。結果としては、 8 + 2 + 1 = 11 この 11 は10進数ですが、2進数で表現すれば 1011 になります。
「掛け率」を順番に並べれば2進数、「重み」を加算すれば10進数に相当する値になることに気が付きました?
10進数と同様、「重み」の規則性についてまとめてみます。1つ前(右)の桁に対して2倍されています。
3桁目 | 2桁目 | 1桁目 | 0桁目 | |
8 = 4 * 2 | 4 = 2 * 2 | 2 = 1 * 2 | 1 = 1 |
今度は各位の「重み」を「べき乗」を使って表現してみます。
3桁目 | 2桁目 | 1桁目 | 0桁目 | |
8 = (2 * 2) * 2 = 23 |
4 = (2) * 2 = 22 |
2 = (1) * 2 = 21 |
1 = 1 = 20 |
一の位から順番に「べき乗」の添字(掛け合わせる数)が+1されています。
10進数の考え方と同様、2進数では各位の「重み」は 2n で表現することができます。
更に、2 が2進数であることを示し n が位(桁の位置)を示しています。
なお、この考え方は2進数から10進数への変換、10進数から2進数の変換の時に必要な概念です。
コンピュータの内部では電気のオンとオフの2通り、2進数の世界ですから。10進数は人間用と思ってください。
続いて小数点以下を見てみましょう。
2進数における小数点以下の表現は余り見かけませんが、試験で出題されることがあります。
0桁目 | 小数点以下第一位 | 小数点以下第二位 | 小数点以下第三位 | |
1倍 | 0.5倍 | 0.25倍 | 0.125倍 |
例えば 1.010 という2進数の数値であれば、
1.010 = (1 * 1) + (0 * 0.5) + (1 * 0.25) + (0 * 0.125)
となります。計算上は、1 + 0.25 = 1.25 この 1.25 は10進数ですが、2進数で表現すれば 1.010 になります。
各位の「重み」についてはこれまでと同様に規則性があります。各位を重ねるたびに2分の1されています。
では、各位が2分の1されていることをまとめてみましょう。
0桁目 | 小数点以下第1位 | 小数点以下第2位 | 小数点以下第3位 | |
1 = 1 | 0.5 = 1 / 2 | 025 = 0.5 / 2 | 0.125 = 025 / 2 |
さて、今度は各位を「べき乗」で表現してみます。
表現としては、 1 / 2 であれば1回の割り算で 2-1 と表現されます。
0桁目 | 小数点以下第1位 | 小数点以下第2位 | 小数点以下第3位 | |
1 = 1 = 20 |
0.5 = 1 / 2 = 2-1 |
025 = ((1 / 2) / 2 = 2-2 |
0.125 = (((1 / 2) / 2) / 2 = 2-3 |
一の位から順番に「べき乗」の添字(割る数)が−1されていますね。
これにより小数点以上、小数点以下に関わらず2進数では各位の「重み」が 2n で表現することができました。
以上が2進数の特徴です。
「べき乗」の説明を先にした方がわかりやすいかもしれませんが、本章では、結果から「べき乗」を導いています。
上から下へ説明を読んだ後、下から上に向かって説明を読むと理解しやすいかもしれませんね。
▲ |
ほとんど使う機会がなく、今では試験対策用の8進数ですが…。
8進数は0〜7の数字を組み合わせて表現される数値です。
0、1…6、7に続いて、次は8ではなく10になります。同様に16、17に続くのは100になります。
以下に8進数と、8進数の値に対応する2進数と10進数の値をまとめます。
8進数 | 2進数 | 10進数 | ||
0 | 0 | 0 | ||
1 | 1 | 1 | ||
2 | 10 | 2 | ||
3 | 11 | 3 | ||
4 | 100 | 4 | ||
5 | 101 | 5 | ||
6 | 110 | 6 | ||
7 | 111 | 7 | ||
10 | 1000 | 8 | 8進数ではここで桁上がりが生じます。 | |
11 | 1001 | 9 | ||
12 | 1010 | 10 | ||
13 | 1011 | 11 | ||
14 | 1100 | 12 | ||
15 | 1101 | 13 | ||
16 | 1110 | 14 | ||
17 | 1111 | 15 |
10進数と同様、8進数にも各位の「重み」があります。
8進数では百や千と言った概念が無いので、ここでは桁(便宜上、0桁目から)で表記します。
3桁目 | 2桁目 | 1桁目 | 0桁目 | |
512倍 | 64倍 | 8倍 | 1倍 |
例えば、 1011 という8進数の数値であれば、
1011 = (1 * 512) + (0 * 64) + (1 * 8) + (1 * 1)
となります。結果としては、 512 + 8 + 1 = 521 この 521 は10進数ですが、8進数で表現すれば 1011 になります。
「掛け率」を順番に並べれば8進数、「重み」を加算すれば10進数に相当する値になります。
10進数と同様、「重み」規則性についてまとめてみます。1つ前(右)の桁に対して2倍されています。
3桁目 | 2桁目 | 1桁目 | 0桁目 | |
512 = 64 * 8 | 64 = 8 * 8 | 8 = 1 * 8 | 1 = 1 |
今度は各位の「重み」を「べき乗」を使って表現してみます。
3桁目 | 2桁目 | 1桁目 | 0桁目 | |
512 = (8 * 8) * 8 = 83 |
64 = (8) * 8 = 82 |
8 = (1) * 8 = 81 |
1 = 1 = 80 |
一の位から順番に「べき乗」の添字(掛け合わせる数)が+1されています。
10進数の考え方と同様、8進数では各位の「重み」は 8n で表現することができます。
更に、8 が8進数であることを示し n が位(桁の位置)を示しています。
なお、この考え方は8進数から10進数への変換、10進数から8進数の変換の時に必要な概念です。
以上が8進数の特徴です。
…。
小数点以下の記述が抜けてますね…。試験以外では利用する機会はありませんので割愛します。
決して、桁が増えて記述が面倒…。ってことではありません ^ ^ ;
仮に利用する機会がある場合は、前述の2進数における小数点以下の考え方を各自で応用してみてください。
余談ですが、C言語で8進数の数値を表現する場合は数値の前に「0(ゼロ)」を付与します。
056 であれば8進数の 56(10進数では 46 相当) 、単に 56 であれば10進数の 56 になります。
C言語のコーディングでdefineというのがあり、これを利用して数値の宣言を記述している際に失敗をしたことがあります。
<最初の記述>
#define xxx_19 19
#define xxx_320 320
数値の記述で桁がズレるので、見栄えを良くする為に、ささやかな変更を加えました。本人は自己満足です。
<失敗した記述>
#define xxx_019 019
#define xxx_320 320
この余計なことをコンパイラは見逃しません。しっかりエラーで返します。
何が間違っているか、冷静に見ればすぐにわかりますよね。
ですが、忙しい時には原因がわかるまで思考が右往左往します。時には不具合を見逃す可能性があります。
以後は同じ誤りをしていませんが、値によってはエラーにならない場合があるので注意が必要です。
▲ |
2進数と同様、確実に押さえておかなければならない基数です。
普段は電卓を使用して基数変換を行う事が多いと思いますが、基数変換の規則はしっかり理解しておきましょう。
16進数は0〜9の数字、A〜Fの英字、全16種類の英数字を組み合わせて表現される数値です。
0、1…8、9に続いて、次はAとなり、D、E、Fと続いて、その次は10になります。
以下に16進数と16進数の値に対応する2進数と10進数の値をまとめます。
16進数 | 2進数 | 10進数 | ||
0 | 0 | 0 | ||
1 | 1 | 1 | ||
2 | 10 | 2 | ||
3 | 11 | 3 | ||
4 | 100 | 4 | ||
5 | 101 | 5 | ||
6 | 110 | 6 | ||
7 | 111 | 7 | ||
8 | 1000 | 8 | ||
9 | 1001 | 9 | ||
A | 1010 | 10 | 16進数では英字を利用します | |
B | 1011 | 11 | ||
C | 1100 | 12 | ||
D | 1101 | 13 | ||
E | 1110 | 14 | ||
F | 1111 | 15 | ||
10 | 10000 | 16 | 16進数はここで桁上がりが生じます | |
11 | 10001 | 17 | ||
12 | 10010 | 18 |
他の基数と同様、16進数にも各位の「重み」があります。
16進数では百や千と言った概念が無いので、ここでは桁(便宜上、0桁目から)で表記します。
3桁目 | 2桁目 | 1桁目 | 0桁目 | |
4096倍 | 256倍 | 16倍 | 1倍 |
例えば、 1011 という16進数の数値であれば、
1011 = (1 * 4096) + (0 * 256) + (1 * 16) + (1 * 1)
となります。結果としては、4096+16+1=4113この4113は10進数ですが、16進数で表現すれば1011になります。
「掛け率」を順番に並べれば16進数、「重み」を加算すれば10進数に相当する値になります。
10進数と同様、「重み」規則性についてまとめてみます。1つ前(右)の桁に対して2倍されています。
3桁目 | 2桁目 | 1桁目 | 0桁目 | |
4096 = 256 * 16 | 256 = 16 * 16 | 16 = 1 * 16 | 1 = 1 |
今度は各位の「重み」を「べき乗」を使って表現してみます。
3桁目 | 2桁目 | 1桁目 | 0桁目 | |
4096 = (16*16)*16 = 163 |
256 = (16)*16 = 162 |
16 = (1)*16 = 161 |
1 = 1 = 160 |
一の位から順番に「べき乗」の添字(掛け合わせる数)が+1されています。
10進数の考え方と同様、16進数では各位の「重み」は 16n で表現することができます。
更に、16 が16進数であることを示し n が位(桁の位置)を示しています。
なお、この考え方は16進数から10進数への変換、10進数から16進数の変換の時に必要な概念です。
以上が16進数の特徴です。
▲ |