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]