BraintreeEncryption.Library.BouncyCastle.Math.BigInteger.ShiftRightInPlace C# (CSharp) Метод

ShiftRightInPlace() приватный статический Метод

private static ShiftRightInPlace ( int start, int mag, int n ) : void
start int
mag int
n int
Результат void
		private static void ShiftRightInPlace(
			int		start,
			int[]	mag,
			int		n)
		{
			int nInts = (int)((uint)n >> 5) + start;
			int nBits = n & 0x1f;
			int magEnd = mag.Length - 1;

			if (nInts != start)
			{
				int delta = (nInts - start);

				for (int i = magEnd; i >= nInts; i--)
				{
					mag[i] = mag[i - delta];
				}
				for (int i = nInts - 1; i >= start; i--)
				{
					mag[i] = 0;
				}
			}

			if (nBits != 0)
			{
				int nBits2 = 32 - nBits;
				int m = mag[magEnd];

				for (int i = magEnd; i > nInts; --i)
				{
					int next = mag[i - 1];

					mag[i] = (int)((uint)m >> nBits) | (next << nBits2);
					m = next;
				}

				mag[nInts] = (int)((uint)mag[nInts] >> nBits);
			}
		}