Jos*_*Lee 15
一些事实:
<<和>>移位,但没有内置的旋转运算符.你必须假装它.Fixnum类会自动升级Bignum.这包括适合无符号字但不是有符号字的数字 - 例如,0xffffffff是正数Bignum,而不是负数Fixnum.所以,如果你想有一个旋转的操作,你)必须使用移位运算符,B)手动编码32个或64位,或要求写Fixnum了字的大小,以及c)接受的结果可能最终是一个Bignum.
话虽这么说,这可能会奏效:
class Integer
def ror count
(self >> count) | (self << (32 - count)) & 0xFFFFFFFF
end
end
Run Code Online (Sandbox Code Playgroud)
>> printf "0x%x\n", (0x01234567.ror 4)
0x70123456
Run Code Online (Sandbox Code Playgroud)