Module: Hyperll::Util
- Included in:
- HyperLogLogPlus, RegisterSet
- Defined in:
- lib/hyperll/util.rb
Constant Summary collapse
- INT_MASK =
0xFFFFFFFF
- INTEGER_SIZE =
32- POWERS_OF_TWO =
0.upto(32).map { |i| 2**i }.freeze
Instance Method Summary collapse
Instance Method Details
#number_of_leading_zeros(x) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/hyperll/util.rb', line 8 def number_of_leading_zeros(x) return 32 if x == 0 n = 0 if x <= 0x0000FFFF n += 16 x *= POWERS_OF_TWO[16] end if x <= 0x00FFFFFF n += 8; x *= POWERS_OF_TWO[8] end if x <= 0x0FFFFFFF n += 4 x *= POWERS_OF_TWO[4] end if x <= 0x3FFFFFFF n += 2 x *= POWERS_OF_TWO[2] end if x <= 0x7FFFFFFF n += 1 end n end |