もしも二進数を使ったら…
- 加算は1+1=10とだけ覚えれば良い。敢えて言うなら0+0=0、1+0=0+1=1も覚えれば完璧。
- 減算は補数と加算で済む。
- 乗算はシフトと加算で済む。
- 除算はシフトと減算で済む。
このように、加減乗除毎に九九が必要な十進数よりは遙かに簡単です。
十進数の場合、
- 加算九九は普段九九と呼ばないが、覚えさせられている: くもん出版 学習ポスタ たしざん
- 減算九九も普段九九と呼ばないが、覚えさせられている: くもん出版 学習ポスタ ひきざん
- 乗算九九は、九九と言えば乗算なほど、明示的に暗唱を特訓させられる。
- 割算九九は、割り声とも呼ばれていたが、珠算前提かつ煩雑なので今はもう諦めて教えてない。
+1や−1、×1などが簡単すぎて、または加算と乗算の対称性を利用すれば覚える量は減らせるが、
それでも、数十もの計算結果を覚える必要があるのが十進数の四則演算である。
対して、二進数では精々数個の結果を覚えていれば十分。
残念ながらこの世界では、世界規模で十進数で標準化されていて、今更変更すべきとは思えない。
しかしながら、もしニ進数を使った場合は様々なところで、もっと楽に済む。
以下では、そんな二進数の世界を纏めてみる。
二進法の表記と数え上げ
何かのモノの多さを指を丸めるか延ばすかで表そう。
簡単なため、指を丸めた状態を0、真っ直ぐ延ばして立てた状態を1と書こう。
無と有
- まず、Aが無い状態を指を丸めたグーで表そう。書く場合は0で表そう。
- 次に、Aが有る状態を指1本だけ立てて表そう。書く場合は1で表そう。
これだけでAの有無について語れる*1が、ここではAを増やすことに集中しよう。
ref: ブール代数。
Aと同じと呼べるモノがもう1つ有る状態(AA)
既に定義した0とも1とも異なる状態であるので指1本の丸めと立てでは表せない。
もう1本の指を一緒に使えば表せそう。
書く場合1だけではどの指を立てたか分からないので、指の順番を決めよう。
- Aが無い状態を00で書こう。
- Aが有る状態を01で書こう。
- Aがもう一つ有る状態を10で書こう。
00は0と全く同じ状態、01は1と全く同じ状態で、使う指の数が異なるだけ。
10は01と異なる状態を表していて、同じく2本指を使うが、立てた指が異なる。
Aと同じと呼べるモノがもう1つ有る状態(AAA)
Aが10よりもう1つ増やしたら両方の指を立てれば良い。つまり11で表そう。
自然数に関する二進数
Aを1個増やして行ったときの状態と、それを表す指の状態を表1にまとめられる:
表1: Aの状態と、それを表す指の状態 |
---|
Aの状態 | 指1本 | 指10本 | 指11本 | 指100本*2 |
---|
| 0 | 00 | 000 | 0000 |
---|
A | 1 | 01 | 001 | 0001 |
---|
AA | - | 10 | 010 | 0010 |
---|
AAA | - | 11 | 011 | 0011 |
---|
AAAA | - | - | 100 | 0100 |
---|
AAAAA | - | - | 101 | 0101 |
---|
AAAAAA | - | - | 110 | 0110 |
---|
AAAAAAA | - | - | 111 | 0111 |
---|
AAAAAAAA | - | - | - | 1000 |
---|
AAAAAAAAA | - | - | - | 1001 |
---|
AAAAAAAAAA | - | - | - | 1010 |
---|
AAAAAAAAAAA | - | - | - | 1011 |
---|
AAAAAAAAAAAA | - | - | - | 1100 |
---|
AAAAAAAAAAAAA | - | - | - | 1101 |
---|
AAAAAAAAAAAAAA | - | - | - | 1110 |
---|
AAAAAAAAAAAAAAA | - | - | - | 1111 |
---|
ここで、話しやすいように、便利な言葉を定義しよう。
- Aの状態を表す指の状態を数と呼び、
- Aの無い状態から、Aを1個ずつ増やしていく状態を表す数を自然数と呼び、記号で表す。
- 表にある表記法を二進法と呼び、二進法で表される数の表記を二進数と呼ぶ。
- 各指の位置を桁と呼び、右から左に向かって順に1の桁、10の桁、11の桁,100の桁と呼ぶ。
十進数に慣れすぎた方々へ:この世界では二進数が標準で、アラビア数字は全て二進数である。
二進法の加算