b 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 | AOYAMA Koji's プログラミングブログ
AOYAMA Koji's プログラミングブログ - プログラミングを楽しく体験

【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】プログラミング初心者向け・入門編・基礎編初中級者向けプログラミング解説プログラマー向け実装解説

2026/08/03
【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】

 40年以上のゲームプログラミング経験をマンガで可視化。 今回はデジタルデータの基本単位「バイト」。 8ビットをまとめたものです。 関連事項として16進数も解説します。
【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】

プログラミングブログ記事一覧


[PR]

【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~


【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・ビット4人のカウント10の写真 (社長)「10回はビット君4人で数えましたが」 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 社長室 社長「20回数えるのは何人ですか?」 クリスタル「5人です」 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 社長席 社長「30回だと6人?」悩み中 (クリスタル)「5人のままで31回まで可能です」 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 社長席 社長「…」果てた 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 クリスタル席 クリスタル「えーと」「ビットの人数を細かく気にしないように」ひらめいた 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 社長室 クリスタル「8人をひとまとめにした**バイト班**を作りますね」 社長「お願いします」涙目 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 バイト ~デジタルデータの基本単位:8ビット~ 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・バイト登場 (クリスタル)「メカ・バイト!」「**ビット8人**揃えて班長をお願い」 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・バイト 呼びかけ 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・ビット 走って来る 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・ビット8人登場 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 クリスタル「じゃあ**8ビット二進数**の表現を始めるよ」「まずは0をお願い」 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・バイト「0」思案顔 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・バイト グー突き出し 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・ビット 00000000 赤枠 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 クリスタル「1 と 2 もお願い」 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・バイト (思考)「1」 右手サムズアップ 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・ビット 00000001 赤枠 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・バイト (思考)「2」 右手人差し指アップ 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・ビット 00000010 赤枠 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 クリスタル「全パターン検証をお願い」 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・バイト (思考)「3」 右手親指人差し指アップ 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・ビット 00000011 赤枠 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 スキップコマ 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・バイト (思考)「253」 左手親指人差し指アップ ハーフサイズ 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・ビット 11111101 赤枠 ハーフサイズ 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・バイト (思考)「254」 左手人差し指アップ ハーフサイズ 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・ビット 11111110 赤枠 ハーフサイズ 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 クリスタル「次ラスト!」「255」 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・バイト「255」左手サムズアップ 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・バイト指示出し 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 メカ・ビット 11111111 集中線 【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 クリスタル「全256通り」「バイト班の検証完了です!」 社長「にひゃく!ごじゅう!ろくゥゥゥ!」(目をまわしながら絶叫)
次のエピソードへ
【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 整数

[PR]

「バイト」とは:デジタルデータの基本単位:8ビット


 「バイト」の本質「デジタルデータの基本単位」です。
 具体的には8ビット
 これが現代のコンピューターの、最も基本的なデータの単位です。 1バイトで256通りを表現できます。

ゲームプログラミングにおける「バイト」


 ゲームプログラミングにおいてバイトは、息をするように使える必要がある、デジタルデータの基本単位です。
 プロのゲームプログラミングにおいて、データ量を意識する状況は多いです。 その時に、その量を表現する単位がバイトです。
 用語を使うだけなら1バイトが8ビットであることを意識する必要はありませんが、 ぜひ把握して、より高みを目指しましょう。

1バイトで表現できる範囲:256通り


 1バイトで表現できるのは 256通りです。

ビットを組み合わせるとパターン数が倍々に増える


2ビット
3ビット
00
000
01
001
10
010
11
011
100
101
110
111
 ビットは、エピソード「ビット」で解説した通り、0 か 1 です。 つまり1ビットで2通り表せます。
 ビットを2つ使って 2ビット になると、00,01,10,11 の 4通り、 3ビットだと 000,001,010,011,100,101,110,111 の 8通り表せます。
 1ビット増える毎に、表現できるパターン数が 2倍になります。 式で表すと、\(n\)ビットのパターン数が\(2^{n}\) 通りです。

1バイト=8ビット:256通り


8ビット(1バイト)
10進数
00000000
0
00000001
1
00000010
2
00000011
3
00000100
4
00001000
8
00001010
10
00010000
16
00100000
32
01000000
64
01100100
100
10000000
128
11001000
200
11111111
255
 前述の計算式から、1バイトは8ビットですので、 \(2^{8}\) すなわち256通りを表せます。
 表に一部を例示します。2進数の 00000000 が 10進数の 011111111255
 改めてパターン数を確認すると、 0 から 255 で 256通りになります。

「16進数」とは:4ビット1桁の数


 ゲームプログラミングでよく使う数値に16進数があります。
 主要なプログラミング言語では数字の前に 0x を付けて、16進数であることを表します。
 16カウントで位が上がる数のため、1桁に16パターン必要ですがそちらは、0 から 9 および A から F で表します。
 なお筆者は、2桁の加算が暗算できるようになるくらい16進数を使ってきました。 特に特訓したわけではなく、ゲームプログラミングをしていただけで自然にです。 近年はそこまで使われないと思いますが、使いこなせると実務的に便利な場面は今でも多いです。

16進数-4ビット対応表


2進数
16進数
10進数
0000
0x0
0
0001
0x1
1
0010
0x2
2
0011
0x3
3
0100
0x4
4
0101
0x5
5
0110
0x6
6
0111
0x7
7
1000
0x8
8
1001
0x9
9
1010
0xA
10
1011
0xB
11
1100
0xC
12
1101
0xD
13
1110
0xE
14
1111
0xF
15
 この表で示す通り、16進数は4ビット1桁でぴったり表現できる数値です。
 なお、AからFは小文字でも問題ありません。

1バイトは16進数2桁で表現


 8ビットは4ビット2つですので、1バイトは16進数2桁で表現できます。
 代表的な数値は、0x00 が 10進数の 00x641000xFF255 です。

なぜ16進数なのか:人間にもコンピューターにも扱いやすい


 なぜ16進数が使われるのでしょうか。
 まず、これまでの説明の通り、4ビット1桁、1バイト2桁のため、ビットを最小単位とするデジタルデータを扱うコンピューターと相性の良い形式と言えます。
 さらに、2進数に比べて、人間が読みやすい形式です。 例えば前述の(2進数)01100100 より、(16進数)0x64 の方が読みやすいと思う方が多いでしょう。
 つまり、16進数はコンピューターにも人間にも扱いやすい数値と言えます。

バイトにおける単位の接頭辞


 コンピューターの世界では、データ量がバイトで表されます。
 扱うデータ量が爆発的に増えているため、そのままですと桁数が増えすぎてしまいます。 そのため接頭辞を用いて、1000倍単位で扱うことが一般的です。

代表的な単位の接頭辞


接頭辞
読み
K
キロ
1,000倍
M
メガ
100万倍
G
ギガ
10億倍
T
テラ
1兆倍
P
ペタ
1,000兆倍
E
エクサ
100京倍
 単位はそれぞれ、1,000倍(1,024倍)ずつ上がっていきます。
 例えば、バイトはB で表現し、1KB は 1,000バイト(または1,024バイト)、1MB は 100万バイト(または1024*1024バイト)を表します。

1,000倍 と 1,024倍の罠


 前述の通り、バイト数の接頭辞は、1つ上がると 1,000倍 または 1,024倍 上がります。
 1,024 倍は、10ビットで \(2^{10}=1024\)通りの表現ができ、現代のコンピューターにとって区切りが良い数値です。 1,000にも近いため、一般的にも使われている接頭辞がほぼそのまま 1,024倍で用いられています。
 紛らわしいため、1,024倍の方は i を 接頭辞の後ろにつけて KiBMiB などと表現する「2進接頭辞」が近年定められました。 しかしながら本エピソード執筆時点では、KBで 1,000倍のケースも 1,024倍のケースもあります。

バイトではなくビットが使われるケース


 コンピューターが扱う数値は、本エピソードで解説している通り基本的にはバイトです。
 ただし、執筆時点でビットが通例として用いられる場合もありますので、その一部を例示します。

データ転送速度・通信速度:bps

 データ転送速度や通信速度は、bps(bits per second / 1秒あたりのビット数)で表現します。
 動画における1秒間のデータ量を表すビットレートも bps で表現されます。
 なお、データ通信量は、「使用量最大 20GB」など、バイトを用いることが多いです。

CPUの種類:32ビット/64ビット

 パソコンに搭載される CPU の説明で、32ビットや64ビットと表現されるものがあります。
 これらは、その CPU が一度に扱えるデータのビット数を表しています。
 なお、筆者が最初に触った CPU は 8ビットでした。 今でも一部の電子機器に 8ビットCPU は使用されています。

暗号鍵長:2048ビット等

 暗号の鍵の長さは、2048ビットなど、ビットで表現されます。
 暗号を含むセキュリティーについては、後日のエピソードで詳細に解説予定です。

ゲームプログラミングに限らず16進数が用いられる例


 ゲームプログラミング以外でも、16進数を目にする機会はあります。 主にコンピューター関連ですが、いくつか例示します。

カラーコード

 HTMLやグラフィックツールで、数値で色指定するときに、「#XXXXXX」の形式を使用することがあります。 これがカラーコードです。
 内容は、左からR(赤)、G(緑)、B(青)の順に、それぞれ1バイト、合計3バイトを、16進数6桁で表現します。 例えば #000000 は黒、#FFFFFF は白、#0000FF は青、などです。

MACアドレス/IPv6アドレス

 ネットワークに用いられるMACアドレスおよび、IPv6のIPアドレスは、16進数で表現されます。
 家庭用ルーターの設定等で、目にする機会もあるかと思います。

ハッシュ値

 コンピューターの世界には「ハッシュ」というデータ変換があります。
 これを16進数で表現したものが、見えるところに使われる例として例えば、URLに用いられます。 具体例として、当ブログの自動生成☆詰将棋シリーズの詰将棋ソルバーで、盤面共有用の画像のURLがこの形式です。

【コラム】レトロゲームの255カンスト


 レトロゲームで、パラメーターの最大値が 255 、つまり255カンストのケースは少なくありません。 理由は、本エピソードで解説した通り、1バイトの上限です。
 なお、プログラム上は、2進数の 11111111(8桁) に 1 を足すと 00000000(8桁) になります。 2進数の計算上は 100000000(9桁) になりますが、8ビットに収まらない桁溢れの部分が捨てられるためです。
 当時この 2551 を加えて 0 になってしまう問題は、検証時に見つかるよくある不具合です。 きちんと条件判定して、それ以上上がらないように対応する必要がありました。
 ただし、発売されたゲームでも 255 からレベルアップしたら 0 になった、という話を聞いたことがありますので、怖いところです。
 話してくれた方は怒り心頭で、そのゲームソフトのカセットを燃やしたと言っていました。 開発陣の想定を遥かに超えて長くプレイするくらいハマっていたということでしょうからお気持ちお察しします…。

【コラム】「100メガショック」はビットだった


 1990年台に発売された「ネオジオ」という家庭用ゲーム機の一部作品で「100メガショック」というキャッチコピーが使われました。
 これはゲームのROM容量のことで、当時としてはとてつもなく大容量でした。
 ただしこの100メガ、単位はビットです。 バイトにすると 12.5MB ですね。 今見ると小さいですね。。。当時は大容量だと筆者も驚愕しましたが
 今の ROM 容量はバイトで表現することが多いですが、当時は大きく見せるため、特に100メガはインパクトありますので、バイトに対して数字が8倍になるビット使っていたのだと思います。

【コラム】ギガ


 昨今の慣例で、通信量のことをギガと呼ぶケースが増えています。
 前述した通り、ギガは10億倍を表す接頭辞です。 通信量以外にメモリー容量等にもギガバイトを使うケースがありますし、通信周波数帯もギガヘルツが主流です。
 つまり、本来と違う意味で「ギガ」が使用されています。
 個人的には、これは本当に嫌ですし、同じ気持ちの人もいるのではと思いますが、まあ、気にしすぎてしまう職業病なのでしょうね。
[PR]

マンガで感じる!本当の基礎から学ぶゲームプログラミングとは


 「マンガで感じる!本当の基礎から学ぶゲームプログラミング」シリーズでは、 主に、ゲーム開発を題材として、プログラミング時に筆者が脳内でイメージするコンピューター内部動作や本質を、マンガにてお伝えします。

プログラミングの本質をマンガで理解


 AI時代のプログラミングは、本質理解が重要です。 本質を理解していれば、あとはAIに任せて、自身を持って完成したプログラムに責任が持てるでしょう。
 そのため本シリーズでは、コーディングの実例や詳細よりも、「本質をイメージとして感じられること」を最優先としています。 まずマンガで、情報をできる限り絞り、プログラミングの仕組みやコンピューターの内部動作を、物理的に可視化してお届けします。
 そして文章の解説で徹底的に深堀りします。

登場人物紹介

【マンガで感じる】バイト ~デジタルデータの基本単位:8ビット~ 【本当の基礎から学ぶゲームプログラミング】 登場人物 社長 クリスタル メカたち  マンガで感じる!本当の基礎から学ぶゲームプログラミングシリーズには、主に社長、クリスタル、およびメカたちが登場します。 ※実在の人物とは関係ありません

社長

 本シリーズの偉い人です。
 マンガでは、指示すなわち「要件定義」を行います。

クリスタル

 社長の指示を、メカを活用して解決します。
 名前は、コンピューター内部で指揮者の役割を果たす「水晶発振器」に由来します。

メカたち

 用途に応じて多数存在し、果たす役割がそれぞれ与えられています。
 クリスタルの指示に従い、ある時はプログラム変数関数のように、ある時はデジタル回路の素子や部品のように振る舞います。

「マンガで感じる!本当の基礎から学ぶゲームプログラミング」にかける想い


 筆者が本シリーズにかける想いや、 より詳しいコンセプトは「マンガで感じる!本当の基礎から学ぶゲームプログラミング」にて語っています。 そちらもぜひご覧ください。

本エピソードから読み始めた方へ


 もしあなたがプログラム初心者で、「マンガで感じる!本当の基礎から学ぶゲームプログラミング」シリーズを本エピソードから読み始めた場合は、 ぜひ最初のエピソード「プログラム」から読むことをご検討ください。

AIを専属の家庭教師にしてバイトを学ぼう


 本記事では、デジタルデータの基本単位「バイト」について解説しました。 具体的には 8 ビットで、256通りを表現できます。
 マンガを読んで興味が湧いた、解説のこのキーワードが気になった、などあれば、AIを専属の家庭教師に見立てて対話してみましょう。 各人の理解度に応じた質疑応答ができて、理解が深まりますので強くオススメします。
 皆さまのバイトおよびプログラミングの本質理解に、少しでもお役に立てれば幸いです。

補足

  • 本記事に記載のプログラムソースコードは、悪意のない範囲で自由に使用・改変していただいて問題ありません。ただし、ご自身の判断と責任でお願いします。
  • 記事内容の検討および検証・添削に生成AIの Anthropic Claude と Google Gemini を利用しております。
  • 記事内の画像の作成に生成AIの Google Gemini を利用しております。
  • 数式表現にMathJaxを使用しております。
  • ※各社の登録商標または商標について「®」「™」等の表記はしておりません。


カテゴリー:マンガで感じる!本当の基礎から学ぶゲームプログラミング,【プロ指向者向け】ハードウェア基礎編
[PR]