2019年3月13日水曜日

2のn乗のザックリ計算 (問題演習編)

  デジタルは2進法の世界ですから、「2 の何乗」という数字がしょっちゅう出てきます。そんなとき、まともに計算してはいられません。そこで「2 の何乗」の値を瞬時にザックリ計算する方法をお教えしましょう。
 正確には 210 = 1024 ですが、これを 210 ≒ 1000(= 103 とすると、2n の概数が瞬時に求められます。このとき、220 ≒ 百万、230 ≒ 十億、240 ≒ 一兆、…となります。ですから、たとえば 235 の概数を求めるには、
      ┌─→┐
  ◇  23532 十億 = 320 億 。
      └─→──┘
これでいいわけです。いろんな場面で使えて、重宝しますよ。

 さっそく使ってみましょう。問題形式で、立て続けに4ついきます。



【問1】
 紙を1回折ったら厚さは2倍になります。もう1回折ったら厚さはさらに2倍になります。
 さて,厚さ0.1mmの紙を何回折ったら、東京スカイツリーの高さ(634m)を超えるでしょうか?

《答1》
 紙の厚さ0.1 mmの十倍が1 mmで、さらにその千倍が1 mですから、1 mは紙の厚さの1万倍ですね。
 ということは、東京スカイツリーの高さは紙の厚さの634万倍となります。…(1)
 一方、紙を1回折るごとに厚さは2倍になりますから、紙をn回折ると厚さは 2n 倍になります。
 先ほどのザックリ計算をすると、10回折ると厚さが千倍に、20回折ると百万倍になります。
 あれっ、もう(1)に近くなっちゃいました。あともう1回折ると200万倍、さらにもう1回折ると400万倍、
 次にもう1回折ると800万倍。はい、東京スカイツリーを超えました。
 というわけで、答えは「23 回」です。

 ちなみに、23回折ると紙の面積は23分の1になります。元の紙が1m四方だとすると、23回折った後は1辺の長さが1mm以下になります。折れるものなら折ってみてください。現実には5~6回折るのが限度でしょうけれど。



【問2】
 デジタルの最小単位は「ビット」で、それを8個束ねたものが1バイト(B)、つまり「8ビット=1B」です。
 1ビットのオン/オフで2種類のものを区別できます。2ビットで4種類のものを区別できます。
 さて、世界中の全ての人に異なる記号を割り振るには、何バイトあればよいでしょうか?

《答2》
 1B=8ビットで、28=256人の人を区別できる。
 2B=16ビットで、216=64千=6万4千人を区別できる。
 3B=24ビットで、224=16百万=1600万人を区別できる。 … まだ世界人口には程遠い。
 4B=32ビットで、232=4十億 =40億人を区別できる。 … 世界人口に近づいてきました。
 5B=40ビットで、240=1兆人を区別できる。 … あっという間に世界人口を超えました。
 というわけで、答えは「5 バイト」です。

 ちなみに、1バイトとは英字1文字分の容量ですから、「omori」の5文字でもう5バイトです。それと同じ容量で,世界中の人を区別できるということです。今後さらに世界人口が増えても、たぶんこれで十分でしょう。きっと1兆人は地球上に住めないでしょうから。



【問3】
 ある細胞を培養すると、1秒後に2つに分裂します。さらに1秒後にそれぞれの細胞が分裂します。
 その細胞1つを容器に入れて培養したところ、10分で容器がいっぱいになりました。
 さて、同じ容器に2つの細胞を入れて培養すると、どれだけの時間で容器がいっぱいになるでしょうか?

《答3》
 「1個入れて10分でいっぱい」なら「2個入れれば…5分?」と思ったのではないですか?
 でも残念ながら,それは間違いです。「後者は前者に比べて、1秒先行している」わけです。
 ですから「後者で容器がいっぱいになるのは、前者より1秒早い」ことになります。
 というわけで、答えは「9 分 59 秒」です。

 この増え方は、関数でいうと指数関数 y = 2x です。俗に言う「ねずみ算」と同じで、時間がたてばたつほど急激に増えていきます。その感覚がつかめているでしょうか。容器がいっぱいになってからあと1分放置するととんでもないことになりますから、10秒以内に始末してくださいね。



【問4】
 アルファベット(26文字)の大文字・小文字と数字の10文字と記号2つ(+と*など)をあわせると 64(=26)文字になります。これら64種類の文字を6個並べてパスワードを作ります。
 さて、パスワードを破るために、6文字の文字列を辞書式に順番に入力することを想定しましょう。コンピュータを使って1秒間に1通りを試みるとして、また1年=3千2百万秒として計算すると、全ての場合を試みるのにどれくらいの時間がかかるでしょうか。

《答4》
 64(=26)種類の文字を6個並べるときの異なる場合の数は (26)6 = 236 通り。
 次にザックリ計算して 236 = 64十億 = 640億 通り。1年=3200万秒の間に3200万回入力すると、
 全通りを試みるのに 640億 通り÷3200万 通り/年 =「2000 年」かかります。

 つまり、辞書式攻撃でパスワードを破ることは、現実には不可能だということです。もちろん名前や誕生日など想像されやすい文字列はその限りではありませんが、ランダムな文字列であれば6文字で十分だと言えるでしょう。



 デジタルってすごいですね。余談ですが、今から「259 秒前」に何が起きたか、知っていますか?
 実は、宇宙が誕生したんです。137億年を秒に直して、2の何乗の形にしてみたら、こうなりました。でも、このように書くと、宇宙ができたのって、ついこの前のような気がしてくるから不思議です。


0 件のコメント:

コメントを投稿