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進数 |
|---|---|---|---|
| 0 | 0000 | 8 | 1000 |
| 1 | 0001 | 9 | 1001 |
| 2 | 0010 | 10 | 1010 |
| 3 | 0011 | 11 | 1011 |
| 4 | 0100 | 12 | 1100 |
| 5 | 0101 | 13 | 1101 |
| 6 | 0110 | 14 | 1110 |
| 7 | 0111 | 15 | 1111 |
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進数を区別するために表記上のルールがあります。
0b1010…0bプレフィックスをつける(多くのプログラミング言語で使用)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進数 を学びます。