private static void ShiftRightOneInPlace(
int start,
int[] mag)
{
int i = mag.Length;
int m = mag[i - 1];
while (--i > start)
{
int next = mag[i - 1];
mag[i] = ((int)((uint)m >> 1)) | (next << 31);
m = next;
}
mag[start] = (int)((uint)mag[start] >> 1);
}