#02 バイナリデータ入門

2進数——0と1だけで数を数える方法

「桁の位取り」を思い出そう

まず私たちが普段使っている 10進数 の仕組みを確認しましょう。

たとえば「365」という数字。これは何を意味しているでしょうか?

365 = 300 + 60 + 5
    = 3 × 100  +  6 × 10  +  5 × 1
    = 3 × 10²  +  6 × 10¹  +  5 × 10⁰

重要なのは「右から順に、10倍ずつ位が大きくなる」という点です。10進数では、1桁に使える数字は 0〜9の10種類 です。


2進数の仕組み

2進数も「桁の位取り」という考え方はまったく同じです。ただし違うのは、10倍ずつではなく2倍ずつ位が大きくなるという点と、1桁に使える数字は 0か1の2種類だけ という点です。

2進数の各桁の重み(右から):

    桁  :  8桁目  7桁目  6桁目  5桁目  4桁目  3桁目  2桁目  1桁目
    重み :   128     64     32     16      8      4      2      1
    計算 :   2⁷     2⁶     2⁵     2⁴     2³     2²     2¹     2⁰

2進数 → 10進数の変換

各桁の「重み × その桁の数字」をすべて足し合わせます。

例1:2進数「1011」を10進数に変換

  1   0   1   1
  ↓   ↓   ↓   ↓
  8   4   2   1   ← 各桁の重み

  1×8 + 0×4 + 1×2 + 1×1
=   8 +   0 +   2 +   1
= 11

例2:2進数「11001010」を10進数に変換

  1   1   0   0   1   0   1   0
  ↓   ↓   ↓   ↓   ↓   ↓   ↓   ↓
128  64  32  16   8   4   2   1

= 128 + 64 + 0 + 0 + 8 + 0 + 2 + 0
= 202

10進数 → 2進数の変換

「2で割り続けて余りを書き留める」方法を使います。

例:10進数「13」を2進数に変換

13 ÷ 2 = 6 … 余り 1   ← 最下位ビット(右端)
 6 ÷ 2 = 3 … 余り 0
 3 ÷ 2 = 1 … 余り 1
 1 ÷ 2 = 0 … 余り 1   ← 最上位ビット(左端)

余りを 下から上へ 読むと:1101

確認:1101 = 8 + 4 + 0 + 1 = 13

例:10進数「42」を2進数に変換

42 ÷ 2 = 21 … 余り 0
21 ÷ 2 = 10 … 余り 1
10 ÷ 2 =  5 … 余り 0
 5 ÷ 2 =  2 … 余り 1
 2 ÷ 2 =  1 … 余り 0
 1 ÷ 2 =  0 … 余り 1

下から読むと:101010

確認:101010 = 32 + 0 + 8 + 0 + 2 + 0 = 42


0〜15を2進数で表す一覧

4ビットで表現できる0〜15の一覧です。パターンをよく観察してみてください。

10進数2進数10進数2進数
0000081000
1000191001
20010101010
30011111011
40100121100
50101131101
60110141110
70111151111

2進数でのカウントパターン

この一覧を眺めると、いくつかのパターンに気づくはずです。

右端(1の位) は 0→1→0→1→0→1… と交互に変わります。

右から2番目(2の位) は 2個ごとに変わります(00→11→00→11…)。

右から3番目(4の位) は 4個ごとに変わります。

0000
0001  ← 右端が変わる
0010  ← 2桁目が繰り上がる
0011
0100  ← 3桁目が繰り上がる
0101
0110
0111
1000  ← 4桁目が繰り上がる

これはちょうど、10進数で「9→10」「99→100」と桁が増えるのと同じ仕組みです。2進数では 「1→10」「11→100」 と繰り上がります。


2進数の足し算を体感する

2進数の足し算も10進数と同じルールです。

10進数の足し算:  9 + 1 = 10(桁が上がる)
2進数の足し算:   1 + 1 = 10(桁が上がる)

具体例を見てみましょう。

  0 1 1 0   (= 6)
+ 0 0 1 1   (= 3)
---------
  1 0 0 1   (= 9)

繰り上がりを追って確認:

右端 : 0 + 1 = 1
2桁目: 1 + 1 = 10 → 0を書いて1を繰り上げ
3桁目: 1 + 0 + 1(繰上) = 10 → 0を書いて1を繰り上げ
4桁目: 0 + 0 + 1(繰上) = 1

結果:1001 = 8 + 0 + 0 + 1 = 9


2進数を書くときの慣習

プログラムや技術文書では、2進数と10進数を区別するために表記上のルールがあります。

  • 0b10100b プレフィックスをつける(多くのプログラミング言語で使用)
  • 1010₂ … 数字の右下に2をつける(数学的な表記)
  • (1010)₂ … 括弧と2を組み合わせた表記

普通の文章で「2進数の1010」と書くこともよくあります。


まとめ

  • 10進数は「10倍ずつ大きくなる位取り」、2進数は「2倍ずつ大きくなる位取り」
  • 2進数→10進数:各桁の重み(1, 2, 4, 8, 16…)を掛けて合計する
  • 10進数→2進数:2で割り続けて余りを下から読む
  • 2進数のカウントは右端が最も速く変わり、桁が上がるたびに繰り上がる
  • 1 + 1 = 10 が2進数の基本ルール

次回は、2進数をもっと人間が読みやすくするための 16進数 を学びます。