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