コンピュータが内部で使っている2進数(バイナリ)を、私たちが普段使う10進数に変換する方法を知りたい方は多いのではないでしょうか。
プログラミングや情報処理の資格試験・コンピュータアーキテクチャの学習など、さまざまな場面で2進数から10進数への変換スキルが求められます。
本記事では、2進数から10進数への変換方法を「重み付け法(位取り記数法)」を中心に、整数・小数の変換手順・練習問題・変換ツールの活用法まで丁寧に解説します。
計算手順を一つひとつ確認しながら読み進めていただくことで、変換の仕組みを確実に身につけることができるでしょう。
2進数から10進数への変換は「各桁×2の累乗を足し合わせる」重み付け法が基本
それではまず、2進数から10進数への変換の基本である重み付け法(位取り記数法)について解説していきます。
2進数から10進数への変換は、各桁の数字(0または1)にその桁の重み(2の累乗)を掛けて、すべて足し合わせるという非常にシンプルな手法です。
この方法さえ覚えてしまえば、どんな2進数でも確実に10進数に変換することができます。
重み(位の値)の仕組み
2進数の各桁には、右から順に以下のような重みが割り当てられています。
| 桁(右から数えて) | 1桁目 | 2桁目 | 3桁目 | 4桁目 | 5桁目 | 6桁目 | 7桁目 | 8桁目 |
|---|---|---|---|---|---|---|---|---|
| 重み(2の累乗) | 2⁰=1 | 2¹=2 | 2²=4 | 2³=8 | 2⁴=16 | 2⁵=32 | 2⁶=64 | 2⁷=128 |
桁が1つ左に移動するごとに重みが2倍になるのが2進数の特徴です。
整数の変換手順と具体例
2進数「10110」を10進数に変換する手順を確認してみましょう。
2進数:1 0 1 1 0
重み :16 8 4 2 1(右から2⁰・2¹・2²・2³・2⁴)
計算 :1×16 + 0×8 + 1×4 + 1×2 + 0×1
= 16 + 0 + 4 + 2 + 0
= 22
答え:10110(2進数)= 22(10進数)
さらに、2進数「11001011」を変換してみます。
1×128 + 1×64 + 0×32 + 0×16 + 1×8 + 0×4 + 1×2 + 1×1
= 128 + 64 + 0 + 0 + 8 + 0 + 2 + 1
= 203
答え:11001011(2進数)= 203(10進数)
ショートカット:1が立っている桁の重みだけを足す
重み付け法を使う際、0の桁は計算に影響しないため、1が立っている桁の重みだけを足し合わせれば答えが出るというショートカットを活用できます。
「10110」では1が立っている桁は16・4・2の位なので、16+4+2=22と素早く計算できます。
慣れてくると暗算でも素早く変換できるようになるでしょう。
小数を含む2進数の10進数変換方法
続いては、小数点を含む2進数を10進数に変換する方法を確認していきます。
整数部分と同じ重み付け法を使いますが、小数点以下の桁には2の負の累乗(分数)を重みとして使う点が異なります。
小数部分の重みの仕組み
| 桁(小数点以下) | 小数第1位 | 小数第2位 | 小数第3位 | 小数第4位 |
|---|---|---|---|---|
| 重み(2の負の累乗) | 2⁻¹=0.5 | 2⁻²=0.25 | 2⁻³=0.125 | 2⁻⁴=0.0625 |
小数変換の具体例
2進数「0.1011」を10進数に変換
0×2⁻¹(位)は整数部の0
小数部:1×0.5 + 0×0.25 + 1×0.125 + 1×0.0625
= 0.5 + 0 + 0.125 + 0.0625
= 0.6875
答え:0.1011(2進数)= 0.6875(10進数)
整数部と小数部を含む例:「1101.101」を10進数に変換
整数部:1×8 + 1×4 + 0×2 + 1×1 = 13
小数部:1×0.5 + 0×0.25 + 1×0.125 = 0.625
合計:13 + 0.625 = 13.625
答え:1101.101(2進数)= 13.625(10進数)
小数変換でよくある間違いと注意点
小数変換での最もよくある間違いは、小数点以下の桁の重みを整数部分と同じように2の正の累乗で計算してしまうことです。
小数部分は必ず2⁻¹(0.5)・2⁻²(0.25)・2⁻³(0.125)という分数の重みを使うことを忘れないようにしましょう。
また、2進数の小数では有限桁で表せない値もあることに注意が必要です。
変換ツール・プログラムを使った2進数から10進数への変換
続いては、変換ツールやプログラムを活用した2進数から10進数への変換について確認していきます。
手計算の理解を深めた後は、実務では変換ツールを上手に使いこなすことが生産性向上の鍵となります。
Windowsの電卓(プログラマーモード)
Windowsの電卓アプリのプログラマーモードを使えば、2進数(BIN)モードで数値を入力するだけで10進数(DEC)・8進数(OCT)・16進数(HEX)への変換結果が即座に表示されます。
たとえば「10110」とBINモードで入力すると、DEC欄に「22」と表示されることを確認できます。
ExcelのBIN2DEC関数
ExcelのBIN2DEC関数は、2進数を10進数に変換するための専用関数です。
書式:=BIN2DEC(2進数文字列)
例:=BIN2DEC(“10110”) → 22
例:=BIN2DEC(“11111111”) → 255
注意:BIN2DECは10桁(1,023以下)の2進数のみ対応
Pythonでの2進数→10進数変換
Pythonでは「0b」プレフィックスを付けることで2進数をそのまま整数として扱うことができます。
>>> int(“10110”, 2)
22
>>> 0b10110
22
int()関数の第2引数に基数(2)を指定することで、任意の2進数文字列を10進数に変換できます
Pythonのint()関数は2進数だけでなく8進数(基数8)・16進数(基数16)にも対応しており、さまざまな進数変換に使える汎用性の高い関数です。
2進数から10進数への変換練習問題と解法解説
続いては、理解を深めるための練習問題と解法を確認していきます。
繰り返し練習することで変換スピードと正確性が向上し、応用問題にも対応できる実力が身についていきます。
基本問題
問題1:1010(2進数)を10進数に変換しなさい
解答:1×8 + 0×4 + 1×2 + 0×1 = 8+2 = 10
問題2:110101(2進数)を10進数に変換しなさい
解答:1×32 + 1×16 + 0×8 + 1×4 + 0×2 + 1×1
= 32+16+4+1 = 53
応用問題
問題3:11111111(2進数)を10進数に変換しなさい
解答:128+64+32+16+8+4+2+1 = 255
(8ビットすべてが1の場合の最大値=255です)
問題4:0.101(2進数)を10進数に変換しなさい
解答:1×0.5 + 0×0.25 + 1×0.125 = 0.5+0.125 = 0.625
変換ミスを防ぐためのチェックリスト
| 確認ポイント | 具体的な注意事項 |
|---|---|
| 桁の数を正確に数える | 右から1桁目(2⁰=1)を起点にする |
| 最上位ビット(MSB)の重みを確認 | n桁の2進数の最上位重みは2^(n-1) |
| 0の桁を計算に含めない | 1が立っている桁の重みだけを足す |
| 小数部分の重みを間違えない | 小数第1位は2⁻¹=0.5から始まる |
| 計算後に検算する | 逆変換(10進数→2進数)で元の値に戻るか確認 |
重要ポイント:2進数から10進数への変換は「1が立っている桁の重み(2の累乗)をすべて足し合わせる」という重み付け法が基本です。8ビットの重みは右から1・2・4・8・16・32・64・128の順に対応しており、この8つの数字を暗記しておくと変換が格段に速くなります。
まとめ
本記事では、2進数から10進数への変換方法を重み付け法を中心に、小数変換・変換ツールの活用・練習問題まで幅広く解説しました。
最も重要なポイントは、各桁の数字(0または1)にその桁の重み(2の累乗)を掛けて足し合わせるという重み付け法をしっかり理解することです。
整数部分では2⁰・2¹・2²…、小数部分では2⁻¹・2⁻²・2⁻³…という重みを使い分けることで、あらゆる2進数を正確に10進数に変換できます。
Excelのbin2dec関数・PythonのInt()関数・Windowsの電卓プログラマーモードなど、実用的なツールも積極的に活用しましょう。
練習問題を繰り返し解くことで変換スピードと正確性が向上し、プログラミングやコンピュータサイエンスの学習がより深まることでしょう。
ぜひ本記事を参考に、2進数と10進数を自在に行き来できるスキルを身につけてください。