基数と基数変換のやり方
概要
最終更新日:2021/06/01 基数とは何かということと、基数変換のやり方の説明を書いた記事です。 主に次の項目に該当する方に向けて書いています。
- 基数とは何かを知りたい
- 基数変換とは何か知りたい
基数とは
基数とは進数の桁を表現するために使われる数のことです。 この基数を詳しく理解するために、桁について説明します。
桁の構成
数の桁というのは三つの要素により構成されています。
- 仮数
- 基数
- 重み
仮数
仮数は各桁の数です。 123という数字の各桁の仮数は以下のようになります。
- 1桁目の仮数 => 3
- 2桁目の仮数 => 2
- 3桁目の仮数 => 1
基数
基数は桁の上げ下げに必要な数です。 例えば10進数なら各桁の上げ下げに必要な数は「10」2進数なら「2」 16進数なら「16」のように進数の値が使われています。
重み
重みは桁数を表すための数です。 注意点として重みは0から始まるので、(123)10の重みは以下のようになります。
- 1桁目の重み => 0
- 2桁目の重み => 1
- 3桁目の重み => 2
各桁の数を出す計算式
この三つの要素を使用して行う各桁の数を出す式は以下の通りです。
-
仮数 * (基数)重み
重みはべき乗の回数、基数はべき乗に使用される数です。 例として(123)10という値の各桁を上の三つの要素の式にあてはめると 以下のようになります。
-
3桁目 => 1 * (10)2
2桁目 => 2 * (10)1
1桁目 => 3 * (10)0
最初の桁は重みが0ですが、0乗は必ず1として扱います。 そして、この計算で出た結果を全て足し算すれば
-
100 + 20 + 3 => 123
となります。 日常で意識せずに使っている数の桁についての説明でした。 この桁を表現するために必要な要素の一つが基数です。
小数点
小数点は2進数、10進数、16進数ともに「0.~」で表現します。 ただ、2進数や16進数をこの後説明する基数変換で10進数に変換すると 少しややこしくなるのでこちらで説明をします。 (0.1)10は(1/基数)1した答えで、(0.1)2も(0.1)16も同じです。 では、各進数の小数点を10進数に変換した数にしてみます。
-
10進数 => 0.1
2進数 => 0.5
16進数 => 0.0625
上の数のように2進数や16進数の0.1は1を各基数で割った値になるので、 0.1のようなわかりやすい数字にはなりません。 もちろん0.01の場合も上の数字を更に1/2や1/16にするので、 (0.25)10や(0.00390625)10となります。 詳しい説明は小数点の記事で書きますので、 今回は小数点を基数変換したら分かりづらくなってしまうことを 覚えておいてください。
無限小数
無限小数とは小数部を割り出す計算が終わらずに 同じ数列を繰り返している少数の事です。 (10)10/3の答え(3.333333333…)のようになります。 「循環小数」とも呼ばれています。
基数変換
基数変換とはある基数の値を別の基数の値に変換することです。 今回は以下の基数の変換を方法の説明をします。
- 2進数と10進数
- 2進数と16進数
- 10進数と16進数
2進数と10進数の変換
2進数と10進数の変換の説明をします。 2進数から10進数、10進数から2進数のどちらも難しい計算をするわけではありませんが、 10進数から2進数は少しだけ慣れが必要かもしれません。
2進数から10進数
2進数から10進数への変換は、次の手順で行います。 変換で使用する2進数の数は(1101)2です。
- 各桁単位で分解する
- 分解した各桁の数を全て足す
2進数(1101)2を上の手順を使用して10進数に変換します。 まずは(1101)2を各桁単位で分解を行うと次のようになります。
-
「1 * 23」「1 * 22」「0 * 21」「1 * 20」
次は各桁の数を足して合計値を算出します。
-
「8」+「4」+「0」+「1」 = (13)10
2進数(1101)2を10進数に変換した結果は(13)10となります。
10進数から2進数
10進数から2進数への変換は整数部と小数部で別々の計算して行います。
整数部の変換
整数部の変換は10進数の値を0になるまで、基数の2で割っていきます。 その計算の間で出た余りを変換された数として使用します。 例として10進数(49)10を2進数に変換します。 余りの数は割った順番に重みとして使用します。 10進数(49)10を2進数に変換した結果は(110001)2となります。
小数部の変換
小数部の変換は小数点以下の値に基数の2を掛けて出た答えの整数部の値を 変換された値として使用します。 例として10進数(0.375)10を2進数に変換します。 こちらも基数を掛けた順番に整数部の値を重みとして使用します。 10進数(0.375)10を2進数に変換した結果は(0.011)2となります。 小数部の注意点として無限小数が発生して計算が終了しないことがあるので、 気を付けてください。
2進数と16進数の変換
2進数と16進数は親和性が高いので変換自体は難しくありません。 ただ、2進数、16進数に慣れていないと最初は時間がかかるかもしれません。
2進数から16進数
2進数から10進数への変換は、次の手順で行います。 変換で使用する2進数の数は(1010110101)2です。
- 2進数を4桁ずつ区切る
- 区切った2進数単位で16進数にする
(1010110101)2を16進数に変換します。 まず、2進数を下位の桁から4桁ずつ区切ります。
-
1010110101 => 10 1011 0101
次は、4桁に区切った2進数単位で16進数に変換します。
-
10 => 2
1011 => B
0101 => 5
2進数(10 1011 0101)2を16進数に変換した結果は(2B5)16となります。
16進数から2進数
16進数から2進数への変換は単純に16進数の各桁を2進数にするだけです。 変換で使用する16進数の数は(AB07)16です。
-
A => 1010
B => 1011
0 => 0000
7 => 0111
16進数の(AB07)16を2進数に変換した結果は(1010 1011 0000 0111)2となります。
10進数と16進数
10進数と16進数の変換は上で紹介した「10進数から2進数」と 「2進数から10進数」の変換方法の基数の値を2ではなく16にします。
10進数から16進数
10進数から16進数への変換も整数部と小数部で別々の計算して行います。
整数部の変換
整数部の変換は10進数の値を0になるまで、基数の16で割っていきます。 その計算の間で出た余りを変換された数として使用します。 例として10進数(1864)10を16進数に変換します。 余りの数は割った順番に重みとして使用します。 10進数(1864)10を16進数に変換した結果は(748)16となります。
小数部の変換
小数部の変換は小数点以下の値に基数の16を掛けて出た答えの整数部の値を 変換された値として使用します。 例として10進数(0.1875)10を16進数に変換します。 こちらも基数を掛けた出た整数部の数を重みとして順番に使用します。 10進数(0.1875)10を16進数に変換した結果は(0.3)16となります。 小数部の注意点として無限小数が発生して計算が終了しないことがあるので、 気を付けてください。
16進数から10進数
16進数から10進数への変換は、次の手順で行います。 変換で使用する16進数の数は(A6B2)16となります。
- 各桁単位で重みを分解する
- 分解した各桁の数を全て足す
(A6B2)16を上の手順を使用して10進数に変換します。 まずは(A6B2)16を各桁単位で重みの分解を行うと次のようになります。
-
「A * 163」「6 * 162 」「 B * 161」「 2 * 160」
次は各桁の数を足して合計値を算出します。
-
「40960」+「1536」+「176」+「2」 = (42674)10
16進数(A6B2)16を10進数に変換した結果は(42674)10となります。
まとめ
今回の記事の要点を最後にまとめました。
- 基数は桁を表現するために使用される数
- 基数の数は進数の値で決まる
- 基数変換はある基数の数を別の基数の数として変化する方法