code: public static final int log2floor(int value) throws ArithmeticException
  	{
  		if (value == 0) {
  			throw new ArithmeticException("Logarithm of zero is undefined.");
  		}
  		
  		int log = 0;
  		while ((value = value >>> 1) != 0) {
  			log++;
  		}
  		
  		return log;
  	}
docs: Computes the logarithm of the given value to the base of 2, rounded down. It corresponds to the
  position of the highest non-zero bit. The position is counted, starting with 0 from the least
  significant bit to the most significant bit. For example, <code>log2floor(16) = 4</code>, and
  <code>log2floor(10) = 3</code>.
  
  @param value The value to compute the logarithm for.
  @return The logarithm (rounded down) to the base of 2.
  @throws ArithmeticException Thrown, if the given value is zero.