初級では「0と1がすべての正体」であることを見ました。中級では、0と1をどう束ね、どんなルールで数・文字・データ量に変換するかを正確に見ます。データの種類やメディア・圧縮そのものは データの正体 が担当します。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
なぜ0と1なのか
コンピュータが2進数を使うのは、電気回路が「流れている/いない」の2状態を最も確実に区別できるからでした。この0か1かの1桁が ビット(bit) で、最小単位です。
ビットが8個集まると 1バイト(byte)。1バイトで2の8乗=256通りを表せます。ここで問題になるのが「2進数は桁が長くて人には読みにくい」こと。たとえば 11010110 は8桁もあります。
そこで登場するのが 16進数 です。4ビット=16進数1桁にちょうど対応するので、1バイトは16進数2桁でスッキリ書けます。
- 2進
1101→ 16進D(10進では13) - 2進
0110→ 16進6 - よって
11010110→ 16進D6
色コード #FF0000(赤)やメモリのアドレス表示に16進が使われるのは、この「4ビット=1桁」の相性の良さが理由です。
この部分をもっと深く(上級)
「2値が確実だから」の裏には、ノイズマージンという考え方があります。信号は必ず揺れますが、判定のしきい値から遠い2点(低い=0・高い=1)だけを使えば、多少揺れても誤読しません。10段階の電圧なら隣との差が狭く、同じノイズで誤りが増えます。確実さと引き換えに1本あたりの情報を1ビットに絞る——これが2進の設計思想です。
1ビットは「不確かさを半分にする」情報量です。だからnビットで2のn乗通りを区別でき、束ねるほど表現力が指数的に増えます。
アニメーション『ビット=スイッチのオン/オフ』を開く
やさしく言うと(初級)
コンピュータの中では、文字も写真も音楽も動画も、すべて0と1の並びで表されています。なぜわざわざ2種類だけなのでしょうか。
答えは「機械にとって一番間違えにくいから」です。コンピュータの中身は電気回路で、電気には「流れている/流れていない」というはっきりした2つの状態があります。もし10進数を使おうとすると電圧を10段階に見分ける必要があり、ノイズですぐ誤読します。オンかオフかの2択なら、まず間違えません。

この0か1かの1桁を ビット(bit) と呼びます。コンピュータの世界の最小単位です。
ビットを束ねると何でも表せる
同じ0と1の並びでも、読み方のルールを変えると、数にも文字にも色にもなります。ルールごとに見ていきます。
数(整数)。8ビットで0〜255を表せますが、マイナスも扱いたい。そこで先頭ビットを符号に使い、負の数は 2の補数 という方式で表します。ざっくり言えば「桁を全部反転して1を足す」とマイナスになる仕組みで、これなら引き算を足し算の回路で処理できます。8ビットの符号つき整数なら、表せる範囲は -128〜127 になります。
文字。ここは2段階に分かれます。
- 文字集合(例:Unicode) — 「あ」は U+3042、「A」は U+0041、と文字に番号を割り当てる台帳
- 符号化方式(例:UTF-8) — その番号を実際のバイト列に変換するルール
アニメーション『ビット=スイッチのオン/オフ』を開く
UTF-8は、英数字は1バイト、日本語などは3バイト前後、と文字によってバイト数を変える可変長方式です。だから英語中心のデータは小さく、世界中の文字も表せます。「文字集合=どの文字に何番」「符号化方式=その番号をどうバイトにするか」と役割が分かれている点が要です。
色や音も同じで、画素の色を赤・緑・青の数値に、音の波の高さを数値の列にする。変換ルールが違うだけで、行き着く先はぜんぶ0と1です。
この部分をもっと深く(上級)
同じビット列でも、解釈の規則を変えると別の数になります。
2の補数(負の整数)。負数は「全ビット反転して1を足す」で作ります。こうすると引き算を足し算の回路で処理でき、符号ごとの特別扱いが要りません。8ビットなら -128〜127、桁あふれ(※1 オーバーフロー)は最上位からあふれたぶんを捨てる「ラップアラウンド」が既定です。127に1を足すと-128に回り込むのはこのためです。
浮動小数点(IEEE 754)。実数は符号・指数・仮数(※2 仮数)の3部で近似します。単精度なら符号1ビット・指数8ビット・仮数23ビット。値は「符号 × 1.仮数 × 2の指数乗」の形で、先頭の1は省く(ケチ表現)ぶん1ビット得します。ここで宿命なのが丸め誤差です。0.1は2進では循環小数(0.0001100110011…)になり、有限桁では正確に表せません。だから0.1+0.2がぴたり0.3にならないことがあります。
登場人物メモ:
- ※1 オーバーフロー — 表せる桁を超えてあふれること。ラップ(回り込み)と飽和(上限で止める)の扱いがある
- ※2 仮数 — 有効数字にあたる部分。ここの桁数が「どこまで細かく表せるか」を決める
金額のように誤差が許されない計算は、浮動小数点を避けて整数(最小単位=円や銭)や10進型で扱うのが定石です。
アニメーション『0と1の解釈(数・文字・色)』を開く
やさしく言うと(初級)
1ビットでは「はい/いいえ」しか表せませんが、束ねると表現力が爆発します。
- 2ビット → 4通り(00, 01, 10, 11)
- 3ビット → 8通り
- 8ビット → 256通り … これを 1バイト(byte) と呼びます
たとえば半角の「A」には65番、「B」には66番…と番号を割り当てるルール(文字コード)を決めておけば、文字は数値になり、数値は2進数になり、電気信号として扱えます。
アニメーション『ビット=スイッチのオン/オフ』を開く
写真も同じです。画像を細かいマス目(画素)に分け、各マスの色を「赤・緑・青の強さ」の数値で記録する。音楽なら、音の波の高さを1秒間に何万回も測って数値の列にする。変換ルールこそ違え、行き着く先はぜんぶ0と1。だから1本のケーブルで文字も動画も送れるのです。
単位の感覚をつかむ
データ量の単位は、10進の1,000区切りと、2進の1,024区切りの2種類があります。
- 厳密には 1 KiB(キビバイト)= 2の10乗 = 1,024 バイト、1 MiB = 1,024 KiB、1 GiB = 1,024 MiB
- 一方 1 KB = 1,000 バイト とする10進表記も広く使われる
「1,000か1,024か」で微妙にズレるのはこのためです。ストレージの容量表示(10進)とOSの表示(2進)が食い違って見えるのも、この単位の違いが原因です。
- 1 KB ≒ 短いメール1通ぶん
- 1 MB ≒ 写真1枚、曲1分ぶん
- 1 GB ≒ 映画1本(標準画質)
- 1 TB ≒ スマホ写真なら数十万枚
やさしく言うと(初級)
- 1 KB(キロバイト)≒ 1,000 バイト … 短いメール1通ぶん
- 1 MB(メガバイト)≒ 1,000 KB … 写真1枚、曲1分ぶん
- 1 GB(ギガバイト)≒ 1,000 MB … 映画1本(標準画質)
- 1 TB(テラバイト)≒ 1,000 GB … スマホ写真なら数十万枚
「ギガが減る」の「ギガ」はこの単位のことで、正確には通信で送ったデータ量を指しています。0と1を何個送ったか、という話だったわけです。
圧縮 — 同じ中身をより少ないビットで
データ量を減らす技術が 圧縮 です。大きく2種類あります。
- 可逆圧縮(ロスレス) — 元に完全復元できる。ZIP、PNG、FLACなど。文書やプログラムのように1ビットも変えられないデータ向き
- 非可逆圧縮(ロッシー) — 人が気づきにくい情報を捨てて大幅に小さくする。JPEG、MP3、H.264(動画)など。写真・音・動画向き
非可逆は「元に戻せない」代わりに圧縮率が高い。用途に応じて、正確さを優先するか小ささを優先するかで使い分けます。同じ0と1でも、どう詰めるかで容量が変わるわけです。
関連する知識
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. 2進数4桁(4ビット)は16進数の何桁にちょうど対応する?
問2. 文字集合(Unicode)と符号化方式(UTF-8)の関係として正しいのは?
問3. 8ビットの符号つき整数(2の補数)で表せる範囲はどれ?
問4. UTF-8が「可変長」と呼ばれる理由として正しいのは?
問5. ストレージの容量表示と、OS上で見える容量が微妙に食い違うことがある主な理由は?
問6. 次のうち、元に完全復元できる可逆圧縮の例はどれ?
問7. 0か1のどちらかを表す、情報の最小単位を何と呼ぶ?
問8. 1バイトは何ビットか、半角数字で答えてください。