Hi all,
Is there a Rotate Bits Right in Ruby ?
Or how can I do that please.
Thanks
Hi all,
Is there a Rotate Bits Right in Ruby ?
Or how can I do that please.
Thanks
ROR is rotate right.
Here's a C implementation that could be ported to Ruby.
Ruby does have the
operators
Some facts:
<<
and >>
to shift, but no built-in rotate operator. You have to fake it.Fixnum
class automatically promotes to Bignum
when the value exceeds the machine word size. This includes numbers that would fit in an unsigned word but not a signed word -- for example, 0xffffffff
is a positive Bignum
, not a negative Fixnum
.So if you want a rotate operation, you a) have to write it using the shift operators, b) either hardcode 32 or 64 bits or ask Fixnum
for the word size, and c) accept that the result might end up being a Bignum
.
That being said, this might work:
class Integer
def ror count
(self >> count) | (self << (32 - count)) & 0xFFFFFFFF
end
end
>> printf "0x%x\n", (0x01234567.ror 4)
0x70123456