基数変換とは
普段私達が扱う数字は10進数の場合がほとんどですよね!
ただIT業界に飛び込み、
・基本情報をとる!
・組み込み系の現場で計算が結構必要!?
となると2進数や16進数への変換は避けて通れないです。。。
さてここでは基数変換の方法や
よく耳にする「重み」という言葉について
説明します!
ここで説明する変換のやり方は参考書によく載っている内容では
ないかもしれません。
言われれば当たり前のことしか言っていない内容かもしれませんが、
以下の内容を理解すれば、基数変換は簡単に感じることができている
はず!
それでは言ってみましょう!
重みとは
参考書を開くとよくこの言葉を見かけますよね。
まあ書いてる通りなのかもしれませんが、まず以下の
例を見てみてください。
例
10進数: 51
これって以下のように表現できることはお分かりでしょうか?
(10¹ ✖︎ 5) + (10⁰ ✖︎ 1) = 50 + 1 = 51
ご確認ありがとうございます。
さてなぜこんな書き方をしたのか?
この表現は「重み」という言葉を分かりやすくするための
ものになります!
では次に
10進数: 1847
はどう表現できますでしょうか?
(10³ ✖︎ 1) + (10² ✖︎ 8) + (10¹ ✖︎ 4) + (10⁰ ✖︎ 7) = 1000 + 800 + 40 + 7 = 1847
お気づきの方もいらっしゃるかもしれませんが、10進数の場合
それぞれの位を「10ⁿ」という数値で扱ってます。
この「10」を、重みと呼ばれています。
2進数
では2進数はどうなるか見てみましょう。
2進数: 1010
これを先程の方法で表現すると。。。
(2³ ✖︎ 1) + (2² ✖︎ 0) + (2¹ ✖︎ 1) + (2⁰ ✖︎ 0) = 8 + 0 + 2 + 0 = 10(10進数)
先程の違いは、重みが「2」に変わっていることです。
おや?10進数で表すことができましたね!
一見当たり前のようですが、
この重みについて理解しておけばN進数→10進数への変換は容易です!
では次に10進数→N進数をやってみましょう!
10進数→N進数
正直言うとこの方法では値が大きくなると
少々時間がかかります。
参考書によく載っているやり方の方が早いよと感じる方は
そちらを使用してください!
あくまで本記事は基数変換の仕組みを解説する内容になります。
それを考慮された上で閲覧いただけると幸いです。
例
10進数: 94
これを2進数に変換してみましょう!
2ⁿで表すには、どうすればいいか?
まず以下を考えてみます!
2ⁿ < 94 2(n+1乗)
※すみません、n+1乗の表記ができませんでした。。
これを求めると、n=6になることはお分かりでしょうか?
2⁶ = 64、 2⁷ = 128
64 < 94 < 128
2進数で64は以下のようになります。
・2進数:1000000 (64)
では94から64をひいた30の値を同様に求めていきます!
2⁴ = 16、 2⁵ = 32
16 < 30 < 32
・2進数:1010000 → 80
・残り14
2³ = 8、 2⁴ = 16
8 < 30 < 16
・2進数:1011000 → 88
・残り6
2² = 4、 2³ = 8
4 < 6 < 8
・2進数:1011100 → 92
・残り2
最後に「2」は「2¹」の位に「1」をつければ表現できるので、
答えは
・2進数:1011110 (94)
となります!
正直周りくどいというか、
時間がかかりますのでやり方としてはスマートではないかもしれません。
最後に
いかがでしたでしょうか?
重みについて理解いただければN進数→10進数の変換は
決して難しくありません。
反対は時間がかかりますが、他のやり方が抜けた場合や
慣れてくると暗算で求めることもできるかと思いますので
そういった場合に思い出していただけると幸いです。
重みがどういった役割をしているかを意識して、
取り組んでみてはいかがでしょうか?