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 1602 of file BigInteger.cs.

1603 {
1604 if (left.IsZero || right.IsZero)
1605 {
1606 return Zero;
1607 }
1608 if (left._bits == null && right._bits == null)
1609 {
1610 return left._sign & right._sign;
1611 }
1612 Span<uint> scratch = stackalloc uint[32];
1613 ReadOnlySpan<uint> readOnlySpan = left.ToUInt32Span(scratch);
1614 scratch = stackalloc uint[32];
1615 ReadOnlySpan<uint> readOnlySpan2 = right.ToUInt32Span(scratch);
1616 uint[] array = new uint[Math.Max(readOnlySpan.Length, readOnlySpan2.Length)];
1617 uint num = ((left._sign < 0) ? uint.MaxValue : 0u);
1618 uint num2 = ((right._sign < 0) ? uint.MaxValue : 0u);
1619 for (int i = 0; i < array.Length; i++)
1620 {
1621 uint num3 = ((i < readOnlySpan.Length) ? readOnlySpan[i] : num);
1622 uint num4 = ((i < readOnlySpan2.Length) ? readOnlySpan2[i] : num2);
1623 array[i] = num3 & num4;
1624 }
1625 return new BigInteger(array);
1626 }
static BigInteger Zero
Definition BigInteger.cs:32

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(), System.Numerics.BigInteger.ToUInt32Span(), and System.Numerics.BigInteger.Zero.