Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ RightShift()

BitArray System.Collections.BitArray.RightShift ( int count)
inline

Definition at line 734 of file BitArray.cs.

735 {
736 if (count <= 0)
737 {
738 if (count < 0)
739 {
740 throw new ArgumentOutOfRangeException("count", count, System.SR.ArgumentOutOfRange_NeedNonNegNum);
741 }
742 _version++;
743 return this;
744 }
745 int num = 0;
746 int int32ArrayLengthFromBitLength = GetInt32ArrayLengthFromBitLength(m_length);
747 if (count < m_length)
748 {
749 int remainder;
750 int num2 = Div32Rem(count, out remainder);
751 Div32Rem(m_length, out var remainder2);
752 if (remainder == 0)
753 {
754 uint num3 = uint.MaxValue >> 32 - remainder2;
755 m_array[int32ArrayLengthFromBitLength - 1] &= (int)num3;
756 Array.Copy(m_array, num2, m_array, 0, int32ArrayLengthFromBitLength - num2);
757 num = int32ArrayLengthFromBitLength - num2;
758 }
759 else
760 {
761 int num4 = int32ArrayLengthFromBitLength - 1;
762 while (num2 < num4)
763 {
764 uint num5 = (uint)m_array[num2] >> remainder;
765 int num6 = m_array[++num2] << 32 - remainder;
766 m_array[num++] = num6 | (int)num5;
767 }
768 uint num7 = uint.MaxValue >> 32 - remainder2;
769 num7 &= (uint)m_array[num2];
770 m_array[num++] = (int)(num7 >> remainder);
771 }
772 }
773 m_array.AsSpan(num, int32ArrayLengthFromBitLength - num).Clear();
774 _version++;
775 return this;
776 }
static int GetInt32ArrayLengthFromBitLength(int n)
Definition BitArray.cs:988
static int Div32Rem(int number, out int remainder)
Definition BitArray.cs:1003
static string ArgumentOutOfRange_NeedNonNegNum
Definition SR.cs:32
Definition SR.cs:7

References System.Collections.BitArray._version, System.SR.ArgumentOutOfRange_NeedNonNegNum, System.Array.Copy(), System.count, System.Collections.BitArray.Div32Rem(), System.Collections.BitArray.GetInt32ArrayLengthFromBitLength(), System.Collections.BitArray.m_array, and System.Collections.BitArray.m_length.