二進法の算術:0 と 1 で数を表す
私たちはなぜ 10 ずつ数えるのでしょう? おそらく指が 10 本あるからです。10 という数に特別なところはなく、どんな数でもどんな基数でも書けます。ライプニッツはこの考えを極限まで推し進めて問いました。すべての数を書くには、最低いくつの数字が必要か?
答えは二つ、0 と 1 です。
位ごとに 2 倍
十進法では、位の値は 1、10、100、1000……で、各数字はその値を何回使うかを表します。二進法では、位の値は 1、2、4、8、16、32……で、各数字ははい(1)かいいえ(0)しか表せません。
$$10110_2=1\cdot16+0\cdot8+1\cdot4+1\cdot2+0\cdot1=22.$$添え字 $_2$ は、その数が二進法で書かれていることを示します。8 桁、つまり 8 ビットでは、位の値は 1 から 128 まで。書ける最大の数は
$$11111111_2=128+64+32+16+8+4+2+1=255.$$ゼロも含めると $2^8=256$ 通りの数になります。コンピュータで 0 から 255 までのものが多いのはそのためです。
変換と足し算
13 を二進法で書くには、2 でくり返し割って余りを書きとめます。
| 割り算 | 商 | 余り |
|---|---|---|
| 13 ÷ 2 | 6 | 1 |
| 6 ÷ 2 | 3 | 0 |
| 3 ÷ 2 | 1 | 1 |
| 1 ÷ 2 | 0 | 1 |
余りを下から上に読むと $13=1101_2$。確かめると $8+4+0+1=13$。
足し算は十進法よりさらに簡単です。場合は 4 つしかありません。$0+0=0$、$0+1=1$、$1+0=1$、そして $1+1=10_2$、つまり「0 を書いて 1 繰り上がる」です。たとえば
$$101_2+11_2=1000_2,\qquad\text{つまり}\qquad5+3=8.$$九九の表は 1 行で済みます。$0\times0=0$、$0\times1=0$、$1\times1=1$。ライプニッツはこれに魅了されました。掛け算は、写して位をずらすだけになるのです。
エジプトのかけ算
2 倍にするという考えは、ライプニッツよりずっと古いものです。紀元前 1550 年ごろに書記アーメスが書き写したリンド・パピルスでは、エジプト人は2 倍にして足すことだけでかけ算をしていました。$21\times37$ を計算するには、$1$ と $37$ から始めて、行ごとに両方の列を 2 倍にする表を作ります。
| 1 の 2 倍 | 37 の 2 倍 |
|---|---|
| 1 | 37 |
| 2 | 74 |
| 4 | 148 |
| 8 | 296 |
| 16 | 592 |
左の列から、合計が 21 になる行を選びます:$16+4+1=21$。右の列の対応する行を足すと、$592+148+37=777$。よって $21\times37=777$ です。
なぜうまくいくのでしょうか。行を選ぶことは、21 を 2 進法で書くことなのです:$21=10101_2=16+4+1$。したがって
$$21\times37=(16+4+1)\times37=592+148+37.$$正の整数はどれも、異なる 2 のべき乗の和としてただ一通りに書けるので、この方法は決して失敗しません。エジプト人は、ライプニッツの三千年前に、それと知らずに 2 進法で計算していたのです。一方の因数を半分にし、もう一方を 2 倍にしていく変形は、ヨーロッパでロシア農民のかけ算として知られるようになり、今日のプロセッサーがしていることにも似ています。
無と一から
ライプニッツは 1679 年の手稿で二進法を研究しましたが、なかなか発表しませんでした。彼にとって二進法には宗教的な意味もありました。すべての数は 1 と 0 から生まれる。ちょうど、彼の考えでは、世界が神によって無から創造されたように。
中国の書物
ライプニッツは、中国に住むイエズス会の宣教師ジョアシャン・ブーヴェと文通していました。1701 年、ブーヴェは『易経』の 64 の卦を送ってきました。『易経』は約 3000 年前の中国の占いの書で、各卦は 6 本の線(陽爻はつながった線、陰爻は切れた線)でできています。
ライプニッツはすぐに気づきました。切れた線を 0、つながった線を 1 に置き換え、伝統的に伏羲に帰される順序に並べると、卦は 0 から 63 までの数を二進法で書いたものになっていたのです。彼は魅了され、この発見を、1703 年にパリ科学アカデミーの紀要にようやく発表した論文『二進法算術の解説』に盛り込みました。
紙からコンピュータへ
200 年以上、二進法は珍しいものにすぎませんでした。それが変わったのは 1937 年、アメリカの技術者クロード・シャノンが、オンとオフのスイッチでできた電気回路で二進法の計算ができることを示したときです。今日では、すべてのコンピュータ、スマートフォン、電卓が、数や文字を長い 0 と 1 の列として記憶しています。
ライプニッツはコンピュータを発明したわけではなく、二つの記号で数えることを考えた唯一の人でもありません。しかし二進法の算術を体系化し、それでどう計算するかを示し、それが数について何か深いことを明らかにすると主張したのは彼でした。
練習:19 を二進法で書け
$19=16+2+1$ なので $19=10011_2$。8 ビットでは $00010011_2$。
練習:111111₂ はいくつか? 2⁶ とどんな関係があるか?
$32+16+8+4+2+1=63=2^6-1$。一般に、1 が $n$ 個並んだ数は $2^n-1$ で、十進法の $999=10^3-1$ と同じです。
資料: ライプニッツと二進法の算術、アメリカ数学協会 · MacTutor の伝記。