トップ «前の日記(2011-01-01(Sat)) 最新 次の日記(2011-01-12(Wed))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2011-01-11(Tue) 晴れてて、とても寒かった

気紛れにJavaScript

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や内容が変った場合はあしからず。

index.htmlは ここから。