【发布时间】:2020-05-27 09:19:02
【问题描述】:
我需要在 Ruby 中将整数的 32 位左旋转 n。我正在尝试规范实现:
class Integer
def rotl32 n
return (self << n) | (self >> (32 - n))
end
end
使用大数时出现问题:结果溢出 32 位。我猜这是因为 Ruby 中整数的理论上无限大小。
如何做到不溢出?
【问题讨论】:
-
无需在标题中添加“Ruby ::”;这就是标签的用途。
-
您可以用粗体或斜体显示内容,但只有在真正需要时才这样做。强调用于引起对某事的额外注意。如果几乎所有事情都需要额外的关注,那么没有什么会得到额外的关注。 “How do I format my posts...”会有所帮助。
标签: ruby binary bit-manipulation bitwise-operators integer-overflow