僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
2の53乗(9,007,199,254,740,992 = 9007兆1992億5474万0992) より大きい整数の取り扱いの例。
<html> <script type="text/javascript"> function power(foo, bar) { baz = foo; while(bar > 1) { foo = foo * baz; bar--; } return foo; } qux = 50; while (qux < 55){ document.write("2 ** " + qux + " - 1 = " + (power(2, qux) - 1) + "<br>"); document.write("2 ** " + qux + " + 1 = " + (power(2, qux) + 1) + "<br>"); qux++; } </script> </html>
結果。
2 ** 50 - 1 = 1125899906842623 2 ** 50 + 1 = 1125899906842625 2 ** 51 - 1 = 2251799813685247 2 ** 51 + 1 = 2251799813685249 2 ** 52 - 1 = 4503599627370495 2 ** 52 + 1 = 4503599627370497 2 ** 53 - 1 = 9007199254740991 2 ** 53 + 1 = 9007199254740992 2 ** 54 - 1 = 18014398509481984 2 ** 54 + 1 = 18014398509481984
2**53 に1を足してみたが、足す前と同じ大きさになった。
二つ足して、ようやく違いが表示された。
しかし、両者の差は、いずれもゼロだった。
qux = 53; var1 = power(2, qux) + 2 ; var2 = power(2, qux); if (var1 == var2 ) { document.write("Same.<br>"); } else { document.write("var1 is larger.<br>"); } document.write(var1 - var1);
var1 is larger. 0
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。