private BigInteger FlipExistingBit(
int n)
{
Debug.Assert(sign > 0);
Debug.Assert(n >= 0);
Debug.Assert(n < BitLength - 1);
int[] mag = (int[]) this.magnitude.Clone();
mag[mag.Length - 1 - (n >> 5)] ^= (1 << (n & 31)); // Flip bit
//mag[mag.Length - 1 - (n / 32)] ^= (1 << (n % 32));
return new BigInteger(this.sign, mag, false);
}
}