タグ

2007年11月24日のブックマーク (1件)

  • [Javascript] 64ビット演算のエミュレート

    「最近記事書いてないね」って突っ込まれる。 プログラムは、たくさん書いているのですが。 ECMA-262で定義されている通り、ビット演算子は符号付き32ビット整数しか扱えない。Number型は倍精度フォーマット IEEE 754型なので64ビットまで扱えるので、結果が2の31乗以上の値になるビット演算子を扱う時には2の32乗を加算して、補正してやる必要がある。 ※ Math.pow関数など、2の53乗以上の数は誤差が出るので注意 console.log((Math.pow(2, 53)-1).toString(2)); // => 11111111111111111111111111111111111111111111111111111 console.log((Math.pow(2, 54)-1).toString(2)); // => 1000000000000000000000000