5
私は現在、アルゴリズムをJavaからRubyに変換しています。私は、Rubyで整数オーバーフローの欠点を少し突きました。Fixnum変数で整数オーバーフローをエミュレートするにはどうすればよいですか?
が、これはJavaでは2147483648
最大整数よりも大きいです、私は2663860877の価値があると、それが周りにラップし、私は-1631106419を取得する必要があります。
私はこのコードのビットを見つけたが、それが動作していないようです:あなたが期待するよう
def force_overflow(i)
if i < -2147483648
-(-(i) & 0xffffffff)
elsif i > 2147483647
i & 0xffffffff
else
i
end
end
変数をAnd'ingすることは、負のそれを強制しません。
あなたが代わりにルビーへのJavaを翻字しようとしているの全体として再実装するアルゴリズムを検討する必要があります。 Rubyの数字は数字ですが、一連のビットの便利なコンテナではありません。 –