Ruby 中有右旋转位吗?
或者请问我该怎么做。
Thanks
一些事实:
- Ruby 有运算符
<<
and >>
移位,但没有内置旋转运算符。你必须伪造它。
- Ruby's
Fixnum
类自动升级为Bignum
当该值超过机器字大小时。这包括适合无符号单词但不适合有符号单词的数字 - 例如,0xffffffff
是一个积极的Bignum
,不是负数Fixnum
.
因此,如果您想要旋转操作,您 a) 必须使用移位运算符来编写它,b) 硬编码 32 或 64 位或询问Fixnum
对于字长,c) 接受结果可能最终是Bignum
.
话虽这么说,这可能有效:
class Integer
def ror count
(self >> count) | (self << (32 - count)) & 0xFFFFFFFF
end
end
>> printf "0x%x\n", (0x01234567.ror 4)
0x70123456
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)