「マイナス2進法で数を数えなさい」
「ビルゲイツの入社試験」の問題の一つです。
P-進数を調べていたとき,何か関連があるのではないかと考えてみることにしました。
n進数a0a1…ar-1ar[n]は,10進法に直すと,
Q=ar+ar-1・n+ar-2・n2+ar-3・n3+…+a0・nrです。
マイナス2進法―すなわちn=-2のとき,Qは10進法ではどんな値をとるか。
-2進法なので,使う数字amは0か1とします(TかSを使っても良いのですが)。ここで注意することは,(‐2)の奇数乗はマイナスになることです。きっと,めちゃくちゃな数が出てくるだろうと予想したのですが,どうでしょうか。
例えば,Q=ar−2・ar-1+4・ar-2−8・ar-3+16・ar-4−…ですから,
11[-2]はQ=1-2=-1。111[-2]はQ=1-2+(-2)2=3。以下同様に計算すると,
-2進法 1 10 11 100 101 110 111 1000
10進法 1 -2 -1 4 5 2 3 -8
重複なく出てきます。さらにマイナスも出てきます。つまり,マイナス2進数を考えるとマイナス記号を使わなくても負の数を取り扱えるということです。
この続きもやってみましょう。
-2進法 1001 1010 1011 1100 1101 1110 1111
10進法 -7 -10 -9 -4 -3 -6 -5
-2進法 10000 10001 10010 10011 10100 10101 10110
10111
10進法 16 17 14 15 20 21 18 19
これは,四則計算もできるのでしょうか。
-2+5=10+101=111[-2]=3 3-(-3)=111-1101=-110
-3*(-2)=1101*10=11010[-2]=6 14/(-2)=10010/10=1001[-2]=-7
成り立っているのもありますが,2進法の加法のやり方では,2+(-2)=110+10=1000[-2]=-8
のように成り立たない場合もあります。この数はマイナスも含んでいるので,加法さえ成り立つようにすれば減法も考えることができるはずです。2進法のように単純に繰り上げると符号が違ってくるので,繰り上がりと0になるところを注意すればいいことに気がつきます。そして,次のルール見つかります。
《−2進法の加法のルール》
(@)11+01=0(繰り上がってマイナスと打ち消しあって0。(−1)+1=0)
(A)01+01=110(符号が同じ二つ上の位に繰り上がるが,多すぎるので一つ上の位で消す。)
ルールはこの2つでOKです。
この法則は桁が違っても同じですが,2桁ずつまとめて計算した方がわかりやすい。
-2 10 1 01 -1 11 -2 10 -1 11
+)-2 +)10 +)1 +)01 +)+1 +)01 +)1 +)01 +)-2 +)10
-4 1100 2 0110 0 00 -1 11 -3 1101
この法則を使えば,次のように計算できます。2桁ずつまとめることを忘れないように。
-1 11 -2 0110 6 011010
+)-1 +)11 +2 +)0010 +)-3 +) 1101
-2 10 0 00 3 0111
この加法を使うと,マイナスの符号を使わなくても計算ができることになります。この点は「無限大数」と同じです。これで加法も成り立たせることができたので,最初の入社試験を解くことにします。
これを順番に並べると,
10進法 -3 -2 -1 0 1 2 3 4 5 6 7 8
9 10
-2進法 1101 10 11 0 1 110 111 100 101 11010 11011 11000
11001 11110
2桁の数はマイナス。3桁の数はプラス。4桁はマイナス。5桁はプラスです。
マイナス2進法で(10進法の)数を数えるわけですから,
1101,10,11,0,1,110,111,100,101,11010,11011,11000,11001,11110,…が解答でしょうか。
さらに研究してみよう。
(1)減法を考えてみよう。 ルールは?
(2)乗法を考えてみよう。 (−)×(−)=(+)になるわけは? これは面白そうです。
(3)除法を考えてみよう。 少数も調べてみよう。
さらに、「てんびん3進法」も考えられます。
もどる