fix undefined shift in countLeadingZeros (#1157)

diff --git a/MathExtras.h b/MathExtras.h
index db98a2f..2be6e08 100644
--- a/MathExtras.h
+++ b/MathExtras.h
@@ -425,14 +425,17 @@
 ///   valid arguments.
 static inline unsigned int countLeadingZeros(int x)
 {
-	unsigned count = 0;
 	int i;
 	const unsigned bits = sizeof(x) * 8;
+	unsigned count = bits;
 
+	if (x < 0) {
+		return 0;
+	}
 	for (i = bits; --i; ) {
-		if (x < 0) break;
-		count++;
-		x <<= 1;
+		if (x == 0) break;
+		count--;
+		x >>= 1;
 	}
 
 	return count;