В настоящее время я конвертирую приложение Visual Basic в Ruby, потому что мы переносим его в Интернет. Однако при преобразовании некоторых алгоритмов я столкнулся с проблемой сдвига битов.
Насколько я понимаю, проблема заключается в маске размера, которую VB применяет к целочисленным типам (как объяснено Здесь ). На практике Ruby не различает эти типы.
Итак, проблема:
Visual Basic
Dim i As Integer = 182
WriteLine(i << 24) '-1241513984
рубин
puts 182 << 24 # 3053453312
Я гуглил и читал о сдвиге битов в последние часы, но не нашел пути или даже направления для решения этой проблемы.