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

◆ ShiftLeft()

unsafe void System.Number.BigInteger.ShiftLeft ( uint shift)
inline

Definition at line 625 of file Number.cs.

626 {
627 int length = _length;
628 if (length == 0 || shift == 0)
629 {
630 return;
631 }
632 uint remainder;
633 uint num = DivRem32(shift, out remainder);
634 int num2 = length - 1;
635 int num3 = num2 + (int)num;
636 if (remainder == 0)
637 {
638 while (num2 >= 0)
639 {
640 _blocks[num3] = _blocks[num2];
641 num2--;
642 num3--;
643 }
644 _length += (int)num;
645 Clear(num);
646 return;
647 }
648 num3++;
649 _length = num3 + 1;
650 uint num4 = 32 - remainder;
651 uint num5 = 0u;
652 uint num6 = _blocks[num2];
653 uint num7 = num6 >> (int)num4;
654 while (num2 > 0)
655 {
656 _blocks[num3] = num5 | num7;
657 num5 = num6 << (int)remainder;
658 num2--;
659 num3--;
660 num6 = _blocks[num2];
661 num7 = num6 >> (int)num4;
662 }
663 _blocks[num3] = num5 | num7;
664 _blocks[num3 - 1] = num6 << (int)remainder;
665 Clear(num);
666 if (_blocks[_length - 1] == 0)
667 {
668 _length--;
669 }
670 }
static uint DivRem32(uint value, out uint remainder)
Definition Number.cs:699
unsafe fixed uint _blocks[115]
Definition Number.cs:51

References System.Number.BigInteger._blocks, System.Number.BigInteger._length, System.Clear, System.Number.BigInteger.DivRem32(), and System.length.

Referenced by System.Number.Dragon4().