class Integer
for older rubbies … slow but works … >2.1.0 supports this and is much faster no need to improve as 1.9x is no longer supported
Public Instance Methods
bit_length()
click to toggle source
# File lib/setfu.rb, line 1232 def bit_length pos = 0 n = self loop do break if n == 0 break if n == -1 n >>= 1 pos += 1 end return pos end
lsb_bit_position()
click to toggle source
# File lib/setfu.rb, line 1247 def lsb_bit_position return nil if zero? pos = 0 n = self while (n & 0xffffffffffffffff) == 0 n >>= 64 pos += 64 end while (n & 0xff) == 0 n >>= 8 pos += 8 end mask = 1 loop do break if mask == (n & mask) mask <<= 1 pos += 1 end return pos end
msb_bit_position()
click to toggle source
# File lib/setfu.rb, line 1267 def msb_bit_position t = bit_length return t.zero? ? nil : t-1 end