3でアホになる芸人が引っ張りだこになった年、年末にちょっとした数学談義をしました。
便乗企画だったので進法自体を考察することはなく。しかし私もプログラマーの端くれなので、
二進法の仕組みを紹介したくなったのですね。まず十進法と対応させるのが便利かと。
1 0001 9 1001
2 0010 10 1010
3 0011 11 1011
4 0100 12 1100
5 0101 13 1101
6 0110 14 1110
7 0111 15 1111
8 1000 16 1 0000
左右の数の加算を例にします。
1+9=10 0001 + 1001 = 1010
2+10=12 0010 + 1010 = 1100
3+11=14 0011 + 1011 = 1110
4+12=16 0100 + 1100 = 1 0000
5+13=18 0101 + 1101 = 1 0010
6+14=20 0110 + 1110 = 1 0100
7+15=22 0111 + 1111 = 1 0110
8+16=24 1000 + 1 0000 = 1 1000
まず足し算では片方が1の場合は1、両方が同じ数(0か1)の場合は0になることが解る。で、
両方が1の場合は繰り上がりが発生。試しに四行までを確かめると以下の通り。
0001 0010 0011 0100
+ 1001 + 1010 + 1011 + 1100
――― ――― ――― ―――
1010 1100 1110 1 0000
上記から同じ位で1が並ぶのは三つまでなので、計算結果は「11」までと理解でき。なので、
「数」という概念がなくても計算が可能。数学だけど、用いるのは(排他的)論理和や論理積なので、
数え上げは不要ですから。数の概念を習得したヒトには却って難しい操作。さらに引き算よりも、
掛け算のほうが単純に考えられ。
10×2=20 1010 * 0010 = 1 0100
11×3=33 1011 * 0011 = 10 0001
12×4=48 1100 * 0100 = 11 0000
13×5=65 1101 * 0101 = 100 0001
14×6=84 1110 * 0110 = 101 0100
15×7=105 1111 * 0111 = 110 1001
16×8=128 1 0000 * 1000 = 1000 0000
横の式では解りづらいので、例によって縦に書き直し。まずは二行目と四行目。
1011 1101
* 0011 * 0101
――― ―――
1011 1101
1 011 11 01
――― ――――
10 0001 100 0001
掛ける数が1なら掛けられる数を所定の位置に置き、0なら描かなくて済む。後は上に示した、
排他的論理和と論理積なので、「計算」をしなくて掛け算が成立。
[2438degital.txt]