18. 2のべき乗

同じ数値を足し合わせて得られた値を2つ足し合わせて、どこまでいけるか計算してみたよとノートを見せてくれた息子。

1 + 1 = 2
2 + 2 = 4
4 + 4 = 8
  ・
  ・
  ・

これは2進数の各桁なんだよと教えてしまいたくなるけど、まだ早いと思うので教えるのは今度にして、今回はコンピュータを使って同じ計算を行うサンプルをつくってみた。

はじめは何だかよく分からなくても、繰り返し続けていくうちにきっと何かひらめくときがくるはず。
そのときが訪れることを願って、これからも短いサンプルを書いて、
息子に教えていきたいと思う。

リスト18: lesson18.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Lesson18 Binaries</title>
  </head>
  <body>
    <div id="text"></div>
    <script>
      let value = "<table border='0'>";
      for (let i=0, a=1; i<=50; i++) {
        value += "<tr>"
              + "<td>2<sup>" + i + "</sup></td>"
              + "<td>=</td>"
              + "<td align='right'>" + a + "</td>"
              + "</tr>";
        a *= 2;
      }
      value += "</table>";
      document.getElementById("text").innerHTML = value;
    </script>
  </body>
</html>

実行結果

20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
210 = 1024
211 = 2048
212 = 4096
213 = 8192
214 = 16384
215 = 32768
216 = 65536
217 = 131072
218 = 262144
219 = 524288
220 = 1048576
221 = 2097152
222 = 4194304
223 = 8388608
224 = 16777216
225 = 33554432
226 = 67108864
227 = 134217728
228 = 268435456
229 = 536870912
230 = 1073741824
231 = 2147483648
232 = 4294967296
233 = 8589934592
234 = 17179869184
235 = 34359738368
236 = 68719476736
237 = 137438953472
238 = 274877906944
239 = 549755813888
240 = 1099511627776
241 = 2199023255552
242 = 4398046511104
243 = 8796093022208
244 = 17592186044416
245 = 35184372088832
246 = 70368744177664
247 = 140737488355328
248 = 281474976710656
249 = 562949953421312
250 = 1125899906842624