public static int NumberOfTrailingZeros(this int n) { Debug.Assert(n != 0); uint i = (uint)n; int zeros = 0; while ((i & 1) == 0) { zeros++; i >>= 1; } return zeros; }