ライプニッツを夢中にさせた2進数のお話

2進法の原理とは?ライプニッツが着目した数のしくみ

「0と1」だけで世界を表す?──2進数という神秘的な表現


私たちが日常で使っている数字は、基本的に10進数で表現されています。しかし、コンピュータの世界では「0」と「1」だけを使った2進数が主役です。この2進数の原理にいち早く着目したのが、17世紀の数学者ゴットフリート・ライプニッツでした。


彼は数学的な視点だけでなく、哲学や神学的な関心からもこの「神の数」に魅せられたのです。本記事では、ライプニッツの思想とともに、2進数の基本的なしくみやその美しさ、そして計算の実例などをわかりやすく紹介します。

微積分学の創始者、ライプニッツ

現在のコンピュータの内部では、数は2進数で表現され、2進数をもとに設計されています。この2進数の重要性に最初に注目した人物のひとりが、17世紀の大数学者 ライプニッツ です。彼はニュートンと並んで 微積分学の創始者 とされ、数学史において非常に重要な存在です。

ライプニッツの父親は大学教授であり、彼は幼いころからギリシア語やラテン語の古典を読み、古代の哲学や幾何学を学びました。また、神学にも深い関心を寄せ、21歳のときには錬金術協会に参加して金を作ろうと試みていたことも記録されています。

ライプニッツが2進数に注目したのは、必ずしも数学的な動機からではなく、むしろ神秘主義に基づくものでした。ある伯爵に宛てた手紙の中で、彼は「2進数は10進数と違って、宇宙の完全性を表し、10進数よりもはるかに多くの意味を含んでいる」と述べています。1は「神」、0は「無」を象徴し、2進数の構造そのものが「無からの宇宙の創造」を意味するのだと考えました。

彼はこの思想を、当時中国にキリスト教を伝道していたイエズス会の宣教師たちにも伝えるよう勧めており、2進数を単なる数学的道具ではなく、哲学的・宗教的な意味を持つ概念として捉えていたことがうかがえます。

10進数と2進数:数の表し方の違い

私たちは子どもの頃から「数」に親しんできましたが、普段使っているのはほとんどが10進数、つまり10進法で表された数です。そのため、数といえば「10進数」が当たり前だと感じてしまい、2進数など他の表現方法にはなじみにくさを覚えるかもしれません。

ここで注意したいのは、「10進数」や「2進数」という言葉は、数そのものの“種類”を指しているのではなく、数の表し方(表現方法)を指しているということです。

たとえば、私たちが「みっつ」や「三」と言ったり、英語で “three” と言ったりしても、どれも同じ「3」という数を意味しています。つまり、“3”という数自体はひとつしかなく、違うのはその表現のしかたにすぎないのです。

ですから、本来なら「10進表現」「2進表現」と呼んだ方が誤解が少ないのですが、「10進数」「2進数」という言い方が広く定着しているため、ここでもその慣例に従うことにします。

当は、“10進表現”とか“2進表現”と呼んだ方がよいのですが、すでに言い習わされた表現なのでここでは慣例に従うことにします。

10進数とは?

私たちが日常的に使っている「10進数」は、大きな数を扱いやすくするための記法が工夫されています。たとえば、数「304005060」は「三億四百万五千六十」と書き表すことができます。ただ数字を並べるよりも、「億・万・千・百・十」といった単位(桁標識)を用いることで、数の構造がはっきりし、理解しやすくなります。

「億」「万」「千」などの単位は、各桁の重みを示す桁標識と呼ばれます。ソロバンに親しんでいる方なら、各桁の上に桁名が書かれたソロバンを思い浮かべてください。ソロバンに馴染みがない場合は、下の図のように桁標識のついた箱が横一列に並べられている様子を想像すると理解しやすいでしょう。

なお、最も右端の桁(最下位)には通常、桁標識はついていません。

各箱には 0 から 9 までの数字の一つが入ります。

画像上部には淡い灰色の背景上に「0 1 2 3 4 5 6 7 8 9」と書かれた緑枠の小さな正方形が横一列に並んでいます。その下に、前面が緑、側面が濃い緑の立方体が 5 つ並んでおり、左から「万」「千」「百」「十」と文字が描かれ、最後の一つだけ無地です。上部の数字列から「万」の立方体に向かって吹き出し矢印が伸びています。これは、各位(万位・千位・百位・十位・一位)に 0~9 の数字を入れられることを示す図です。

たとえば 6, 5, 4, 3, 2 がそれぞれの箱に入った場合、これが表す数値は「 6万5千4百3十2 」となります。

画像には、左から順に5つの立方体が並んでおり、前面にそれぞれ「6 万」「5 千」「4 百」「3 十」「2」と書かれています。さらにその下に水色の帯で「6 万 5 千 4 百 3 十 2」と並べて示されています。

このように、10進数は「1から9までの数字を入れた箱が並んだもの」をイメージしてみてください。

2進数とは?

2進数では、数字を表すために「0」と「1」だけを使います。まず、下の図のように箱を並べて考えます。10進数では各桁に0〜9までの数字が入りますが、2進数では各箱に入るのは「0」か「1」だけです。

左から右へ5つの立方体が並んでおり、それぞれ前面に「2⁴」「2³」「2²」「2¹」「2⁰」と書かれています。左端の「2⁴」の箱だけ上部に灰色の吹き出しがあり、中に縦に並んだ白地の小さな枠が2つ描かれ、それぞれ「0」「1」と表示されています。他の4つの箱は中が空っぽで、ビットの有無を選ぶイメージを示しています。

それぞれの箱に 1、0、1、0、1を入れてみましょう。この2進数が表す数は以下のようになります。

1×2⁴ + 0×2³ + 1×2² + 0×2¹ + 1×2⁰   = 16 + 4 + 1   = 21

ヤードポンド法と2進的な単位の考え方

厳密に言えば「2進数」とは異なりますが、古代から 2倍ずつ増えていく単位系 というのはさまざまに存在していました。その一例が、ヤードポンド法における液体の容量の単位です。

たとえば、次のような順に単位が並んでいます:

ジル → チョピン → パイント → クォート → ポトル → ガロン → ペック

最小単位の「ジル」を起点として、

  • 2ジル = 1チョピン
  • 2チョピン = 1パイント
  • 2パイント = 1クォート

… というように、それぞれが2倍ずつの関係になっています。このような2進的な構造の単位系では、数字ではなく単位の組み合わせで量を表すこともあります。たとえば「9ジル」は、「1パイントと1ジル」と表現するような具合です。

現在でも、イギリスやアメリカではこのようなヤードポンド法(尺貫法)が日常的に使われており、ワインなどの液体の計量にこの単位体系が使われる場面もあります。

貨幣の例で考える2進数のしくみ

外国の単位系は私たちにはあまりなじみがないため、ここでは想像上の貨幣の仕組みを使って、2進数の考え方をイメージしてみましょう。

たとえば、次のような6枚の硬貨があるとします:

  • 1円硬貨、2円硬貨、4円硬貨、8円硬貨、16円硬貨、32円硬貨
想像上の貨幣系。左から32円硬貨、16円硬貨、8円硬貨、4円硬貨、2円硬貨、1円硬貨を表す緑色のコインアイコンが横一列に並んでいる。

6種類の硬貨で61円まで支払える

1円、2円、4円、8円、16円、32円──この6種類の硬貨が1枚ずつあれば、0円から61円までのすべての金額を支払うことができます。

42円を支払う方法① ― 上位の硬貨から引いていく

たとえば、42円を支払う方法を見てみましょう。

  1. まず32円硬貨を使うと、残りは 42 − 32 = 10円。
  2. 次に、16円硬貨は大きすぎるので使いません。
  3. 8円硬貨を使うと、残りは 10 − 8 = 2円。
  4. 最後に2円硬貨を使って合計42円になります。

使った硬貨は、32円、8円、2円です。

図:42円を支払うには? ● 32円硬貨を使う 42−32=10 ↓ ● 8円硬貨を使う 10−8=2 ↓ ● 2円硬貨を使う  使った硬貨は? 32円硬貨 1枚 16円硬貨 0枚 8円硬貨 1枚 4円硬貨 0枚 2円硬貨 1枚 1円硬貨 0枚  → 10進数42の2進数表現101010

すると、使った硬貨は32円、8円、2円となります。使った硬貨を1で、使わなかった硬貨を0で表し、上の桁から並べると「101010」となります。この 10101010進表現 422進表現です。

42円を支払う方法② ― 2で割っていく方法

今度は別の方法で、10進数の42を2進数に変換してみましょう。考え方は「2で割っていく」方式です。

1円硬貨が42枚あったとします。まずこれを2円硬貨に両替します。すると、2円硬貨が 21枚となります。2円硬貨を1枚使うことにします。20枚の2円硬貨を4円硬貨に両替すると、10枚の4円硬貨になります。これを8円硬貨に両替すると、5枚の8円硬貨になります。8円硬貨を1枚使います。残りの4枚の8円硬貨は2枚の16円硬貨に、2枚の16円硬貨は1枚の32円硬貨となります。

下から順に余りを並べると:101010

このようにしても、やはり42 = 101010 (2進数) となります。

図:「42円を支払うには?」
1.1円硬貨 42枚 ↓両替 	
2.2円硬貨 21枚 (うち1枚を使い、残り20枚を両替) ↓両替 
3.4円硬貨 10枚 ↓両替 	
4.8円硬貨 5枚 (うち1枚を使い、残り4枚を両替) ↓両替 
5.6円硬貨 2枚 ↓両替 	
6.32円硬貨 1枚

10進表現 42 の2進表現は?

次の図1は上で述べた「引いていく方法」の計算表、図2 は「2で割っていく方法」です。

図1(引いていく方法): 上部に「引ける…1 引けない…0」と書かれた吹き出しがあり、その下にビット位置を示す見出しとして「32 16 8 4 2 1」が並ぶ。 見出し列の下には元の数値をそれぞれの位から引いていった結果が縦に並び、42 → 10 → 10 →  2 →  2 → 0となる。それぞれの位で引ける(1)引けない(0)を上下から読むと、32の位=1、16位=0、8位=1、4位=0、2位=1、1位=0、すなわち二進数101010を表す。  図2(割っていく方法): 上部に「奇数…1 偶数…0」と書かれた吹き出しがあり、その下に元の数値を2で割っていった商と余りが並ぶ。42÷2=21 … 0   21÷2=10 … 1   10÷2 =5 … 0    5÷2 =2 … 1    2÷2 =1 … 0    1÷2 =0 … 1  42÷2=21 … 0   21÷2=10 … 1   10÷2 =5 … 0    5÷2 =2 … 1    2÷2 =1 … 0    1÷2 =0 … 1  余りを下から上へ読むと、0→1→0→1→0→1 で101010となり、同様に二進数101010を示す。

図1 の中央の欄は 1, 2, 4, … を逆さまに並べた列です。左の欄から中央の欄を引き、引けたら右の欄に 1 を、引けなかったら 0 を記入します。図2では、左の欄を2で割っていきます。左の欄が奇数なら右の欄に1を、偶数なら 0 を記入します。2進数は、図1 では上から下へ、図2 では下から上に読みます。

このようにして、2通りの方法のどちらを使っても、10進数の42は、2進数では「101010」 と表されます。

これは「数を1か0かで表す」コンピュータの基本的な考え方と深くつながっています。

図でわかる!2進数のソロバン

2進数のしくみを視覚的に理解するには、図3 のような『2進数のソロバン』を使うとわかりやすくなります。
このソロバンでは、各桁に1個の珠(たま)だけがあり、それぞれが 「上がっている」か「下がっている」か で、1か0かを示します。

図3:2進数のソロバン 上段に 32、16、8、4、2、1 の位を示す数字、その下にそれぞれの位のビーズが配置されている。 ビーズの配置は、32の位:上側のビーズが1つ下段に降りて ON、16の位:下側のビーズが上段に上がって OFF、8の位:上側が ON、4の位:下側が OFF、2の位が ON、1の位が OFF となっており、全体で 101010(二進数)を表している。

各桁の珠の状態は以下のようになっています。

桁の値珠の状態表す値
32上がっている1
16下がっている0
8上がっている1
4下がっている0
2上がっている1
1下がっている0

したがって、これが表す2進数は 「101010」10進数では 32 + 8 + 2 = 42 を意味します。

2進数は扱いづらい?

わずか100枚で、世界中の金額をカバーできる?

「2進数は桁数が多くなりすぎて、人間には扱いづらい」という声をよく耳にします。たしかに、小さな数を表すときは10進数に比べて桁数が多くなるため、直感的には見づらく感じるかもしれません。

しかし、大きな数になると、むしろその表現力の強さが際立ってきます。

たとえば、100枚の硬貨を使う場合を考えてみましょう。

2進数では、100桁の2進数で表せる数は

2100 = 210 × 210 × … × 210(210が10個)

さらに、また〔完全数のお話〕で述べたように、210 は 1,024 なので 103(= 1,000)より大きい ということから、2¹⁰⁰は以下のように計算できます。

2100 > 103 × 103 × … × 103(103が10個) = 1030

つまり、100枚の硬貨で10の30乗、すなわち

1030 = 1018 × 1012 = 1018

もの数を表すことができるのです。

2^100 = 2^10 × 2^10 × … × 2^10 (2^10が10個) 2^10 > 10^3 だから > 10^3 × 10^3 × … × 10^3 (10^3が10個) = 10^30 = 10^18 × 10^12 = 10^18 兆

硬貨 100枚程度なら、少し大きめの財布なら十分に入ります。このように、2¹⁰⁰円 は世界中のお金をかき集めたよりもはるかに大きな金額となります。たった100枚の硬貨があれば、世界中で扱われているどんな金額でも表すことができるのです。

まとめ

2進数は、単にコンピュータの世界だけで使われている技術的な表現方法ではありません。17世紀にライプニッツが神秘的な魅力を感じたように、2進数には「万物を単純な要素から表現できる」という深い思想が隠されています。

また、現代においても、デジタル技術の根幹を支えるしくみとして不可欠な存在です。2進数の仕組みや可能性を知ることは、数に対する理解を深めるだけでなく、人類が数に込めてきた思想や文化の奥行きを知る手がかりにもなるのではないでしょうか。

スポンサーリンク