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

◆ operator|()

static BigInteger System.Numerics.BigInteger.operator| ( BigInteger left,
BigInteger right )
inlinestatic

Definition at line 1628 of file BigInteger.cs.

1629 {
1630 if (left.IsZero)
1631 {
1632 return right;
1633 }
1634 if (right.IsZero)
1635 {
1636 return left;
1637 }
1638 if (left._bits == null && right._bits == null)
1639 {
1640 return left._sign | right._sign;
1641 }
1642 Span<uint> scratch = stackalloc uint[32];
1643 ReadOnlySpan<uint> readOnlySpan = left.ToUInt32Span(scratch);
1644 scratch = stackalloc uint[32];
1645 ReadOnlySpan<uint> readOnlySpan2 = right.ToUInt32Span(scratch);
1646 uint[] array = new uint[Math.Max(readOnlySpan.Length, readOnlySpan2.Length)];
1647 uint num = ((left._sign < 0) ? uint.MaxValue : 0u);
1648 uint num2 = ((right._sign < 0) ? uint.MaxValue : 0u);
1649 for (int i = 0; i < array.Length; i++)
1650 {
1651 uint num3 = ((i < readOnlySpan.Length) ? readOnlySpan[i] : num);
1652 uint num4 = ((i < readOnlySpan2.Length) ? readOnlySpan2[i] : num2);
1653 array[i] = num3 | num4;
1654 }
1655 return new BigInteger(array);
1656 }

References System.Numerics.BigInteger.BigInteger(), System.Numerics.BigInteger._bits, System.Numerics.BigInteger._sign, System.array, System.Numerics.BigInteger.IsZero, System.ReadOnlySpan< T >.Length, System.Math.Max(), and System.Numerics.BigInteger.ToUInt32Span().