Class: Integer

Inherits:
Object show all
Defined in:
lib/amber/fukubukuro.rb

Instance Method Summary collapse

Instance Method Details

#logical_shift_right(positions = 1, bit_size = 32) ⇒ Object Also known as: lsr

Raises:

  • (ArgumentError)


36
37
38
39
40
41
42
43
# File 'lib/amber/fukubukuro.rb', line 36

def logical_shift_right positions = 1, bit_size = 32
  raise ArgumentError, 'negative argument for logical_shift_right' if positions < 0
  positions = positions.to_i if positions.is_a? Float
  positions = bit_size if positions > bit_size
  bits = (0...bit_size).map { |i| self[i] }.reverse
  bits = [0] * positions + bits[0, bit_size - positions]
  bits.join.to_i(2)
end