2進数から10進数への変換とは、底が 22 の数を底が 1010 の数に書き換えることです。考え方はシンプルで、2進数の各桁はその位の 22 の累乗を含めるかどうかを表します。11 ならその位の値を含め、00 なら含めません。

たとえば、101121011_2111011_{10} に等しくなります。これは 88 を含み、44 は含まず、22 を含み、11 を含むからです。

2進数の位の値が10進数に変わるしくみ

2進数は底が 2 の数体系なので、位の値は 1010 の累乗ではなく 22 の累乗になります。右から左へ、各位は次のようになります。

20,  21,  22,  23,  2^0,\; 2^1,\; 2^2,\; 2^3,\; \dots

つまり、最初のいくつかの位の値は次の通りです。

1,  2,  4,  8,  16,  1,\; 2,\; 4,\; 8,\; 16,\; \dots

桁が 11 ならその位の値を数えます。桁が 00 なら数えません。

2進数から10進数への変換のルール

各桁が bnbn1b1b0b_n b_{n-1} \dots b_1 b_0 の2進数を考え、各 bib_i00 または 11 であるとすると、10進数での値は次のようになります。

i=0nbi2i\sum_{i=0}^{n} b_i 2^i

変換するのにこの式を覚える必要はありませんが、考え方をはっきり示しています。2進数とは、22 の累乗を使った位取りにすぎません。

例題:11001211001_2 を変換する

右端から始めると、位の値は 1,2,4,8,161, 2, 4, 8, 16 です。

110012=116+18+04+02+1111001_2 = 1 \cdot 16 + 1 \cdot 8 + 0 \cdot 4 + 0 \cdot 2 + 1 \cdot 1

次に、11 が付いている値だけを残します。

110012=16+8+111001_2 = 16 + 8 + 1

したがって、10進数での値は

110012=251011001_2 = 25_{10}

となります。手早く確認したいなら、左から「1616 が1つ、88 が1つ、44 が0個、22 が0個、11 が1つ」と読んでみましょう。

この方法が成り立つ理由

10進数では、407407 は次の意味です。

4102+0101+71004 \cdot 10^2 + 0 \cdot 10^1 + 7 \cdot 10^0

2進数でも仕組みは同じで、使うのが 22 の累乗になるだけです。

110012=124+123+022+021+12011001_2 = 1 \cdot 2^4 + 1 \cdot 2^3 + 0 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0

構造はまったく同じです。変わるのは底だけです。

2進数から10進数への変換でよくあるミス

  1. 22 の累乗ではなく 1010 の累乗を使ってしまうこと。2進数の位の値は 1,2,4,8,16,1, 2, 4, 8, 16, \dots です。
  2. 指数を確認せずに左から位を数えてしまうこと。いちばん安全なのは、右端を 202^0 として始める方法です。
  3. 10211021 のような数を2進数だと思ってしまうこと。有効な2進数の桁は 0011 だけです。
  4. 先頭の 0 は値を変えないことを忘れること。たとえば、001120011_211211_2 はどちらも 3103_{10} です。

2進数から10進数への変換が使われる場面

2進数から10進数への変換は、コンピュータが値をどのように保存しているかを読み取るときに出てきます。基礎的なコンピュータサイエンス、デジタル回路、データ表現、さらに権限、フラグ、メモリ値のようなビットベースの設定でも使われます。

ハードウェアを直接扱わないとしても、2進数の位取りを理解すると、数の仕組みがずっとわかりやすくなります。

似た変換をやってみよう

1011012101101_2 を10進数に変換してみましょう。まず位の値を書き、そのあと 11 に対応する 22 の累乗だけを足します。この習慣だけで、変換ミスの多くを防げます。

問題の解き方でお困りですか?

問題をアップロードすると、検証済みのステップバイステップ解答が数秒で届きます。

GPAI Solver を開く →