「人間を1ビットとして何人も並べれば計算ができる」というネタがある。どこかの書籍で読んだ覚えもあるし、そんな話を仲間内ですることもある。普段はそこで話はおしまいだが、実際にどうしたらよいかの詳細を考えてみた。
まずは、
■1ビットとして0 と1の表現。
0:右手を下げている。
1:右手を上げている。
「座りと立ちの切り替え」にするとスクワットになってきつい。左手を使えば2ビット表現できるが、そんなに欲張らずに。
次は
■1バイト=8ビット
Int8 a;
8人が縦列並び、前へならえ状態。
としてみた。縦並びなのはその後のインクリメントがこっちの方が都合がよいため。
■代入
Int8 a;
Int8 b;
a=b;
これはAの8人の列の横に、Bの8人の列をキレイに並べて、横目で見て真似してもらえばいい。「はーい、A班、右ならえ」。
段々、計算機っぽくなってきて
■インクリメント
Int a;
a++;
各人間がやること
右手下げ状態で頭たたかれたら、右手上げ
右手上げ状態で頭たたかれたら、前の人の頭叩き 右手下げ
実行
一番後ろの人の頭を叩く。
■デクリインクリメント
Int a;
a--;
各人間がやること
右手下げ状態でオシリたたかれたら、前の人のオシリを叩き、右手あげ
右手上げ状態でオシリたたかれたら、右手下げ
実行
一番後ろの人のオシリを叩く。
なんとなくは、
右手上で頭叩かれではバレーボールのアタック、
右手下で尻叩かれではボーリングの投球をイメージするとよいと考える。
やりかたが色々あるとすれば、評価のポイントは
・速く計算できる。
・間違えにくい。
次回は足し算(a=+b;)を考察。