Here is the current significand normalization loop below in the 
BigDecimal(double, MathContext) constructor:
        // Normalize
        while ((significand & 1) == 0) { // i.e., significand is even
            significand >>= 1;
            exponent++;
        }

Here is a better way to normalize the significand in the BigDecimal(double, 
MathContext) constructor:
        int significandTz = Long.numberOfTrailingZeros(significand);
        significand >>= significandTz;
        exponent += significandTz;

Reply via email to