BER圧縮整数のデコードを実装していますが、最近は大きな整数のビット演算に関するJavaScriptの動作が変わっています。大きな整数を使用したビット演算
例えば:
var a = 17516032; // has 25 bits
alert(a << 7) // outputs -2052915200
alert(a * 128) // outputs 2242052096
alert(2242052096 >> 16) // outputs -31325
alert(2242052096/65536) // outputs 34211
最初の回避策(代わりに、左シフトの乗算)が許容される一方で、第二はありません。
どうしてですか?どのようにそれに耐える?
私は、部門が受け入れられない理由を疑ったことはありませんか? – Guffa
@ Guffa私は、32ビット整数だけでなく、いくつかの一般的なアプローチが必要です。 –
整数は除算が行われません。浮動小数点数で実行されるため、私はあなたの議論を理解していません。さらに、倍精度の浮動小数点数は53ビットの整数しか表現できないため、BERで圧縮された数値をデコードする必要はありません。 – Guffa