В настоящее время я конвертирую алгоритм из Java в Ruby, и я столкнулся с некоторым затруднением из-за отсутствия переполнения целых чисел в Ruby.
Скажем, у меня есть значение 2663860877, это больше, чем максимальное целое число 2147483648.
В Java это оборачивается, и я должен получить -1631106419.
Я нашел этот фрагмент кода, но он не работает:
def force_overflow(i)
if i < -2147483648
-(-(i) & 0xffffffff)
elsif i > 2147483647
i & 0xffffffff
else
i
end
end
И переменная не приводит к отрицательному значению, как вы ожидаете.