Actualmente estoy convirtiendo un algoritmo de Java a Ruby, y me he topado un poco con la falta de desbordamiento de enteros en Ruby.¿Cómo emulo el desbordamiento de enteros en una variable de Fixnum?
Digamos que tiene un valor de 2663860877, esto es más grande que el entero máximo 2147483648.
En Java, que se envuelve alrededor y que debe recibir -1631106419.
me encontré con este fragmento de código, pero no parece estar funcionando:
def force_overflow(i)
if i < -2147483648
-(-(i) & 0xffffffff)
elsif i > 2147483647
i & 0xffffffff
else
i
end
end
And'ing la variable no fuerce negativa como cabría esperar.
Es posible que desee considerar volver a implementar el algoritmo como un todo en lugar de tratar de transcribir Java para Ruby. Los números en Ruby son números, no son un contenedor conveniente para una secuencia de bits. –