10進法は絶対じゃない
前回の教材では、導線を減らす工夫(コモン線・接地)と、距離の壁を突破した発明「リレー」を追いかけ、 「電流で動くスイッチ」が論理的な判断や2進数の計算につながっていく、という伏線を残して終わった。 その前に、そもそもなぜ私たちは10進法で数を数えているのか、考えたことがあるだろうか。 今回はこの当たり前を疑うところから出発し、位取り記数法の仕組み、10進法以外の基数、 そして2進数と「bit」という言葉の誕生までを、 読む → 試す → 間違える → わかる の順に辿る。全4セクション・演習26問。回答はブラウザに保存されるので、途中でやめても続きから再開できる。
進捗 0 / 26 問(正解 0 問)
1. 数は文化の産物
「3」という記号そのものに数学的な必然性はない。人類の多くが10進法(base-ten)を採用したのは、両手の指が10本であるという身体的な偶然に由来する。ここでは位取りを持たないローマ数字の限界と、ゼロを携えたヒンズーアラビア記数法がなぜそれを乗り越えられたのかを見ていく。
数は、これまで見てきたどんなコードよりも抽象的なコードである。「3」という記号そのものには、数学的に特別な意味はない。 それを承知のうえで、人類の多くの文明は10進法(base-ten)を採用してきた。理由は単純で、 両手の指を合わせるとちょうど10本になるからである。
この由来は言葉のなかにも残っている。英語のdigitは「数字」と「指」の両方を意味する語であり、 fiveとfist(握りこぶし)も同じ語源をたどるとされる。10進法は数学的な必然ではなく、 人体の構造という恣意的な選択の産物だった、ということである。
人類が最初から今の書き方で数を書いていたわけではない。ローマ数字(I, V, X, L, C, D, M)は、 引っ掻き傷を数える記録を効率化した、足し算ベースの記数法である。IIIのように記号を並べて足し合わせ、 IVのようにVの手前に置いて「1少ない」ことを表す減算の工夫も加わった。足し算・引き算には便利で、 長年にわたり簿記の現場でも使われ続けた。しかし位取りという発想を持たないため、掛け算・割り算には向かない。 XIVとLIXを筆算で掛け合わせる場面を思い浮かべれば、その不便さが実感できるはずだ。
今日私たちが使う記数法(ヒンズーアラビア数字)はインドで生まれ、ペルシアの数学者 アルクワリズミ(その名前が「アルゴリズム」という言葉の語源になった)を経由してヨーロッパへ伝わった。 この記数法には、ローマ数字にはない3つの特徴がある。
- 位取り記数法 — 同じ数字でも、置かれた位置によって表す量が変わる
- 10を表す専用の記号がない — 10は「1」と「0」を並べて表現する
- ゼロを持つ — 空位を明示できるので、25・205・250を書き分けられる
3つのうち、とりわけ効いているのが「ゼロ」の存在である。ゼロという記号がなければ、 「2、5」と「2、0、5」を紙の上で区別する手段がない。次のセクションでは、この位取りの仕組みをもう少し丁寧に見ていく。
なぜ人類の多くの文明が10進法(base-ten)を採用したか
ローマ数字「XIV」が表す10進数の値は?
ローマ数字が最も苦手とする計算は何か
ヒンズーアラビア記数法が、それ以前の記数法(ローマ数字等)と最も本質的に異なる点は何か
数学者アルクワリズミの名前に由来する言葉は次のうちどれか
もし人類の指が両手で8本だったら、記数法の歴史はどう変わっていたと考えられるか
このセクション: 0 / 6 問正解
2. 位取り記数法の仕組み
10進法がなぜ強力なのか、その仕組みを分解して確かめる。ある数字が表す値は記号の形ではなく「どの位にあるか」で決まる——この位取りの原理と、ゼロが空位を明示する役割、小数点をまたいでも同じパターンが続くことを見ていく。
位取り記数法のもとでは、どんな数も「その位が何を表しているか」に分解できる。たとえば10進数の 3208は、次のように10の累乗の和として書き直せる。
3208 = 3×10³ + 2×10² + 0×10¹ + 8×10⁰
千の位・百の位・十の位・一の位、それぞれの数字に「その位の重み」を掛けて足し合わせているだけである。 下の図は、3208という数を4つの箱に分解した様子を示している。
この分解を支えているのがゼロである。「25」「205」「250」は同じ数字(2・5)を使っているのに、 ゼロが空いている位を埋めることで、まったく別の数として区別できる。ゼロがなければ、この3つを紙の上で書き分ける手段自体が存在しない。
この重みのパターンは小数点をまたいでも続く。小数点より右の位は、10の負の指数(10⁻¹、10⁻²…)に対応する。 42.6という数であれば、整数部分は10¹(十の位)と10⁰(一の位)、小数第1位は10⁻¹に対応し、次のように書ける。
42.6 = 4×10¹ + 2×10⁰ + 6×10⁻¹
位取り記数法の強みは、この仕組みがどんな長さの数にも同じパターンで通用する点にある。 1桁どうしの足し算・掛け算の表さえ覚えていれば、それをどの位にもそのまま当てはめるだけで、 何桁の数の計算も1桁の計算の積み重ねに分解できる。300+400=700が成り立つのも、 結局は3+4=7という1桁の計算が百の位にそのままスライドしているにすぎない。
10進数「3208」を位ごとの意味で分解すると、正しい式はどれか
10進数の「25」「205」「250」がすべて異なる数として区別できるのは何のおかげか
位取り記数法において、ある数字(例えば「1」)が表す値を決める最も重要な要素は何か
42.6という数を、10の累乗(正・負両方)で分解するとどうなるか
ヒンズーアラビア記数法には、10という数を表す「専用の特別な記号」があるか
300+400=700が成り立つ理由を、位取り記数法の観点から最も正しく説明しているものはどれか
このセクション: 0 / 6 問正解
3. 10進法以外の記数法
10進法は数ある記数法のひとつに過ぎない。人類の指の本数が違えば、8進法や2進法を採用していたかもしれない。ここでは8進数・2進数への変換を実際に手を動かして計算し、基数が変わっても位取りの原理そのものは変わらないことを確かめる。
10進法が「たまたま指が10本だったから」選ばれたのだとすれば、指の本数が違えば、まったく別の基数が選ばれていたはずだ。 もし人類が漫画のキャラクターのように両手で8本指だったなら、8進法(octal / base-eight)を 自然に採用していただろう。同じ発想で、2本のハサミを持つロブスターなら4進法(quaternary / base-four)を、 2枚の胸ビレしか持たないイルカなら2進法(binary / base-two)を選んでいたかもしれない——という思考実験である。
8進法には、10進法に10を表す専用の記号がないのと同じように、8を表す専用の記号がない。 0から7までの8個の数字を使い切ると、次の数は10進法の「10」と同じ見た目で「10」と書く。ただしこの「10」は 10進法の10ではなく、8進法での10(10進数でいう8)を意味する。
同じ「10」という表記が、10進法・8進法・2進法でまったく違う量を指してしまうと混乱を招く。そこでこうした場面では、 数字の右下に下付き文字で基数を添える表記が使われる。10TEN(10進法の10)と10EIGHT (8進法の10)を並べれば、どちらの基数の話をしているかが一目でわかる。
基数が変わっても、位取りの原理そのものは変わらない。ある基数Bの数を10進数に変換するには、 右から順に桁ごとにBの累乗を掛けて、その総和を取るだけでよい。8進数「25」であれば 2×8¹+5×8⁰=21、2進数「1011」であれば1×2³+0×2²+1×2¹+1×2⁰=11というように、 10進法で使ったのと同じ「位ごとの重みを掛けて足す」手順を、基数を置き換えて繰り返しているにすぎない。
下の表は、0から16までの数を10進・8進・4進・2進の4つの基数で並べたものである。基数が小さいほど、桁が増えるタイミングが早く訪れることがわかる。
表で眺めた対応関係は、自分の手で数を動かすと実感しやすい。下のシミュレータでスライダーや「+1 / −1」を操作すると、 同じ数が10進・8進・4進・2進の4つの表記で同時に更新される。さらに各表記の桁をタップすると、 その桁の重み(基数の累乗)と「桁の値×重み」が展開表示され、どの基数でも位取りの原理が同じ形で働いていることを確かめられる。
桁をタップすると、その桁の重み(基数の累乗)と「桁の値 × 重み」が表示されます。
スライダーや「+1 / −1」で数を動かすと、4つの基数の表記が同時に切り替わります。 どの基数でも、桁の値にその位の重み(基数の累乗)を掛けて全部足すと、必ず元の10進数に戻ります。 基数が小さいほど1桁で表せる量が少ないぶん桁数は長くなりますが、表記が違っても指している量は同じです。 位取りの原理そのものは、基数が変わっても変わりません。
もし人類が漫画のキャラクターのように両手で8本指だったら、どの記数法を採用しただろうと本書は推測しているか
8進法で数を数えるとき、「7」の次はどう表記されるか
8進数「25」を10進数に変換するといくつになるか
2進数「1011」を10進数に変換するといくつになるか
10進数「13」を2進数に変換するとどう表記されるか
2進法で数を数えるとき、「1」の次はどう表記されるか
10進数の「10」・2進数の「10」・8進数の「10」を並べて書くと混乱しやすい。この混乱を避けるために本書が紹介している工夫は何か
このセクション: 0 / 7 問正解
4. 2進数とコンピュータ、そして「bit」の誕生
2進法は0と1の2種類の記号しか持たないが、導線の電流あり/なし、スイッチの開/閉、電球の点灯/消灯といった「2つの状態」を持つ装置と自然に対応する。ここでは2進数の筆算やビット数と組み合わせ数の関係を確認し、最後に「bit」という言葉がどのように生まれたのかを見る。
前回のコースで見た、電流が流れる導線・オン/オフのスイッチ・点灯/消灯する電球・動作/非動作のリレーは、 すべて「2つの状態」しか持たない装置だった。この2状態こそが、2進法の0と1にそのまま対応する。 電流あり=1・なし=0、閉=1・開=0、点灯=1・消灯=0——前回コースで扱った回路の言葉が、そのまま2進数の言葉に翻訳できるということである。
2進法で使える桁(ビット)の数をnとすると、表現できる組み合わせの総数は2ⁿ通りになる。 1ビットなら2通り(0、1)、2ビットなら4通り(00、01、10、11)、3ビットなら8通り……というように、 ビット数が1つ増えるたびに表現できる組み合わせは2倍に増えていく。
2進数どうしの足し算は、10進数の筆算とまったく同じ手順で行える。使う数字が0と1の2種類しかないだけである。 たとえば0110(10進数の6)と0101(10進数の5)を足すと、右の桁から順に 0+1=1、1+0=1、1+1=10(0を置いて1繰り上げ)、 0+0+繰り上がり1=1 となり、結果は1011(10進数の11)になる。
この「1+1=10(0を置いて1繰り上げ)」がどう連鎖するかは、実際に触って確かめるのが早い。 下のカウンタで「+1」を押していくと、一の位(Bit0)の繰り上げが左隣のビットへ順に伝わっていく様子と、 1111の次に0000へ戻る「桁あふれ」を観察できる。
「+1」を押すと一の位(Bit0)から繰り上げが始まります。1だったビットは0に戻りつつ隣のビットへ繰り上げを渡し、0だったビットが1になったところで伝播は止まります。 4bitでは0〜15の16通りしか表せないため、1111の次は0000に戻ります(オーバーフロー)。コンピュータの整数演算が特定の値で「桁あふれ」するのはこの仕組みのためです。
桁数が多くなった2進数はそのままでは読みにくいので、4桁ごとにカンマやダッシュで区切って表記する慣習がある (例: 1011-0110)。この工夫は、10進数を3桁ごとにカンマで区切る(1,234,567)のと同じ発想である。
「binary digit(2進数字)」という5音節の言葉は長く扱いにくい。1948年頃、数学者ジョン・ワイルダー・テューキー がこれを短縮し、「bit」という言葉を作った。今日あらゆる場面で使われる情報の単位「ビット」は、 ここから生まれている。10進法という「たまたまの選択」から出発した今回の旅は、 2進法という「たった2つの記号だけで、位取りの仕組みがそのまま通用する」記数法にたどり着いて終わる。
導線・スイッチ・電球・電信リレーは、2進法の0と1にそれぞれどう対応するか
2進数の桁数(ビット数)がnのとき表現できる組み合わせは2ⁿ通りである。3ビットの場合、何通りになるか
8桁(8ビット)の2進数で表現できる10進数の最大値はいくつか
2進数のまま筆算する。0110 + 0101 の結果はどれか
「binary digit」という5音節の言葉を短縮して「bit」という言葉を作ったのは誰か、また何年頃のことか
「bit」という言葉はどの言葉を短縮したものか
第7〜8章を通じて学んだことの最も本質的なまとめとして適切なものはどれか
このセクション: 0 / 7 問正解