もしも二進数を使ったら…
- 加算は1+1=10とだけ覚えれば良い。敢えて言うなら0+0=0、1+0=0+1=1も覚えれば完璧。
- 減算は補数と加算で済む。
- 乗算はシフトと加算で済む。
- 除算はシフトと減算で済む。
このように、加減乗除毎に九九が必要な十進数よりは遙かに簡単です。
十進数の場合、
- 加算九九は普段九九と呼ばないが、覚えさせられている: くもん出版 学習ポスタ たしざん
- 減算九九も普段九九と呼ばないが、覚えさせられている: くもん出版 学習ポスタ ひきざん
- 乗算九九は、九九と言えば乗算なほど、明示的に暗唱を特訓させられる。
- 割算九九は、割り声とも呼ばれていたが、珠算前提かつ煩雑なので今はもう諦めて教えてない。
+1や−1、×1などが簡単すぎて、または加算と乗算の対称性を利用すれば覚える量は減らせるが、
それでも、数十もの計算結果を覚える必要があるのが十進数の四則演算である。
対して、二進数では精々数個の結果を覚えていれば十分。
残念ながらこの世界では、世界規模で十進数で標準化されていて、今更変更すべきとは思えない。
しかしながら、もしニ進数を使った場合は様々なところで、もっと楽に済む。
以下では、そんな二進数の世界を纏めてみる。
自然数と二進法
何かのモノの多さを指を丸めるか延ばすかで表そう。
簡単なため、指を丸めた状態を0、真っ直ぐ延ばして立てた状態を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と全く同じ状態で、使う指の数が異なるだけ。
00と01では使わない指を折っている0と1と見なすこともできる。
10は01と異なる状態を表していて、同じくニ本指を使うが、立てた指が異なる。
自然数を表す二進数
Aが10よりもう1個増やしたら両方の指を立てれば良い。つまり11で表そう。
さらにAを1個増やすと、指10本では足りないので、指を更に増やして100と表そう。
その次は101、110、111と続けば良い。
以上より、Aを1個増やして行ったときの状態と、それを表す指の状態を並べると表1が得られる:
表1: Aの状態と、それを表す指の状態 |
---|
Aの状態 | 使う指*2 |
---|
1本 | 10本 | 11本 | 100本 |
---|
| 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個ずつ増やしていく状態を表す数を自然数(シゼンスウ)と呼び、記号で表す。
- 数を表すのに使う0と1を数字(スウジ)と呼ぶ。
- 数字を使って数を表す表記(ヒョウキ)と呼ぶ。
- 表記の規則を表記法(ヒョウキホウ)と呼ぶ。各表記法の名前には、接尾語-法を付ける。
- ○○法で表される表記を○○表記と呼ぶ。数と混同する恐れが無い場合は古の習慣で○○数と呼ぶこともある。
位と桁
- 指の位置を桁(けた)もしくは位(くらい)と呼び、
- 桁の数を桁数(けたすう)と呼ぶ。
- 各桁を右から左に向かって、順に第1桁、第10桁、第11桁,第100桁、…と呼ぶ。
- もしくは、古の習慣で順に1の位、10の位、100の位,1000の位、…と呼ぶこともある。
- 左側の位を上位(ジョウイ)、右側を位を下位(カイ)と呼ぶ。
- 同じ数字でも位置によって異なる数を表す表記法を位取り表記法(くらいどり-ヒョウキホウ)と呼ぶ。
二進法
- 0と1だけを下位から順番に繰り返して使う位取り表記法を10進法(イチゼロ-シンホウ)と呼ぶ。
- 古の言葉で二進法(ニ-シンホウ)と呼ぶこともある。
- 使う桁の数に応じて、順に1桁10進法、10桁10進法、11桁10進法、100桁10進法、…と呼ぶ。
確認問題
問1: 次の状態を11桁11進法、100桁11進法、101桁11進法、111桁11進法で表して下さい。
AAAAAAA
十進数に慣れすぎた方々へ:この世界では二進数が標準で、アラビア数字は全て二進数である。
自然数の等価と無限桁二進数
自然数の等価
1は1桁二進数、01は10桁二進数、001は11桁二進数、0001は100桁二進数であるが、
これらは異なる表記法に基づく異なる表記であるが、共にAという状態を表すために同じ数を表している。
同じ数であることを等しいや等価と呼ぶ。
2つの数が等しいこと、2つの数を記号「=」で結んで簡単に表す。「=」は等号と呼び、イコールと読む。
例えば、001と0001が等しいことを「001=0001」と書く。
3つ以上の数が互いに等しい場合、数を並べて、隣同士を「=」で結んで表す。
例えば、1と01と001と0001が全部等しいことを「1=01=001=0001」と書く。
無限桁二進数
1=01=001=0001であるように、二進数の最上位から続く0を省略させても、表す数は変わらない。
逆に、任意の二進数は、最上位の更なる上位に0がずっと続いている二進数とも見なせる。
例えば、0の数に関係無く、1=0……00000000000000000000001である。
そこで、上位に0がずっと続く二進法を無限桁二進法と呼ぶ。
対して、桁数が決まっている特定の桁数を持つ二進法を有限桁二進法と呼び。
表1にあるように、有限桁二進法では表せる状態が有限であるが、無限桁二進数にはその限度が無い。
そのため、以降は無限桁二進法を用いる。
ただし、ずっと続く0は書き切れないため、通常は最上位の0を省いて書く。
また、何も書かないのは識別できないため、0のみ、1の位にある0を省かずに0と書く。
以上で定義した言葉や表記を使って表1を整理しなおすと、表2が得られる:
表2: Aの状態と、Aの数 |
---|
Aの状態 | 固定桁二進法 | 無限桁 二進法 |
---|
1桁 二進法 | 10桁 二進法 | 11桁 二進法 | 100桁 二進法 |
---|
| 0 | 00 | 000 | 0000 | 0 |
---|
A | 1 | 01 | 001 | 0001 | 1 |
---|
AA | - | 10 | 010 | 0010 | 10 |
---|
AAA | - | 11 | 011 | 0011 | 11 |
---|
AAAA | - | - | 100 | 0100 | 100 |
---|
AAAAA | - | - | 101 | 0101 | 101 |
---|
AAAAAA | - | - | 110 | 0110 | 110 |
---|
AAAAAAA | - | - | 111 | 0111 | 111 |
---|
AAAAAAAA | - | - | - | 1000 | 1000 |
---|
AAAAAAAAA | - | - | - | 1001 | 1001 |
---|
AAAAAAAAAA | - | - | - | 1010 | 1010 |
---|
AAAAAAAAAAA | - | - | - | 1011 | 1011 |
---|
AAAAAAAAAAAA | - | - | - | 1100 | 1100 |
---|
AAAAAAAAAAAAA | - | - | - | 1101 | 1101 |
---|
AAAAAAAAAAAAAA | - | - | - | 1110 | 1110 |
---|
AAAAAAAAAAAAAAA | - | - | - | 1111 | 1111 |
---|
……………………… | - | - | - | - | ……… |
---|
自然数の大小関係
(後回し)
自然数の加法と二進法に基づく筆算
自然数の加法
2つのAの状態Xと状態Y、そして、XとYを合わせた状態SのAの数を考えてみよう。
状態X、Y、SにおけるAの数をそれぞれx、y、sと置こう。
以下では、とりあえずxとyを少しずつ増やしながら、状態の図を描いてsを調べてみよう。
xとyが0の場合
XもYもAが無い状態なので、合わせてもAが無い状態である。
xとyの片方が0、もう片方が1の場合
片方にAが無く、もう片方にAが1個だけある場合、合わせるとAが1個の状態になる。
xとyが両方とも1の場合
1個のAともう1個のAを合わせることは、1個のAにもう1個のAを増やすことになるから、
その結果、10個のAがある状態になる。
まとめ
このように、状態の図を書けば、どんなxとyについてもsを調べられる。
例えば、xとyを3桁まで増やした結果は、表3のようになる:
表3: 2つの状態を合わせた状態 |
---|
x | y | 状態X | 状態Y | 状態Z | z |
---|
0 | 0 | | | | 0 |
---|
0 | 1 | | A | A | 1 |
---|
0 | 10 | | AA | AA | 10 |
---|
0 | 11 | | AAA | AAA | 11 |
---|
1 | 0 | A | | A | 1 |
---|
1 | 1 | A | A | AA | 10 |
---|
1 | 10 | A | AA | AAA | 11 |
---|
1 | 11 | A | AAA | AAAA | 100 |
---|
10 | 0 | AA | | AA | 10 |
---|
10 | 1 | AA | A | AAA | 11 |
---|
10 | 10 | AA | AA | AAAA | 100 |
---|
10 | 11 | AA | AAA | AAAAA | 101 |
---|
11 | 0 | AAA | | AAA | 11 |
---|
11 | 1 | AAA | A | AAAA | 100 |
---|
11 | 10 | AAA | AA | AAAAA | 101 |
---|
11 | 11 | AAA | AAA | AAAAAA | 110 |
---|
xとy、zだけを取りだして整理すると、表4が得られる:
表4: 2つの状態を合わせた状態の数量関係 |
---|
| y | 0 | 1 | 10 | 11 |
---|
x | z | |
---|
0 | | 0 | 1 | 10 | 11 |
---|
1 | 1 | 10 | 11 | 100 |
---|
10 | 10 | 11 | 100 | 101 |
---|
11 | 11 | 100 | 101 | 110 |
---|