Obecnie konwertuję algorytm z Java na Ruby, i trafiłem trochę na szkopuł z brakiem całkowitej przepełnienia Ruby.Jak emulować przepełnienie liczby całkowitej w zmiennej Fixnum?
Say I mieć wartość 2663860877, jest większa niż max całkowitą 2147483648.
w Javie, owija się wokół i powinienem dostać -1631106419.
znalazłem ten kawałek kodu, ale nie wydaje się działać:
def force_overflow(i)
if i < -2147483648
-(-(i) & 0xffffffff)
elsif i > 2147483647
i & 0xffffffff
else
i
end
end
And'ing zmienna nie wymusza ona negatywna jak można się spodziewać.
Można rozważyć ponowne wdrożenie algorytmu jako całość, zamiast próbować transliterować Java do Ruby. Liczby w Ruby są liczbami, nie są wygodnym kontenerem dla sekwencji bitów. –