public BigInteger FlipBit( int n) { if (n < 0) throw new ArithmeticException("Bit address less than zero"); // TODO Handle negative values and zero if (sign > 0 && n < (BitLength - 1)) return FlipExistingBit(n); return Xor(One.ShiftLeft(n)); }