private int[] LastNBits(
int n)
{
if (n < 1)
return ZeroMagnitude;
int numWords = (n + BitsPerInt - 1) / BitsPerInt;
numWords = System.Math.Min(numWords, m_magnitude.Length);
int[] result = new int[numWords];
Array.Copy(m_magnitude, m_magnitude.Length - numWords, result, 0, numWords);
int hiBits = n % 32;
if (hiBits != 0)
{
result[0] &= ~(-1 << hiBits);
}
return result;
}