【マンガで感じる】二進数(2進数) ~0と1だけで表す数~ 【本当の基礎から学ぶゲームプログラミング】


2026/07/20

40年以上のゲームプログラミング経験をマンガで可視化。 今回は0と1だけ、2パターンの組み合わせで表す数字「2進数」。 メカたちが電球のオン・オフで表現するのをマンガで見てみましょう。

プログラミングブログ記事一覧
[PR]
【マンガで感じる】二進数 ~0と1で表す数~
2進数の例
二進数(2進数)
十進数(10進数)
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
1000
8
1001
9
1010
10
1011
11
1100
12
1101
13
1110
14
1111
15
[PR]
「2進数」とは:0と1だけで表す数
「2進数」の本質は「0と1だけで表す数」です。
マンガでは、メカ・ビットたちが「点灯
=1」「消灯=0」で数を表現していました。
これはコンピューターが電気の「ON=1」「OFF=0」によりデジタルで動いていることを表しています。そして、その「0」と「1」を桁(重み)をつけて組み合わせることで、より大きな数を表すことができます。
ビットごとの役割(重み)
メカ
重み
+1の動作
ビット0(1番右)
1
毎回切替
ビット1(右から2番目)
2
2回に1回切替
ビット2(右から3番目)
4
4回に1回切替
ビット3(1番左)
8
8回に1回切替
点灯している(1になっている)メカの「重み」をすべて足し算すると、そのときの数字になります。 この4ビット(4桁の2進数)で、0から15まで表すことができます。
「10回」を検証してみよう
メカ
重み
状態
値
ビット3
8
明(1)
8
ビット2
4
暗(0)
0
ビット1
2
明(1)
2
ビット0
1
暗(0)
0
この値の合計は 8 + 2 = 10 です。
このように、0と1の組み合わせだけで、正しく(10進数の)「10」という数字が表現できていることがわかります。
ゲームプログラミングにおける「2進数」
コンピューターは
0 と 1 のデジタルで動いており、2進数は、コンピューターの内部で持っているデータ形式です。
つまりゲームプログラミングにおいても重要な根幹部分ですが、プログラムは 10進数が使えますので、担当箇所によっては知らなくても大きな問題はありません。ただし、特に最適化とハードウェア操作で使用する場合があるので、担当箇所によってはとても重要です。 プログラムもデータもすべて内部的にはビットの組み合わせつまり2進数で表されていますので、より深い処理をする場合には、高頻度で2進数が必要になります。
最適化で2進数を扱う
効果的に2進数を使用すれば、容量効率と速度効率を同時に高める最適化ができる場合があります。
一般的に最適化は、容量効率と速度効率のトレードオフになります。 例えはメモリーを使用して速度効率を上げる、処理速度を落として容量効率を上げるなど。
しかし2進数の効果的に使えば、その両方を同時に解決できる可能性があります。 当ブログでも、例えば自動生成☆詰将棋で、2進数を使用した、速度効率と容量効率を同時に高める最適化を行っています。 解説記事「バイナリデータで実現する高速化」もご参照ください。
一方、2進数を使用して最適化をすると、「データやプログラムが読みづらくなる」「変更に弱くなる」というデメリットが生じます。 通常はこのデメリットの方が大きく、2進数を使用すべき機会は少ないです。 しかし、最適化が必要な状況になれば、積極的に使用していきましょう。
ハードウェア操作で2進数を意識
ハードウェアをプログラムから操作する場合、「このアドレスの第○ビットを1にするとこういう設定になる」ということがあります。
もし、皆さまの身近にディップスイッチで設定可能な機械があれば、イメージできると思います。 ディップスイッチでは、ON/OFF設定できるスイッチが4個や8個並んでいます。 これはすなわち、2進数を用いて、設定変更を行っていると言えます。
現代のゲーム機でハードウェアを直接操作する機会は少ないです。 ただしプラットフォーマーが用意したライブラリに値を渡すときに、2進数で指定することがあります。 内部的にはその先で、ハードウェアに値を渡している場合があります。
[PR]
マンガで感じる!本当の基礎から学ぶゲームプログラミングとは
「マンガで感じる!本当の基礎から学ぶゲームプログラミング」シリーズでは、 主に、ゲーム開発を題材として、プログラミング時に筆者が脳内でイメージするコンピューター内部動作や本質を、マンガにてお伝えします。
プログラミングの本質をマンガで理解
AI時代のプログラミングは、本質理解が重要です。 本質を理解していれば、あとはAIに任せて、自身を持って完成したプログラムに責任が持てるでしょう。
そのため本シリーズでは、コーディングの実例や詳細よりも、「本質をイメージとして感じられること」を最優先としています。 まずマンガで、情報をできる限り絞り、プログラミングの仕組みやコンピューターの内部動作を、物理的に可視化してお届けします。
そして文章の解説で徹底的に深堀りします。
登場人物紹介
マンガで感じる!本当の基礎から学ぶゲームプログラミングシリーズには、主に社長、クリスタル、およびメカたちが登場します。
※実在の人物とは関係ありません社長
本シリーズの偉い人です。マンガでは、指示すなわち「要件定義」を行います。
クリスタル
社長の指示を、メカを活用して解決します。名前は、コンピューター内部で指揮者の役割を果たす「水晶発振器」に由来します。
メカたち
用途に応じて多数存在し、果たす役割がそれぞれ与えられています。クリスタルの指示に従い、ある時はプログラムの変数や関数のように、ある時はデジタル回路の素子や部品のように振る舞います。
「マンガで感じる!本当の基礎から学ぶゲームプログラミング」にかける想い
筆者が本シリーズにかける想いや、 より詳しいコンセプトは「マンガで感じる!本当の基礎から学ぶゲームプログラミング」にて語っています。 そちらもぜひご覧ください。
AIを専属の家庭教師にして2進数を学ぼう
本記事では、コンピューター内部で扱っている数値「2進数」を解説しました。
マンガを読んで興味が湧いた、解説のこのキーワードが気になった、などあれば、AIを専属の家庭教師に見立てて対話してみましょう。 各人の理解度に応じた質疑応答ができて、理解が深まりますので強くオススメします。
プログラミングの本質理解に少しでもお役に立てれば幸いです。
補足
- 記事内容の検討および検証・添削に生成AIの Anthropic Claude と Google Gemini を利用しております。
- 記事内の画像の作成に生成AIの Google Gemini を利用しております。
- 画像内のラスタライズ文字フォントにOpen Font LicenseのZen Antiqueを使用しております。
- 画像内のラスタライズ文字フォントにOpen Font LicenseのNoto Sans Japaneseを使用しております。
- 画像内のラスタライズ文字フォントにOpen Font LicenseのNoto Sans Monoを使用しております。
- ※各社の登録商標または商標について「®」「™」等の表記はしておりません。
カテゴリー:マンガで感じる!本当の基礎から学ぶゲームプログラミング,【プロ指向者向け】ハードウェア基礎編
[PR]
