ビットの正体

前回の教材では、10進法が人類の指の本数という偶然に由来することから出発し、位取り記数法の仕組み、 2進法、そして「bit」という言葉の誕生までを辿った。では、ビットはただの「2進法の1桁」 にすぎないのだろうか。この章では、その1桁がどうやって「情報そのものの最小単位」へと化けていくのかを、 読む → 試す → 間違える → わかる の順に辿る。全4セクション・演習25問。回答はブラウザに保存されるので、途中でやめても続きから再開できる。

進捗 0 / 25 問(正解 0 問)

1. 1ビットで伝わること — 情報の最小単位

イエスかノーかだけを相手に伝えたいなら、文章も単語も文字も要らない。0か1かの1ビットで足りる——木に結んだリボンの有無、看板の開閉、懐中電灯のオン/オフも同じ原理で意味を運ぶ。「bit」はbinary digit(2進数字)の略語だが、コンピュータの時代に「情報の基本構成単位」という新しい意味を獲得した。ここでは2進法がなぜ最も単純な記数法なのかを確認し、情報の本質が「2つ以上の可能性のうちからの選択」であることを見ていく。

木の枝に結んだ黄色いリボンが、そこにあるかないかだけで「イエス」か「ノー」かを伝える——そんな題材の古い歌がある。 交通標識、開店/閉店の看板、窓辺の懐中電灯のオン/オフも、仕組みはまったく同じである。伝えたいことが 2つのうちどちらか一方だけなら、文章も単語も、1文字さえも要らない。必要なのは1ビット(0か1のどちらか)だけでよい。

2進法が「最も単純な記数法」だと言えるのも、この最小性と関係している。使う記号を2種類(0と1)からさらに 1種類に減らしてしまうと、区別できるものが何もなくなり、ほとんど何も表せなくなる。だから2進法は、 意味のある違いを運べる、これ以上は削れない記数法だといえる。

「binary digit(2進数字)」を短縮した造語であるbitという言葉は、コンピュータの時代に入って 新しい意味を獲得した。文字や単語、モールス符号、10進数字もそれぞれ情報を伝える手段だが、ビットを特徴づけているのは、 それらの中で「イエス/ノーの選択1回分」に相当する、それ以上細かく分けずに扱う最小の部品だという点にある。 あらゆる情報は、この部品を組み合わせることで組み立てられる。

この見方を裏返すと、本章が示す「情報」の本質が見えてくる。情報とは2つ以上の可能性のうちからの選択 を表すものである。試しに、辞書に載っているすべての単語に通し番号を振ったとしよう。すると、番号を1つ伝えるだけで 単語1つ分の情報が伝わることになる——単語というものが、結局は「可能性のうちの1つを選ぶこと」に還元できるからである。

ただし、すべての情報がビットに乗るわけではない。言葉にも絵にも音にも表せない、 「複数の可能性からの選択」に還元できないものは、ビットでコード化できない。 ビットが扱えるのは、あくまで数えられる可能性のあいだの選択だけである。

演習 1理解

「イエス」か「ノー」かの2択だけを相手に伝えたいとき、最低限必要なものは何か

演習 2理解

2進法が「最も単純な記数法」だと言えるのはなぜか

演習 3理解

「bit」という言葉が、2進数字(binary digit)という元の意味を超えてコンピュータ時代に持つようになった意味は何か

演習 4理解

文字・単語・モールス符号・10進数字も情報を伝える。その中で本書がビットを「情報の基本構成単位」と位置づけるのは、どんな意味においてか

演習 5理解

本章が示す「情報」の本質はどれか

演習 6理解

ビットでコード化できないのはどんな情報か

このセクション: 0 / 6 問正解

2. ランタンを数える — ビットが増えると可能性は倍になる

独立戦争前夜、教会の塔に掲げられたランタンの逸話を手がかりに、ビットが増えると表せる可能性がどう増えていくかを見ていく。1個のランタン(1ビット)では2つの可能性しか区別できず、3つ目の可能性を伝えるにはもう1ビットが必要になる。ビットへの意味の割当ては恣意的な取り決めにすぎず、コードを使う全員が同じ約束を共有していれば0と1のどちらを何に割り当ててもよい。あわせて、コードの一部をあえて未定義のままにしておくとエラー検出に使える、という考え方にも触れる。

独立戦争前夜、教会の塔にランタンを掲げて英軍の動きを知らせたという逸話がある(ロングフェローの詩で知られる、 ポール・リヴィアの一夜)。取り決めは「陸路なら1つ、海路なら2つ」というものだったが、実際に伝えたい可能性は 「まだ来ない」「陸路」「海路」の3つあった。1ビットで区別できる可能性は2つまでなので、 このままでは1ビット(ランタン1個)では足りない。

そこで、ランタン2個をそれぞれ「点灯=1/消灯=0」の1ビットとして扱うとどうなるか。組み合わせは 00・01・10・11の4通りになり、3つの可能性を余裕を持って表現できるようになる。 ビットが1個増えるだけで、表せる可能性の数は2倍に増える——これが本セクションの中心となる発見である。

ビットの分岐ツリー — 1個増えるたびに可能性は2倍開始点から枝分かれし、3ビット目で8通りのコードになる1ビット目: 0 / 12通り2ビット目: 00〜114通り3ビット目: 000〜1118通り開始点0100011011000001010011100101110111ビットを1個足すごとに、それまでの全パターンが「0の枝」と「1の枝」に複製されるだから可能性の数は 2 → 4 → 8 と倍々に増えていく

興味深いのは、実際の取り決めが「2個のうちどちらのランタンが点いたか」を区別せず、 1個でも点けば陸路と読むという単純化を選んでいたことだ。一見情報を捨てているようだが、 これは夜の闇や距離といった「ノイズ」の中でも見分けを誤らないための冗長性にほかならない。 雑音の多い状況で話し言葉が通じるのも、同じ原理による。

2人の評者がそれぞれ親指を上げ下げして意見を表明する場面を2ビットで記録するとしよう。「1=良い・0=悪い」 という割当ては、数学的に決まっているわけではない。恣意的な取り決めにすぎず、 逆に定めてもかまわない。必要なのは、コードを使う全員がその意味を共有していることだけである。 だから同じビット列でも、取り決め(文脈)が変われば意味はまったく変わる——ビットの意味は常に文脈に依存する。

7段階の評価を3ビット(8通り)で表すと、1つのコードが余って未定義のまま残る。この余りは無駄ではない。 未定義のコードが現れたら、それだけで「何かの誤りが起きた」とすぐにわかる——これがエラー検出の芽になる。 段階が8を超えれば、もう1ビット必要になる。

演習 7理解

独立戦争前夜、教会の塔のランタンで英軍の動きを知らせた逸話では、伝えるべき可能性は「まだ来ない」「陸路で来る」「海路で来る」の3つあった。ランタン1個(=1ビット)で伝えられるか

演習 8計算

ランタン2個をそれぞれ「点灯=1/消灯=0」のビットとして扱うと、組み合わせは何通り表せるか

演習 9理解

この逸話の取り決めでは「2個のうちどちらのランタンが点いたか」を区別せず、1個でも点けば陸路と読むことにしていた。この設計が優れているのはなぜか

演習 10理解

2人の評者がそれぞれ親指で「良い/悪い」を表明するのを2ビットで記録するとき、「1=良い・0=悪い」という割当てはどんな性質のものか

演習 11理解

同じビット列(例えば「01」)でも、伝わる意味が変わるのはどんなときか

演習 12理解

7段階の評価を3ビット(8通り)で表すと、1つのコードが余って未定義になる。この未定義コードには実はどんな使い道があるか

このセクション: 0 / 6 問正解

3. 何ビット必要か — 可能性の数を数える

nビットで表せる可能性の数は2ⁿ通り——binary-code-course(第1〜4章)では「nビットで何通り作れるか」というこの順方向を演習で確認した。本セクションはその逆方向、すなわち「N通りの可能性を区別したいとき、最低何ビット必要か」を扱う。2の累乗の表と照らし合わせて切り上げるだけで求まり、正確なlog2の値を暗算できなくても答えは出せる。フィルムの感度規格や評価の段階数といった具体例を通じて、この逆算の感覚を身につけるのが本講の中心学習目標。

前セクションで見た「ビットが1個増えると可能性は2倍になる」という規則を式にすると、次のようになる。 ビット数をnとすると、表せる可能性(コード)の数はつねに2ⁿ通りである。

ビット数 n → コードの数 2ⁿ 通り

同じ原理は10進法でも成り立つ。3桁の市外局番なら10³=1,000通り、4桁の暗証番号なら10⁴=10,000通り。 「桁を1つ増やすと可能性は基数倍になる」という規則そのものは、基数が10であっても2であっても変わらない。

ここからが本セクションの核心である。逆に「コードがいくつ必要か」という側から出発して、 必要なビット数を決めるにはどうすればよいか。答えは、底2の対数(log₂)を取り、 その値を切り上げることである。たとえばlog₂(128)=7、log₂(256)=8とちょうど割り切れることもあるが、 200個の可能性を区別したいなら、log₂(200)≈7.64を切り上げて8ビットが必要になる。 正確な小数の値を覚えなくても、「2の累乗の表と見比べて、何個要るか」がわかれば十分である。

必要ビット数の階段グラフ — Nから最小ビット数を読むN通りを区別するのに必要な最小ビット数は、2の累乗の境界でひとつずつ増える012345必要ビット数2481632可能性の数 N(通り)13通り→4ビット13境界(2・4・8・16・32)を1つ超えるたびに、必要なビット数が1つ増える読み取り例: N=13は「8より多く16以下」の範囲にあるため、必要なビット数は4

逆算の前提になる「ビット数 n → コードの数 2ⁿ 通り」という順方向の関係は、升目の数として目で見ると実感しやすい。 下のシミュレータでスライダーを動かしてビット数を1〜8の間で変えると、区別できるコードの数が升目の増減としてそのまま観察できる。 升目をタップすれば、そのマスに対応する2進表記も確かめられる。

さわって確認2ⁿの升目 — ビットを1つ増やすと組み合わせは2倍
ビット数 n = 3

3ビット → 2³ = 8通り

マスをタップすると、そのマスの2進表記がここに出ます

升目の1つひとつが、nビットで区別できるコード1個に対応しています。スライダーを右へ1つ動かすたびに、 升目の数はちょうど2倍——グリッドの縦か横のどちらかが2倍に伸びます。1ビットではたった2通りだった組み合わせが、 8ビットでは256通り。ビット数nを決めると、区別できる可能性の数2ⁿが決まるという関係を、 升目の増減として目で確かめてみてください。

たとえば、ある評価誌が13段階の評価を使っているとする。2³=8通りでは13段階に足りず、 2⁴=16通りでようやく足りる。つまり13段階すべてを区別してコード化するには最小で4ビット必要で、 16通り中13を使い、残り3通りは未使用のまま余る。この考え方——各可能性に同じ長さのコードを割り当てて区別する場合に、 「可能性の数を数えることが必要なビット数を決める」——が、本章を通じて繰り返し登場する中心的な考え方である。

演習 13計算

4ビットで表せる可能性(コード)の数は何通りか

演習 14理解

ビットを1個追加すると、表せる可能性の数はどうなるか

演習 15計算

同じ原理は10進法でも成り立つ。4桁の10進数(0000〜9999)で表せる番号は何通りか

演習 16計算

ある評価誌が13段階の評価を使っている。全段階を区別してコード化するのに必要な最小ビット数はいくつか

演習 17計算

13段階を4ビット(16通り)でコード化したとき、使われずに余るコードはいくつあるか

演習 18計算

写真フィルムの基準感度(ASA等級)は24種類ある。これをコード化するのに必要な最小ビット数はいくつか

演習 19計算

100種類の商品を区別する社内コードをビットで設計したい。必要な最小ビット数はいくつか

このセクション: 0 / 7 問正解

4. 身の回りのビット — フィルムとバーコードの中の0と1

ビットは抽象的な概念だが、身の回りの製品には物理的な形で刻み込まれている。35ミリフィルムのパトローネに印刷された銀と黒の模様(DXコード)は、導体と絶縁体という物性そのものがビットになっている例であり、商品パッケージのUPCバーコードは太さの違うバーとギャップの列で表現された95ビットの2進コードである。パリティやガードパターンといった仕組みが、印刷のばらつきや読み取りエラーからコードを守っている。締めくくりとして、ビットで情報を表現するときに最初にすべきことが「可能性の数を数えること」である、という本章全体のまとめを確認する。

ビットは抽象的な数の概念だが、身近な製品の中には、それが物理的な性質にそのまま乗せられている例がある。 35ミリフィルムのパトローネに印刷された、銀と黒のチェッカー模様(DXコード)はその一つだ。 銀=金属=導体(電流が流れる=1)、黒=塗料=絶縁体(電流が流れない=0)として、カメラは接点の電流の有無で このビット列を読み取る。フィルム感度(ASA)を表す5個のビットでは、2⁴=16通りでは24種類の基準感度に足りず、 2⁵=32通りで初めて足りるため、5ビットが割り当てられている——前セクションで見た「必要ビット数の切り上げ」がここにも現れている。

商品パッケージでおなじみのUPCバーコードも、太さの違うバーとギャップの模様に見えて、 その正体は95ビットの2進コードである。バーの部分は1の列、ギャップ(すきま)の部分は0の列として読まれる。

バーコードの左端・右端・中央に置かれた固定のガードパターン(101・01010・101)は、 スキャナに「1ビット分の幅」の基準を与える役割を持つ。これがあるおかげで、UPCの印刷サイズを商品ごとに 一定にしなくてもよい。左側のコードは奇数パリティ、右側のコードは偶数パリティ(ビット列に含まれる1の個数が 奇数か偶数か)に揃えられており、スキャナが左右どちらの向きから読み取ったかを判定できるため、逆向きスキャンでも読み間違えない。 さらに末尾にはモジュロ演算によるチェックキャラクタが置かれ、二重にエラーをチェックしている。

UPCが表しているのは、製造業者を示すコード・その会社の製品を示すコード・チェック用の数字であり、 商品の価格そのものは含まれていない。価格は店側のコンピュータが持っている情報であり、 だからこそ値札を貼り替えるだけで価格を変更できる。

実は、これまでの教材で扱ってきたモールス符号や点字も、ビットの列として読み直せる。モールス符号のドット・ダッシュを1、 その間の空白を0とすれば、点字は凸を1・平を0とする6ビットの模様として捉え直せる。この読み替えは、 第1講「コードで世界を伝える」で組み合わせ論として すでに確かめた内容なので、ここでは演習を出さず、振り返りとして触れるにとどめる。

本章を締めくくると、ビットは本質的にである。他の情報を表現するときに最初にすべきことは、 ただ「可能性の数を数える」ことだけであり、それが必要なビット数を決める。 そして「真」と「偽」も、1と0としてまったく同じように振る舞える——この気づきが、次講「論理とブール代数」への入り口になる。

演習 20理解

35ミリフィルムのパトローネに印刷された銀と黒のチェッカー模様(DXコード)を、カメラはどうやってビットとして読んでいるか

演習 21理解

商品パッケージのUPCバーコードの正体はどれか

演習 22理解

UPCの左端・右端・中央に置かれた固定のガードパターンの主な役割は何か

演習 23計算

ビットのグループが持つ1の個数が奇数なら奇数パリティ、偶数なら偶数パリティと呼ぶ。ビット列「0110111」のパリティはどちらか

演習 24理解

UPCバーコードに含まれていない情報はどれか

演習 25理解

本章の締めくくりとして、ビットで情報を表現するときに最初にすべきことは何か

このセクション: 0 / 6 問正解