1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🔍 【保存版】2進数の仕組みを初心者が理解するための完全ガイド⚡️ 進数変換入門🔄

1
Posted at

2進数完全ガイド:基礎から進数変換まで

私は現在、基本情報技術者試験の取得を目指しています。今回は自分自身の備忘記録も兼ねて、同じく基本情報技術者試験を目指す方々に向けて、2進数の基礎から変換方法まで詳しく解説していきます。

2進数は、基本情報技術者試験の午前試験で頻出される重要な分野であり、コンピューターの動作原理を理解する上で欠かせない基礎概念です。一見すると0と1だけの単純な表現に見えますが、その仕組みを理解することで、計算処理や情報の記憶方法などがより具体的にイメージできるようになります。

目次

はじめに

日常生活では当たり前のように10進数(0〜9の数字)を使っていますが、コンピューターの世界では2進数(0と1だけ)が基本となります。なぜコンピューターは2進数を使うのでしょうか?

コンピューターは電気信号を使って動作しており、電気の「ON(1)」と「OFF(0)」の状態を基本として情報を処理します。そのため、2進数がコンピューターにとって最も自然な数の表現方法となっています。

n進数とは何か

基本概念

n進数とは、n個の数字を使って数を表現する方法です。私たちが普段使っている10進数は、0から9までの10個の数字を使って数を表現しています。

進数の基本ルール

  • 10進数: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9(10個の数字)
  • 2進数: 0, 1(2個の数字)
  • 8進数: 0, 1, 2, 3, 4, 5, 6, 7(8個の数字)
  • 16進数: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F(16個の数字)

16進数では、10以上の値をA〜Fのアルファベットで表現します。

位取り記数法の理解

すべての進数は位取り記数法という原理に基づいています。これは、数字の位置によって、その数字が表す値が変わるという仕組みです。

10進数の例

1234 = 1×10³ + 2×10² + 3×10¹ + 4×10⁰
     = 1×1000 + 2×100 + 3×10 + 4×1
     = 1000 + 200 + 30 + 4
     = 1234

この原理は他の進数でも同じように適用されます。

2進数の基本概念

2進数の仕組み

2進数は、0と1の2つの数字だけを使って数を表現します。位取り記数法により、右から左に向かって2の0乗、2の1乗、2の2乗...という重みを持ちます。

2進数の例

1011 = 1×2³ + 0×2² + 1×2¹ + 1×2⁰
     = 1×8 + 0×4 + 1×2 + 1×1
     = 8 + 0 + 2 + 1
     = 11

2進数の数え方

2進数では、0から始まって以下のように数を数えます。

10進数  2進数
0       0
1       1
2       10      (1×2¹ + 0×2⁰)
3       11      (1×2¹ + 1×2⁰)
4       100     (1×2² + 0×2¹ + 0×2⁰)
5       101     (1×2² + 0×2¹ + 1×2⁰)
6       110     (1×2² + 1×2¹ + 0×2⁰)
7       111     (1×2² + 1×2¹ + 1×2⁰)
8       1000    (1×2³ + 0×2² + 0×2¹ + 0×2⁰)

2進数では、各桁で「繰り上がり」の発生するタイミングが10進数と異なります。10進数の2を表す際、0→1の次は、もう使える数字がないので10(イチゼロ)になります。

ビットとの関係

ビットとは

ビット(bit) は、2進数の1桁を表す単位です。1ビットは0または1の値を持ちます。

2進数: 1011
ビット: 4ビット(4桁)

バイトとの関係

1バイト = 8ビットという関係があります。これは、コンピューターが情報を処理する際の基本単位となっています。

8ビットで表現できる値の範囲

最小値: 00000000 = 0
最大値: 11111111 = 255

2進数の簡単な覚え方

パターン1:2の累乗を暗記する

まず、2の累乗を覚えることから始めましょう。これは2進数変換の基礎となります。

2⁰ = 1
2¹ = 2
2² = 4
2³ = 8
2⁴ = 16
2⁵ = 32
2⁶ = 64
2⁷ = 128
2⁸ = 256

覚え方のコツ

2の累乗は、前の値を2倍していくだけです。
1 → 2 → 4 → 8 → 16 → 32 → 64 → 128 → 256...

この数列を覚えることで、2進数の各桁の重みが分かります。

パターン2:規則性を見つける

2進数には規則性があります。

10進数 2進数 (3桁で表示) 3桁目 (4の位) 2桁目 (2の位) 1桁目 (1の位)
0 000 0 0 0
1 001 0 0 1
2 010 0 1 0
3 011 0 1 1
4 100 1 0 0
5 101 1 0 1
6 110 1 1 0
7 111 1 1 1

各桁の規則性

  • 1桁目(右端):1つおきに0と1が交互に現れる
  • 2桁目 :2つずつ0が続き、2つずつ1が続く
  • 3桁目 :4つずつ0が続き、4つずつ1が続く
1桁目(1の位): 0, 1, 0, 1, 0, 1, 0, 1...(1つおきに変化)
2桁目(2の位): 0, 0, 1, 1, 0, 0, 1, 1...(2つおきに変化)
3桁目(4の位): 0, 0, 0, 0, 1, 1, 1, 1...(4つおきに変化)

この規則は「n桁目は2^(n-1)個おきに変化する」という法則にまとめることができます。この規則性を理解することで、2進数の並びを覚えやすくなります。

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

割り算を使った変換方法

最も基本的で確実な方法は、10進数を2で割り続ける方法です。

ステップバイステップの手順

  1. 10進数を2で割る
  2. 商と余りを記録する
  3. 商が0になるまで繰り返す
  4. 余りを下から上に読む

例:13を2進数に変換

13 ÷ 2 = 6 余り 1
6 ÷ 2  = 3 余り 0
3 ÷ 2  = 1 余り 1
1 ÷ 2  = 0 余り 1

余りを下から読む: 1101

2の累乗を使った変換方法

2の累乗を暗記している場合、より直感的な方法があります。

例:13を2進数に変換

  1. 13に含まれる2の累乗を探す
    1, 2, 4, 8, 16…の中で、13以下の最大は「8」(2³)
  2. 13から8を引く → 残り5
  3. 5から4を引く → 残り1
  4. 1より大きいので、2は含まれない
  5. 残り1に1は含まれる → 残り0
    よって、13 = 8 + 4 + 1 = 2³ + 2² + 2⁰ と表せます。

13を作るために使った2の累乗の位置に「1」、使わなかった位置に「0」を入れます。

2の累乗 8 (2³) 4 (2²) 2 (2¹) 1 (2⁰)
使った? 使った 使った 使わず 使った
2進数 1 1 0 1

したがって、13の2進数表現は「1101」となります。

10進数から8進数への変換

8進数の基本

8進数は0〜7の8個の数字を使います。コンピューターの世界では、主にファイルの権限設定などで使用されます。

8の累乗をを暗記する

8⁰ = 1
8¹ = 8
8² = 64
8³ = 512
8⁴ = 4096

割り算を使った変換

例:64を8進数に変換

64 ÷ 8 = 8 余り 0
8 ÷ 8  = 1 余り 0
1 ÷ 8  = 0 余り 1

余りを下から読む: 100

2進数経由の変換

2進数を経由すると、8進数への変換が簡単になります。これは、8 = 2³という関係があるためです。

例:64を8進数に変換

  1. 10進数→2進数
    64 = 1000000

  2. 3桁ずつグループ化(右から)
    1000000 = 1 | 000 | 000

  3. 各グループを8進数に変換
    1 = 1
    000 = 0
    000 = 0

  4. 結果
    100

2進数と8進数の対応表

2進数   8進数
000     0
001     1
010     2
011     3
100     4
101     5
110     6
111     7

この対応表を覚えることで、2進数⇄8進数の変換が瞬時に行えます。

10進数から16進数への変換

16進数の基本

16進数は0〜9とA〜Fの16個の文字を使います。プログラミングでは色の指定やメモリアドレスの表現でよく使用されます。

10進数   16進数
0        0
1        1
...
9        9
10       A
11       B
12       C
13       D
14       E
15       F

16の累乗を暗記する

16⁰ = 1
16¹ = 16
16² = 256
16³ = 4096

割り算を使った変換

例:255を16進数に変換

255 ÷ 16 = 15 余り 15
15 ÷ 16  = 0  余り 15

余り15 = F
余り15 = F

結果: FF

2進数経由の変換

16 = 2⁴という関係を利用します。

例:255を16進数に変換

  1. 10進数→2進数
    255 = 11111111

  2. 4桁ずつグループ化(右から)
    11111111 = 1111 | 1111

  3. 各グループを16進数に変換
    1111 = F
    1111 = F

  4. 結果
    FF

2進数と16進数の対応表

2進数   16進数
0000    0
0001    1
0010    2
0011    3
0100    4
0101    5
0110    6
0111    7
1000    8
1001    9
1010    A
1011    B
1100    C
1101    D
1110    E
1111    F

8進数から10進数への変換

8進数から10進数への基本的な考え方

8進数から10進数への変換は、位取り記数法を利用します。8進数の各桁に8の累乗をかけて、それらを足し合わせることで10進数を求めることができます。

変換の手順

例:8進数の125を10進数に変換

  1. 8の累乗を実際の数値に置き換え
  2. 各項を計算
  3. 合計して10進数を得る
8進数: 125

各桁に8の累乗をかけて計算
1×8² + 2×8¹ + 5×8⁰
= 1×64 + 2×8 + 5×1
= 64 + 16 + 5
= 85

例:8進数の777を10進数に変換

8進数: 777

各桁に8の累乗をかけて計算:
7×8² + 7×8¹ + 7×8⁰
= 7×64 + 7×8 + 7×1
= 448 + 56 + 7
= 511

計算を確認する方法

変換結果が正しいか確認するには、得られた10進数を8進数に逆変換してみましょう。

511 ÷ 8 = 63 余り 7
63 ÷ 8  = 7  余り 7
7 ÷ 8   = 0  余り 7

余りを下から読む: 777 ✓

16進数から10進数への変換

16進数から10進数への基本的な考え方

16進数から10進数への変換も、位取り記数法を使います。16進数の各桁に16の累乗をかけて、それらを足し合わせます。

16進数の文字を数値に変換

16進数では、A〜Fのアルファベットが使われることを忘れずに。

A = 10   B = 11   C = 12   D = 13   E = 14   F = 15

変換の手順

  1. 16の累乗を実際の数値に置き換え
  2. 各項を計算
  3. 合計して10進数を得る

例:16進数のABを10進数に変換

16進数: AB

まず文字を数値に変換
A = 10, B = 11

各桁に16の累乗をかけて計算
10×16¹ + 11×16⁰
= 10×16 + 11×1
= 160 + 11
= 171

例:16進数のFF00を10進数に変換

16進数: FF00

まず文字を数値に変換
F = 15, F = 15, 0 = 0, 0 = 0

各桁に16の累乗をかけて計算
15×16³ + 15×16² + 0×16¹ + 0×16⁰
= 15×4096 + 15×256 + 0×16 + 0×1    # 16の累乗を実際の数値に置き換え
= 61440 + 3840 + 0 + 0             # 各項を計算
= 65280                            # 合計して10進数を得る

よく見る16進数の変換例

プログラミングでよく使われる16進数を10進数に変換してみましょう。

色の指定でよく使われる例

16進数: FF (赤色の最大値)
F×16¹ + F×16⁰ = 15×16 + 15×1 = 240 + 15 = 255

16進数: 80 (半分の明るさ)
8×16¹ + 0×16⁰ = 8×16 + 0×1 = 128 + 0 = 128

計算を確認する方法

例:171を16進数に逆変換して確認

171 ÷ 16 = 10 余り 11   # 余り11 = B
10 ÷ 16  = 0  余り 10   # 余り10 = A

余りを下から読む: AB ✓

計算のコツ

  • 8進数変換:8の累乗(1, 8, 64, 512...)を覚える
  • 16進数変換:16の累乗(1, 16, 256, 4096...)とA〜F=10〜15の対応を覚える
  • 確認方法:必ず逆変換で元の数値と一致するか確認する

慣れるまでは、一桁ずつ丁寧に計算することが重要です。

実践的な計算例とコツ

数値の変換例

例1:IPアドレスの計算(192.168.1.1)

192 = 11000000 = 300 = C0
168 = 10101000 = 250 = A8
1   = 00000001 = 001 = 01
1   = 00000001 = 001 = 01

例2:ファイル権限の設定(chmod 755)

7 = 111 = 7 (読み取り、書き込み、実行)
5 = 101 = 5 (読み取り、実行)
5 = 101 = 5 (読み取り、実行)

例3:色の指定(#FF6600)

FF = 11111111 = 255 (赤の成分)
66 = 01100110 = 102 (緑の成分)
00 = 00000000 = 0   (青の成分)

計算を速くするコツ

コツ1:基準値を覚える

よく使う数値の2進数表現
8   = 1000
16  = 10000
32  = 100000
64  = 1000000
128 = 10000000
256 = 100000000

コツ2:分解して計算

大きな数値は、小さな数値に分解して計算します。

例:100を2進数に変換

100 = 64 + 32 + 4
    = 2⁶ + 2⁵ + 2²

2⁶ 2⁵ 2⁴ 2³ 2² 2¹ 2⁰
64 32 16  8  4  2  1
1  1  0  0  1  0  0  → 1100100

コツ3:検算を活用

変換結果が正しいか、逆変換で確認しましょう。

1100100 = 1×64 + 1×32 + 0×16 + 0×8 + 1×4 + 0×2 + 0×1  
        = 64 + 32 + 4  
        = 100 ✓

よくある間違いと注意点

間違い1:進数の表記を混同する

× 誤:10進数の10を2進数で「10」と書く
○ 正:10進数の10は2進数で「1010」

× 誤:2進数の10を10進数の10と読む
○ 正:2進数の10は10進数の2

間違い2:桁の重みを間違える

× 誤:右から1桁目を2¹とする
○ 正:右から1桁目は2⁰(= 1)

正しい桁の重み
位置: 4桁目 3桁目 2桁目 1桁目
重み: 2³    2²    2¹    2⁰
値:   8     4     2     1

間違い3:16進数の文字を誤解する

× 誤:16進数のAを10進数の「11」と誤解
○ 正:16進数のAは10進数の「10」

16進数の対応
A = 10, B = 11, C = 12, D = 13, E = 14, F = 15

注意点:計算ミスを防ぐ方法

  1. 必ず検算する: 変換結果を逆変換して確認
  2. 表記を明確にする:進数を明示する
  3. 段階的に計算する:大きな数は分解して計算

まとめ

2進数は、コンピューターサイエンスの基礎であり、プログラミングを学ぶ上で欠かせない重要な概念です。
特に重要なポイントは以下の通りです。

基礎知識

  • n進数の位取り記数法の理解
  • 2の累乗(1, 2, 4, 8, 16, 32, 64, 128, 256...)の暗記
  • ビットとバイトの関係(1バイト = 8ビット)

変換テクニック

  • 割り算を使った確実な変換方法
  • 2の累乗を使った高速変換
  • 2進数経由での8進数・16進数変換

初学者の頃は複雑に感じられるかもしれませんが、段階的に学習し、実際に手を動かして計算することで、必ず理解できるようになります。特に、2の累乗と基本的な変換パターンを覚えることで、多くの場面で役立つ知識となるでしょう。

もし記事の内容に間違いがあれば、コメントでご指摘いただけますと幸いです。また、より効率的な覚え方や、実務での活用事例などをご存知の方がいらっしゃいましたら、ぜひ共有していただければと存じます。特に、2進数の概念をより直感的に理解するためのアプローチ・進数変換に関する独自の工夫や、現場で役立つ豆知識など、皆様の経験に基づく知見をお聞かせいただければ幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?