【基本情報】第2回 進数とは?Part.2 基数変換について【試験対策】

お疲れ様です!
うみんちゅ(@u_mintyu)です。

前回の記事(進数とは?)では「進数」について解説をしました。


私たちが普段使用している10進数から、2進数/8進数/16進数と種類があることがわかりましたね。

基数を指定しない進数を「N進数」としたとき、異なる進数へ変換することを
「基数変換」といいます。

もう少し簡単に表現をしますと

ある数を別な進数で表すことを「基数変換」といいます。

基数変換はネットワークやサーバ設定などで利用するので、頑張って覚えましょう!

[affi id=11]

N進数⇒10進数への基数変換

T之助
T之助

さぁ、いよいよ「基数変換」についてのお勉強です!

I太郎
I太郎

もう言葉からして難しそうだよぅ

冒頭で説明した通り、ある数を別の進数で表しなおすことを「基数変換」といいます。
まずは、私たちに最もなじみが深い10進数の基数変換について解説をします。

【例】
2進数100.101という数があったとします。
これを10進数で表すと、4.625となります。

I太郎
I太郎

全く分からない

T之助
T之助

N進数⇒10進数の基数変換では、「N進数の重み」から計算をします。

前回の記事で勉強した「重み」を計算に使います。

例文は2進数⇒10進数の基数変換ですね。
それでは、2進数100.101を重み対応表で表してみましょう。



おさらいとなりますが、N進数は少数点を基準に、左にいけば乗数が増え、右にいけば乗数が減っていきます

今回は2進数なので、N=2です、重みに当てはめると「2の0乗/2の1乗/2の2乗…」となりますね。

2進数の重みを表にしたものがこちらです!


I太郎_
I太郎

2進数だから「N=2」、つまり2進数の重みは「2の2乗=4」かな?

T之助
T之助

この「重み」が基数変換のポイントになります!

2進数の重みについて理解できれば、10進数への変換は簡単です。

さきほどの例文ででてきた「100.101」と「2進数の重み」を掛け算します。



桁数に応じた「重み」を掛け算した合計値が10進数での表記となります。
つまり、「2進数:100.101」を「10進数に変換する計算式」は以下の通りです。

例文では2進数ですが、8進数/16進数でも計算式は同じです。
数の桁数に応じて重みを掛け算した合計値が10進数表記になります。

POINT
POINT

N進数⇒10進数は、各桁にN進数の重みを掛けて足す!!

[affi id=4]

10進数⇒N進数への基数変換

さて、今度は逆の基数変換をしてみましょう。
10進数「4.625」を2進数で表現すると「100.101」になります。

T之助
T之助

先程と同様に「重み対応表」を使って計算してみましょう。

【重み対応表を使用する方法】
10進数⇒N進数の場合は、大きい重みから表を埋めていくようにします
先程の重み対応表に再登場してもらいましょう。

※該当する重みを赤字で記載しています。


例文では2進数なので、まずは最も大きい重みである「4」を入れます

すると、残る数は「0.625」ですよね?
0.625には2進数の重みがいくつ残っているでしょうか

0.6250.5(2進数の重み)」なので、0.625-0.5=0.125が残ります

0.125
には2進数の重みがいくつ残っていますか?
0.1250.125(2進数の重み)」なので、0.125ー0.125=となりました。

こうすると、10進数:4.625には

4 / 0.5 / 0.125 の2進数の重みが含まれていることがわかりましたね。

ここまでくれば、重みに応じた桁に対して「1」をあてはめるだけです。

I太郎_
I太郎

対応表をつくれば、あとは「当てはめるだけ」なんだね!

割り算と掛け算を使用する方法

重み対応表を使用せずに基数変換を行う方法もあります。
10進数:6.375を2進数で表現すると、110.011です。

この場合、整数部(6)と少数部(0.375)に分けて考えるようにしましょう。

【整数部の変換方法】
10進数である「6」を変換したい基数で割り算をします。
今回は2進数なので、「4÷2=」ですよね、この割り算の商を引き継いで
また基数
2で割り算をします。
※商が0になるまでひたすら繰り返し!!

「3÷2=
「1÷2=0(あまり1)」←ここでストップ

この割り算で出たあまりの数字を下から並べると2進数の表記になります。

計算式     あまり
6÷2=3・・・0  ↑
3÷2=1・・・1  ↑
1÷2=0・・・1  ↑下から並べます

つまり、110になるってことですね!

I太郎
I太郎

割り算の方が早く変換できるかも!

[affi id=6]

【小数部の変換方法】
10進数の少数部を2進数に変換するためには、基数である「2」を掛け算した答えの整数部を並べていきます。

だんだんごちゃごちゃしてきましたよね?笑
あと少しなので頑張ってついてきてくださーーい!

例文の小数部は「0.375」なので、基数である「2」を掛け算します。

0.375×2=0.75
0.75×2=1.5
0.5×2=1.0 ←小数部が0になったら終了
赤字が解の小数部です、並べてみると「011」ですよね。

最後に、計算した「整数部」と「少数部」を合わせると
110.011になり、基数変換は完了です!

I太郎
I太郎

整数部と少数部で計算が違うんだね

T之助
T之助

ちなみに、10進数⇒2進数の小数部を計算しても永遠に終わらない時があります
必ずしもすべての少数が変換できるとは限らないので注意してください!

POINT
POINT

10進数⇒N進数は
(整数部)基数で割り算して下からあまりを並べる

(小数部)基数で掛け算して整数部を順に並べる

2進数と8進数・16進数の関係性

10進数⇔N進数の基数変換の解説をしましたが、すこし複雑なお話になってしまいましたかね。。

I太郎
I太郎

文字ばっかりで読み取りづらかったです

T之助
T之助

正直ですね。。

しかし、2進数と8進数・16進数の変換はもう少し簡単に行うことができます!
安心してください!

2進数⇔8進数の基数変換

ちょっと解説するのが面倒になってきた
2進数の3桁は、8進数の1桁に対応しています!(2の3乗は8)
小数点を基準にして、2進数を3桁ごとに区切り、8進数にすることができます。

【例】
2進数:1000.01を8進数であらわすと、10.2となります。

I太郎
I太郎

例のごとく謎

文章だと分かりづらいので、表にしてみました!


POINT
POINT

2進数⇔8進数の基数変換は、2進数を3桁で区切って、8進数にする!!

2進数⇔16進数の基数変換

これも同じイメージで計算をすることができます。
2進数の4桁は、16進数の1桁に対応しています!(2の4乗は16)

少数点を基準に4桁ずつ区切ってみました。
※桁数が足りない場合は0で補います。

【例】
2進数:1101.011を16進数で表すと、D.6(16進数なのでアルファベットに注意)
詳細は以下の通り。

16進数ではアルファベットを使用するため、整数部には注意が必要です!

I太郎_
I太郎

ふむふむ、おちついて考えれば理解できる!

T之助
T之助

基数変換には「重み」が重要だということがわかりますね。

POINT
POINT

2進数⇔16進数の基数変換は、2進数を4桁ずつ区切って、16進数にする!

まとめ

さぁ、進数の鬼門である「基数変換」について解説をしました!!

ここまで読んでわかりましたか??うみんちゅならたぶん理解できません。

基数変換は今までの数式とは全く異なる考え方なので、一度で覚えられるものではない
と思っています。
覚えられないうちは、本記事を備忘録として活用してください。

ちなみに、お気づきかもしれませんが
基数変換は「2進数が基準」になっています

10進数⇔2進数
8進数⇔2進数⇔16進数

上記のような関係図になっているため、8進数⇔16進数の基数変換をする際には
一度2進数に変換してから再度計算する必要があることを認識しておいてください。

I太郎_
I太郎

2進数を押さえておけば、スムーズに覚えられるかも!

T之助
T之助

いい観点ですね、ポイントを理解して効率的に覚えましょう。

POINT
POINT

基数変換の基準は、2進数

長かった「進数」と「基数変換」の記事もこれにておしまい!
図とか表を作成するのに疲れました、笑

基本情報などの資格取得/皆さんのキャリアアップに少しでも力になれたら幸いです!

それでは皆さん、よいITライフを!

第3回はこちら↓

[affi id=8]
最新情報をチェックしよう!