Lidgren.Network.NetBigInteger.DivideAndRemainder C# (CSharp) Méthode

DivideAndRemainder() public méthode

public DivideAndRemainder ( NetBigInteger val ) : Lidgren.Network.NetBigInteger[]
val NetBigInteger
Résultat Lidgren.Network.NetBigInteger[]
        public NetBigInteger[] DivideAndRemainder(
			NetBigInteger val)
        {
            if (val.m_sign == 0)
                throw new ArithmeticException("Division by zero error");

            NetBigInteger[] biggies = new NetBigInteger[2];

            if (m_sign == 0)
            {
                biggies[0] = Zero;
                biggies[1] = Zero;
            }
            else if (val.QuickPow2Check()) // val is power of two
            {
                int e = val.Abs().BitLength - 1;
                NetBigInteger quotient = Abs().ShiftRight(e);
                int[] remainder = LastNBits(e);

                biggies[0] = val.m_sign == m_sign ? quotient : quotient.Negate();
                biggies[1] = new NetBigInteger(m_sign, remainder, true);
            }
            else
            {
                int[] remainder = (int[])m_magnitude.Clone();
                int[] quotient = Divide(remainder, val.m_magnitude);

                biggies[0] = new NetBigInteger(m_sign * val.m_sign, quotient, true);
                biggies[1] = new NetBigInteger(m_sign, remainder, true);
            }

            return biggies;
        }