皆さん、こんにちは!
フリーランスの にしすん です。
当ページは、「基数変換」について、とても簡潔に分かりやすくご説明しています。
10進数・2進数・8進数・16進数について、初心者向けに解説しています。
「基数変換って何?」という方
「10進数や2進数って?」という方
情報・IT関係の勉強を始める方
ぜひ、参考にしてみてください!
10進数・2進数・8進数・16進数とは?
まずは、10進数・2進数・8進数・16進数がどんな数字なのか、簡単にご説明します。
慣れないうちは、混乱することも多いと思いますが、そんなに気にする必要はありません。
そのうち慣れます。
まずは知ることですね!
「10進数」とは?
「10進数」とは、「0,1,2,3,4,5,6,7,8,9」の10コの数字を使う表記方法です。
つまり、私たちが普段から使っている数字です。
9の次にケタが上がり、10になります。
99の次にケタが上がり、100になります。
「2進数」とは?
「2進数」とは、「0,1」の2コの数字を使う表記方法です。
コンピュータ内部で使われている進数です。
1の次にケタが上がり、10になります。
11の次にケタが上がり、100になります。
「8進数」とは?
「8進数」とは、「0,1,2,3,4,5,6,7」の8コの数字を使う表記方法です。
7の次にケタが上がり、10になります。
17の次は20です。
77の次にケタが上がり、100になります。
「16進数」とは?
「16進数」とは、「0,1,2,3,4,5,6,7,8,9」の10コの数字と、「A,B,C,D,E,F」の6コのアルファベットを使う表記方法です。
人が、コンピュータ内部の2進数を考えるとき、代わりに16進数を使うことが多いです。
9の次はAです。
Fの次にケタが上がり、10になります。
まとめると、以下の表のようになります。
10進数 | 2進数 | 8進数 | 16進数 |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
「基数」と「重み」について
「基数」とは、進数の基本となる数のことです。
各ケタの重み付けの基本となる数字とも言われます。
「重み」とは聞きなれない表現だと思いますが、そこまで気にする必要はありません。
例えば、10進数の「324.15」という数字を考えます。
324.15は、「3×100、2×10、4×1、1×0.1、5×0.01」を合わせたものと言えますね。
つまり、「3×10²、2×10¹、4×10⁰、1×10⁻¹、5×10⁻²」を合わせたものです。
この場合、各ケタの重み付けの基本となっているのは「10」という数字です。
同じように考えると、N進数の基数は「N」ということになります。
- 2進数の基数→2
- 10進数の基数→10
- 8進数の基数→8
- 16進数の基数→16
また、以下の表のように、N進数の各ケタの重みは、小数点を基準に、
- 左へN⁰、N¹、N²、N³と増えていく
- 右へN⁻¹、N⁻²、N⁻³と減っていく
ことが分かります。
・各進数の重み
… | N³ | N² | N¹ | N⁰ | . | N⁻¹ | N⁻² | N⁻³ | … |
… | 10³ | 10² | 10¹ | 10⁰ | . | 10⁻¹ | 10⁻² | 10⁻³ | … |
… | 2³ | 2² | 2¹ | 2⁰ | . | 2⁻¹ | 2⁻² | 2⁻³ | … |
… | 8³ | 8² | 8¹ | 8⁰ | . | 8⁻¹ | 8⁻² | 8⁻³ | … |
… | 16³ | 16² | 16¹ | 16⁰ | . | 16⁻¹ | 16⁻² | 16⁻³ | … |
「基数変換」とは?
それでは、「基数変換」について、簡単にご説明していきます。
「基数変換」とは、ある進数で表された数を、別の進数で表し直すことです。
例えば、2進数「11.011」を10進数で表し直すと、「3.375」になります。
「基数変換」N進数→10進数の場合
N進数で表された数字を、10進数に変換する方法は、以下の通りです。
- 各ケタに「N進数の重み」を掛ける
- それらを合計する
先ほどの例(2進数「11.011」を10進数で表し直す)を見てみます。
「2進数の重み」は、表の通りです。
… | 2³ | 2² | 2¹ | 2⁰ | . | 2⁻¹ | 2⁻² | 2⁻³ | … |
つまり、こうです。
… | 8 | 4 | 2 | 1 | . | 0.5 | 0.25 | 0.125 | … |
「11・011」の各ケタに「2進数の重み」を掛けます。
1 | 1 | . | 0 | 1 | 1 | ||||
× | × | × | × | × | |||||
… | 8 | 4 | 2 | 1 | . | 0.5 | 0.25 | 0.125 | … |
̩= | = | = | = | = | |||||
2 | 1 | . | 0 | 0.25 | 0.125 |
それらを合計すると、10進数「3.375」になります。
8進数→10進数、16進数→10進数への「基数変換」も、同様の方法でできます。
「基数変換」10進数→N進数の場合
10進数で表された数字を、N進数に変換する方法は、以下の通りです。
- 10進数の数字を、整数部分と小数部分に分ける
- 整数部分をNで割り、余りを下から順に並べる
- 小数部分にNを掛け、整数部分を上から順に並べる
- 2と3を順に並べる
この説明だと非常に分かりにくいので、実際に、10進数「5.375」を2進数に変換してみます。
①まず、「5.375」を「5」と「0.375」に分けます。
②整数部分「5」を、2で割っていきます。
- 5÷2=2…1
- 2÷2=1…0
- 1÷2=0…1
商が0になったら終了です。余りを下から順に並べると「101」になります。
③小数部分「0.375」に、2を掛けていきます(※小数部分のみ引き継いでいきます)
- 0.375×2=0.75
- 0.75×2=1.5
- 0.5×2=1.0
小数部分がなくなったら終了です。整数部分を上から順に並べると「011」なります。
④「101」と「011」を順に並べると、2進数「101.011」になります。
10進数→8進数、10進数→16進数への「基数変換」も、同様の方法でできます。
「基数変換」2進数→8進数の場合
続いて、2進数→8進数の基数変換について考えます。
2進数の3ケタは、8進数の1ケタに対応しています。
よって、2進数を8進数に変換する方法は、以下の通りです。
- 2進数の数字を、小数点を基準に、3ケタごとに区切る(足りない場合0を補う)
- それぞれの区切りを8進数に変換する(2進数の重みを掛け、合計する)
- 順に並べる
文章だと分かりづらいので、実際に、2進数「1101.11」を8進数に変換してみます。
①小数点を基準に、3ケタごとに区切る。(足りない場合0を補う)
0 | 0 | 1 | 1 | 0 | 1 | . | 1 | 1 | 0 |
②それぞれ、2進数の重みを掛け、合計する。
0 | 0 | 1 | 1 | 0 | 1 | . | 1 | 1 | 0 |
× | × | × | × | × | × | × | × | × | |
2² | 2¹ | 2⁰ | 2² | 2¹ | 2⁰ | 2² | 2¹ | 2⁰ | |
= | = | = | = | = | = | = | = | = | |
0 | 0 | 1 | 4 | 0 | 1 | . | 4 | 2 | 0 |
合計 | 合計 | 合計 | |||||||
1 | 5 | . | 6 |
③順に並べると、8進数「15.6」になります。
なお、8進数→2進数への基数変換は、今の逆のことを行います。
8進数1ケタを、2進数3ケタに対応させ、変換します。
「基数変換」2進数→16進数の場合
また、2進数の4ケタは、16進数の1ケタに対応しています。
よって、2進数を16進数に変換する方法は、以下の通りです。
- 2進数の数字を、小数点を基準に、4ケタごとに区切る(足りない場合0を補う)
- それぞれの区切りを16進数に変換する(2進数の重みを掛け、合計する)
- 順に並べる
実際に、2進数「1101.11」を16進数に変換してみます。
①小数点を基準に、4ケタごとに区切る。(足りない場合0を補う)
1 | 1 | 0 | 1 | . | 1 | 1 | 0 | 0 |
②それぞれ、2進数の重みを掛け、合計する。
1 | 1 | 0 | 1 | . | 1 | 1 | 0 | 0 |
× | × | × | × | × | × | × | × | |
2³ | 2² | 2¹ | 2⁰ | 2³ | 2² | 2¹ | 2⁰ | |
= | = | = | = | = | = | = | = | |
8 | 4 | 0 | 1 | . | 8 | 4 | 0 | 0 |
合計 | 合計 | |||||||
13→D | . | 12→C |
③順に並べると、16進数「D.C」になります。(※16進数なので、「13.12」にはなりません)
なお、16進数→2進数への基数変換は、今の逆のことを行います。
16進数1ケタを、2進数4ケタに対応させ、変換します。
まとめ
いかがでしたか?
「基数変換」について、簡単にご説明しました。
10進数・2進数・8進数・16進数について、少しでも理解が深まったでしょうか?。
- 「基数変換って何?」という方
- 「10進数や2進数って?」という方
- 情報・IT関係の勉強を始める方
当ページが、皆さんの生活や学習の一助になれば幸いです。
コメント