BigInteger Struktur
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine beliebig große ganze Zahl mit Vorzeichen dar.
public value class BigInteger : IComparable, IComparable<System::Numerics::BigInteger>, IEquatable<System::Numerics::BigInteger>, IFormattable
public value class BigInteger : IComparable, IComparable<System::Numerics::BigInteger>, IEquatable<System::Numerics::BigInteger>, ISpanFormattable
public value class BigInteger : IComparable<System::Numerics::BigInteger>, IEquatable<System::Numerics::BigInteger>, IParsable<System::Numerics::BigInteger>, ISpanParsable<System::Numerics::BigInteger>, System::Numerics::IAdditionOperators<System::Numerics::BigInteger, System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::IAdditiveIdentity<System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::IBinaryInteger<System::Numerics::BigInteger>, System::Numerics::IBinaryNumber<System::Numerics::BigInteger>, System::Numerics::IBitwiseOperators<System::Numerics::BigInteger, System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::IComparisonOperators<System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::IDecrementOperators<System::Numerics::BigInteger>, System::Numerics::IDivisionOperators<System::Numerics::BigInteger, System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::IEqualityOperators<System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::IIncrementOperators<System::Numerics::BigInteger>, System::Numerics::IModulusOperators<System::Numerics::BigInteger, System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::IMultiplicativeIdentity<System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::IMultiplyOperators<System::Numerics::BigInteger, System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::INumber<System::Numerics::BigInteger>, System::Numerics::INumberBase<System::Numerics::BigInteger>, System::Numerics::IShiftOperators<System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::ISignedNumber<System::Numerics::BigInteger>, System::Numerics::ISubtractionOperators<System::Numerics::BigInteger, System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::IUnaryNegationOperators<System::Numerics::BigInteger, System::Numerics::BigInteger>, System::Numerics::IUnaryPlusOperators<System::Numerics::BigInteger, System::Numerics::BigInteger>
public struct BigInteger : IComparable, IComparable<System.Numerics.BigInteger>, IEquatable<System.Numerics.BigInteger>, IFormattable
public readonly struct BigInteger : IComparable, IComparable<System.Numerics.BigInteger>, IEquatable<System.Numerics.BigInteger>, IFormattable
public readonly struct BigInteger : IComparable, IComparable<System.Numerics.BigInteger>, IEquatable<System.Numerics.BigInteger>, ISpanFormattable
public readonly struct BigInteger : IComparable<System.Numerics.BigInteger>, IEquatable<System.Numerics.BigInteger>, IParsable<System.Numerics.BigInteger>, ISpanParsable<System.Numerics.BigInteger>, System.Numerics.IAdditionOperators<System.Numerics.BigInteger,System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.IAdditiveIdentity<System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.IBinaryInteger<System.Numerics.BigInteger>, System.Numerics.IBinaryNumber<System.Numerics.BigInteger>, System.Numerics.IBitwiseOperators<System.Numerics.BigInteger,System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.IComparisonOperators<System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.IDecrementOperators<System.Numerics.BigInteger>, System.Numerics.IDivisionOperators<System.Numerics.BigInteger,System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.IEqualityOperators<System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.IIncrementOperators<System.Numerics.BigInteger>, System.Numerics.IModulusOperators<System.Numerics.BigInteger,System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.IMultiplicativeIdentity<System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.IMultiplyOperators<System.Numerics.BigInteger,System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.INumber<System.Numerics.BigInteger>, System.Numerics.INumberBase<System.Numerics.BigInteger>, System.Numerics.IShiftOperators<System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.ISignedNumber<System.Numerics.BigInteger>, System.Numerics.ISubtractionOperators<System.Numerics.BigInteger,System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.IUnaryNegationOperators<System.Numerics.BigInteger,System.Numerics.BigInteger>, System.Numerics.IUnaryPlusOperators<System.Numerics.BigInteger,System.Numerics.BigInteger>
[System.Serializable]
public struct BigInteger : IComparable, IComparable<System.Numerics.BigInteger>, IEquatable<System.Numerics.BigInteger>, IFormattable
type BigInteger = struct
interface IFormattable
type BigInteger = struct
interface ISpanFormattable
interface IFormattable
type BigInteger = struct
interface IFormattable
interface IParsable<BigInteger>
interface ISpanFormattable
interface ISpanParsable<BigInteger>
interface IAdditionOperators<BigInteger, BigInteger, BigInteger>
interface IAdditiveIdentity<BigInteger, BigInteger>
interface IBinaryInteger<BigInteger>
interface IBinaryNumber<BigInteger>
interface IBitwiseOperators<BigInteger, BigInteger, BigInteger>
interface IComparisonOperators<BigInteger, BigInteger>
interface IEqualityOperators<BigInteger, BigInteger>
interface IDecrementOperators<BigInteger>
interface IDivisionOperators<BigInteger, BigInteger, BigInteger>
interface IIncrementOperators<BigInteger>
interface IModulusOperators<BigInteger, BigInteger, BigInteger>
interface IMultiplicativeIdentity<BigInteger, BigInteger>
interface IMultiplyOperators<BigInteger, BigInteger, BigInteger>
interface INumber<BigInteger>
interface INumberBase<BigInteger>
interface ISubtractionOperators<BigInteger, BigInteger, BigInteger>
interface IUnaryNegationOperators<BigInteger, BigInteger>
interface IUnaryPlusOperators<BigInteger, BigInteger>
interface IShiftOperators<BigInteger, BigInteger>
interface ISignedNumber<BigInteger>
[<System.Serializable>]
type BigInteger = struct
interface IFormattable
Public Structure BigInteger
Implements IComparable, IComparable(Of BigInteger), IEquatable(Of BigInteger), IFormattable
Public Structure BigInteger
Implements IComparable, IComparable(Of BigInteger), IEquatable(Of BigInteger), ISpanFormattable
Public Structure BigInteger
Implements IAdditionOperators(Of BigInteger, BigInteger, BigInteger), IAdditiveIdentity(Of BigInteger, BigInteger), IBinaryInteger(Of BigInteger), IBinaryNumber(Of BigInteger), IBitwiseOperators(Of BigInteger, BigInteger, BigInteger), IComparable(Of BigInteger), IComparisonOperators(Of BigInteger, BigInteger), IDecrementOperators(Of BigInteger), IDivisionOperators(Of BigInteger, BigInteger, BigInteger), IEqualityOperators(Of BigInteger, BigInteger), IEquatable(Of BigInteger), IIncrementOperators(Of BigInteger), IModulusOperators(Of BigInteger, BigInteger, BigInteger), IMultiplicativeIdentity(Of BigInteger, BigInteger), IMultiplyOperators(Of BigInteger, BigInteger, BigInteger), INumber(Of BigInteger), INumberBase(Of BigInteger), IParsable(Of BigInteger), IShiftOperators(Of BigInteger, BigInteger), ISignedNumber(Of BigInteger), ISpanParsable(Of BigInteger), ISubtractionOperators(Of BigInteger, BigInteger, BigInteger), IUnaryNegationOperators(Of BigInteger, BigInteger), IUnaryPlusOperators(Of BigInteger, BigInteger)
- Vererbung
- Attribute
- Implementiert
-
IComparable IComparable<BigInteger> IEquatable<BigInteger> IFormattable ISpanFormattable IComparable<TOther> IComparable<TSelf> IEquatable<TOther> IEquatable<TSelf> IParsable<BigInteger> IParsable<TSelf> ISpanParsable<BigInteger> ISpanParsable<TSelf> IAdditionOperators<BigInteger,BigInteger,BigInteger> IAdditionOperators<TSelf,TSelf,TSelf> IAdditiveIdentity<BigInteger,BigInteger> IAdditiveIdentity<TSelf,TSelf> IBinaryInteger<BigInteger> IBinaryNumber<BigInteger> IBinaryNumber<TSelf> IBitwiseOperators<BigInteger,BigInteger,BigInteger> IBitwiseOperators<TSelf,TSelf,TSelf> IComparisonOperators<BigInteger,BigInteger> IComparisonOperators<TSelf,TSelf> IDecrementOperators<BigInteger> IDecrementOperators<TSelf> IDivisionOperators<BigInteger,BigInteger,BigInteger> IDivisionOperators<TSelf,TSelf,TSelf> IEqualityOperators<BigInteger,BigInteger> IEqualityOperators<TSelf,TOther> IEqualityOperators<TSelf,TSelf> IIncrementOperators<BigInteger> IIncrementOperators<TSelf> IModulusOperators<BigInteger,BigInteger,BigInteger> IModulusOperators<TSelf,TSelf,TSelf> IMultiplicativeIdentity<BigInteger,BigInteger> IMultiplicativeIdentity<TSelf,TSelf> IMultiplyOperators<BigInteger,BigInteger,BigInteger> IMultiplyOperators<TSelf,TSelf,TSelf> INumber<BigInteger> INumber<TSelf> INumberBase<BigInteger> INumberBase<TSelf> IShiftOperators<BigInteger,BigInteger> IShiftOperators<TSelf,TSelf> ISignedNumber<BigInteger> ISubtractionOperators<BigInteger,BigInteger,BigInteger> ISubtractionOperators<TSelf,TSelf,TSelf> IUnaryNegationOperators<BigInteger,BigInteger> IUnaryNegationOperators<TSelf,TSelf> IUnaryPlusOperators<BigInteger,BigInteger> IUnaryPlusOperators<TSelf,TSelf>
Hinweise
Der BigInteger Typ ist ein unveränderlicher Typ, der eine beliebig große ganze Zahl darstellt, deren Wert in der Theorie keine oberen oder unteren Grenzen aufweist. Die Mitglieder des BigInteger Typs parallel zu anderen integralen Typen (die Byte, SByteInt16Int64UInt16Int32UInt32und UInt64 Typen). Dieser Typ unterscheidet sich von den anderen integralen Typen in der .NET Framework, die einen Bereich aufweisen, der durch ihre eigenschaften MinValue MaxValue angegeben ist.
Hinweis
Da der BigInteger Typ unveränderlich ist (siehe Stummschaltbarkeit und die BigInteger-Struktur) und weil es keine oberen oder unteren Grenzen aufweist, kann ein Wert für jeden Vorgang ausgelöst werden, OutOfMemoryException der zu BigInteger einem zu großen Wert führt.
Instanziieren eines BigInteger-Objekts
Sie können ein BigInteger Objekt auf verschiedene Arten instanziieren:
Sie können das
newSchlüsselwort verwenden und einen integralen oder gleitkommabasierten Wert als Parameter für den BigInteger Konstruktor bereitstellen. (Gleitkommawerte werden abgeschnitten, bevor sie dem BigInteger.) zugewiesen werden. Im folgenden Beispiel wird veranschaulicht, wie sie dasnewSchlüsselwort zum Instanziieren BigInteger von Werten verwenden.BigInteger bigIntFromDouble = new BigInteger(179032.6541); Console.WriteLine(bigIntFromDouble); BigInteger bigIntFromInt64 = new BigInteger(934157136952); Console.WriteLine(bigIntFromInt64); // The example displays the following output: // 179032 // 934157136952Dim bigIntFromDouble As New BigInteger(179032.6541) Console.WriteLine(bigIntFromDouble) Dim bigIntFromInt64 As New BigInteger(934157136952) Console.WriteLine(bigIntFromInt64) ' The example displays the following output: ' 179032 ' 934157136952Sie können eine BigInteger Variable deklarieren und einen Wert so zuweisen, wie Sie einen numerischen Typ verwenden würden, solange dieser Wert ein integraler Typ ist. Im folgenden Beispiel wird die Zuordnung verwendet, um einen BigInteger Wert aus einem Int64Wert zu erstellen.
long longValue = 6315489358112; BigInteger assignedFromLong = longValue; Console.WriteLine(assignedFromLong); // The example displays the following output: // 6315489358112Dim longValue As Long = 6315489358112 Dim assignedFromLong As BigInteger = longValue Console.WriteLine(assignedFromLong) ' The example displays the following output: ' 6315489358112Sie können einem BigInteger Objekt einen Dezimalwert oder einen Gleitkommawert zuweisen, wenn Sie den Wert zuweisen oder zuerst konvertieren. Im folgenden Beispiel werden explizit (in C#) oder in Visual Basic (in Visual Basic) ein Double und ein Wert in einen BigIntegerDecimal Wert konvertiert.
BigInteger assignedFromDouble = (BigInteger) 179032.6541; Console.WriteLine(assignedFromDouble); BigInteger assignedFromDecimal = (BigInteger) 64312.65m; Console.WriteLine(assignedFromDecimal); // The example displays the following output: // 179032 // 64312Dim assignedFromDouble As BigInteger = CType(179032.6541, BigInteger) Console.WriteLine(assignedFromDouble) Dim assignedFromDecimal As BigInteger = CType(64312.65d, BigInteger) Console.WriteLine(assignedFromDecimal) ' The example displays the following output: ' 179032 ' 64312
Mit diesen Methoden können Sie ein BigInteger Objekt instanziieren, dessen Wert sich nur im Bereich eines der vorhandenen numerischen Typen befindet. Sie können ein BigInteger Objekt instanziieren, dessen Wert den Bereich der vorhandenen numerischen Typen auf drei Arten überschreiten kann:
Sie können das
newSchlüsselwort verwenden und ein Bytearray beliebiger Größe für den BigInteger.BigInteger Konstruktor bereitstellen. Beispiel:byte[] byteArray = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; BigInteger newBigInt = new BigInteger(byteArray); Console.WriteLine("The value of newBigInt is {0} (or 0x{0:x}).", newBigInt); // The example displays the following output: // The value of newBigInt is 4759477275222530853130 (or 0x102030405060708090a).Dim byteArray() As Byte = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0} Dim newBigInt As New BigInteger(byteArray) Console.WriteLine("The value of newBigInt is {0} (or 0x{0:x}).", newBigInt) ' The example displays the following output: ' The value of newBigInt is 4759477275222530853130 (or 0x102030405060708090a).Sie können die Methoden aufrufen, um die Parse TryParse Zeichenfolgendarstellung einer Zahl in eine BigIntegerZahl zu konvertieren. Beispiel:
string positiveString = "91389681247993671255432112000000"; string negativeString = "-90315837410896312071002088037140000"; BigInteger posBigInt = 0; BigInteger negBigInt = 0; try { posBigInt = BigInteger.Parse(positiveString); Console.WriteLine(posBigInt); } catch (FormatException) { Console.WriteLine("Unable to convert the string '{0}' to a BigInteger value.", positiveString); } if (BigInteger.TryParse(negativeString, out negBigInt)) Console.WriteLine(negBigInt); else Console.WriteLine("Unable to convert the string '{0}' to a BigInteger value.", negativeString); // The example displays the following output: // 9.1389681247993671255432112E+31 // -9.0315837410896312071002088037E+34Dim positiveString As String = "91389681247993671255432112000000" Dim negativeString As string = "-90315837410896312071002088037140000" Dim posBigInt As BigInteger = 0 Dim negBigInt As BigInteger = 0 Try posBigInt = BigInteger.Parse(positiveString) Console.WriteLine(posBigInt) Catch e As FormatException Console.WriteLine("Unable to convert the string '{0}' to a BigInteger value.", _ positiveString) End Try If BigInteger.TryParse(negativeString, negBigInt) Then Console.WriteLine(negBigInt) Else Console.WriteLine("Unable to convert the string '{0}' to a BigInteger value.", _ negativeString) End If ' The example displays the following output: ' 9.1389681247993671255432112E+31 ' -9.0315837410896312071002088037E+34Sie können eine
static(Sharedin Visual Basic) BigInteger -Methode aufrufen, die einen Vorgang auf einem numerischen Ausdruck ausführt und ein berechnetes BigInteger Ergebnis zurückgibt. Im folgenden Beispiel wird dies durch Zuweisen UInt64.MaxValue und Zuweisen des Ergebnisses zu einem BigInteger.BigInteger number = BigInteger.Pow(UInt64.MaxValue, 3); Console.WriteLine(number); // The example displays the following output: // 6277101735386680762814942322444851025767571854389858533375Dim number As BigInteger = BigInteger.Pow(UInt64.MaxValue, 3) Console.WriteLine(number) ' The example displays the following output: ' 6277101735386680762814942322444851025767571854389858533375
Der nicht initialisierte Wert eines Werts BigInteger ist Zero.
Ausführen von Vorgängen auf BigInteger-Werten
Sie können eine BigInteger Instanz verwenden, da Sie einen anderen Integraltyp verwenden würden. BigInteger überlastet die standardmäßigen numerischen Operatoren, damit Sie grundlegende mathematische Vorgänge wie Ergänzung, Subtraktion, Division, Multiplikation und unary Negation ausführen können. Sie können auch die standardmäßigen numerischen Operatoren verwenden, um zwei BigInteger Werte miteinander zu vergleichen. Wie die anderen integralen Typen BigInteger unterstützt auch die bitzeigerAnd, XOr``Ordie linke Schicht und die rechten Umschaltoperatoren. Für Sprachen, die benutzerdefinierte Operatoren nicht unterstützen, bietet die BigInteger Struktur auch entsprechende Methoden zum Ausführen mathematischer Vorgänge. Dazu gehören Add, DivideMultiplyNegateSubtractund mehrere andere.
Viele Elemente der BigInteger Struktur entsprechen direkt den Mitgliedern der anderen integralen Typen. Fügt außerdem Mitglieder wie folgt hinzu BigInteger :
Sign, der einen Wert zurückgibt, der das Zeichen eines BigInteger Werts angibt.
Abs, der den absoluten Wert eines BigInteger Werts zurückgibt.
DivRem, das sowohl den Quotienten als auch den Rest eines Bereichsvorgangs zurückgibt.
GreatestCommonDivisor, die den größten gemeinsamen Divisor von zwei BigInteger Werten zurückgibt.
Viele dieser zusätzlichen Elemente entsprechen den Mitgliedern der Math Klasse, die die Funktionalität zum Arbeiten mit den grundtypen numerischen Typen bereitstellt.
Stummschaltung und BigInteger-Struktur
Im folgenden Beispiel wird ein BigInteger Objekt instanziiert, und dann wird der Wert durch eine instanziiert.
BigInteger number = BigInteger.Multiply(Int64.MaxValue, 3);
number++;
Console.WriteLine(number);
Dim number As BigInteger = BigInteger.Multiply(Int64.MaxValue, 3)
number += 1
Console.WriteLine(number)
Obwohl dieses Beispiel den Wert des vorhandenen Objekts ändert, ist dies nicht der Fall. BigInteger Objekte sind unveränderlich, was bedeutet, dass intern die allgemeine Sprachlaufzeit ein neues BigInteger Objekt erstellt und ihm einen Wert zuweisen, der größer als sein vorheriger Wert ist. Dieses neue Objekt wird dann an den Aufrufer zurückgegeben.
Hinweis
Die anderen numerischen Typen in .NET sind ebenfalls unveränderlich. Da der BigInteger Typ jedoch keine oberen oder unteren Grenzen aufweist, kann seine Werte extrem groß werden und eine messbare Auswirkung auf die Leistung haben.
Obwohl dieser Prozess für den Anrufer transparent ist, tritt eine Leistungsstrafe auf. In einigen Fällen, insbesondere wenn wiederholte Vorgänge in einer Schleife mit sehr großen BigInteger Werten ausgeführt werden, kann diese Leistungsstrafe erheblich sein. Im folgenden Beispiel wird ein Vorgang z. B. wiederholt bis zu einer Million Mal ausgeführt, und ein BigInteger Wert wird bei jedem Erfolgreichen des Vorgangs von einem Wert erhöht.
BigInteger number = Int64.MaxValue ^ 5;
int repetitions = 1000000;
// Perform some repetitive operation 1 million times.
for (int ctr = 0; ctr <= repetitions; ctr++)
{
// Perform some operation. If it fails, exit the loop.
if (! SomeOperationSucceeds()) break;
// The following code executes if the operation succeeds.
number++;
}
Dim number As BigInteger = Int64.MaxValue ^ 5
Dim repetitions As Integer = 1000000
' Perform some repetitive operation 1 million times.
For ctr As Integer = 0 To repetitions
' Perform some operation. If it fails, exit the loop.
If Not SomeOperationSucceeds() Then Exit For
' The following code executes if the operation succeeds.
number += 1
Next
In diesem Fall können Sie die Leistung verbessern, indem Sie alle Zwischenzuweisungen an eine Int32 Variable ausführen. Der endgültige Wert der Variable kann dann dem BigInteger Objekt zugewiesen werden, wenn die Schleife beendet wird. Dies wird im folgenden Beispiel veranschaulicht.
BigInteger number = Int64.MaxValue ^ 5;
int repetitions = 1000000;
int actualRepetitions = 0;
// Perform some repetitive operation 1 million times.
for (int ctr = 0; ctr <= repetitions; ctr++)
{
// Perform some operation. If it fails, exit the loop.
if (! SomeOperationSucceeds()) break;
// The following code executes if the operation succeeds.
actualRepetitions++;
}
number += actualRepetitions;
Dim number As BigInteger = Int64.MaxValue ^ 5
Dim repetitions As Integer = 1000000
Dim actualRepetitions As Integer = 0
' Perform some repetitive operation 1 million times.
For ctr As Integer = 0 To repetitions
' Perform some operation. If it fails, exit the loop.
If Not SomeOperationSucceeds() Then Exit For
' The following code executes if the operation succeeds.
actualRepetitions += 1
Next
number += actualRepetitions
Arbeiten mit Byte-Arrays und Hexadezimalzeichenfolgen
Wenn Sie Werte in Bytearrays konvertieren oder Bytearrays in BigInteger Werte konvertierenBigInteger, müssen Sie die Reihenfolge von Bytes berücksichtigen. Die BigInteger Struktur erwartet, dass die einzelnen Bytes in einem Bytearray in kleiner endischer Reihenfolge angezeigt werden (das heißt, die unteren Bytes des Werts vor dem Höherreihenfolgen-Bytes). Sie können einen BigInteger Wert umrunden, indem Sie die ToByteArray Methode aufrufen und dann das resultierende Bytearray an den BigInteger(Byte[]) Konstruktor übergeben, wie das folgende Beispiel zeigt.
BigInteger number = BigInteger.Pow(Int64.MaxValue, 2);
Console.WriteLine(number);
// Write the BigInteger value to a byte array.
byte[] bytes = number.ToByteArray();
// Display the byte array.
foreach (byte byteValue in bytes)
Console.Write("0x{0:X2} ", byteValue);
Console.WriteLine();
// Restore the BigInteger value from a Byte array.
BigInteger newNumber = new BigInteger(bytes);
Console.WriteLine(newNumber);
// The example displays the following output:
// 8.5070591730234615847396907784E+37
// 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x3F
//
// 8.5070591730234615847396907784E+37
Dim number As BigInteger = BigInteger.Pow(Int64.MaxValue, 2)
Console.WriteLine(number)
' Write the BigInteger value to a byte array.
Dim bytes() As Byte = number.ToByteArray()
' Display the byte array.
For Each byteValue As Byte In bytes
Console.Write("0x{0:X2} ", byteValue)
Next
Console.WriteLine()
' Restore the BigInteger value from a Byte array.
Dim newNumber As BigInteger = New BigInteger(bytes)
Console.WriteLine(newNumber)
' The example displays the following output:
' 8.5070591730234615847396907784E+37
' 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x3F
'
' 8.5070591730234615847396907784E+37
Um einen Wert aus einem Bytearray zu instanziieren, der einen BigInteger Wert eines anderen integralen Typs darstellt, können Sie den integralen Wert an die BitConverter.GetBytes Methode übergeben und dann das resultierende Bytearray an den BigInteger(Byte[]) Konstruktor übergeben. Im folgenden Beispiel wird ein Wert aus einem Bytearray instanziiert, der einen BigInteger Int16 Wert darstellt.
short originalValue = 30000;
Console.WriteLine(originalValue);
// Convert the Int16 value to a byte array.
byte[] bytes = BitConverter.GetBytes(originalValue);
// Display the byte array.
foreach (byte byteValue in bytes)
Console.Write("0x{0} ", byteValue.ToString("X2"));
Console.WriteLine();
// Pass byte array to the BigInteger constructor.
BigInteger number = new BigInteger(bytes);
Console.WriteLine(number);
// The example displays the following output:
// 30000
// 0x30 0x75
// 30000
Dim originalValue As Short = 30000
Console.WriteLine(originalValue)
' Convert the Int16 value to a byte array.
Dim bytes() As Byte = BitConverter.GetBytes(originalValue)
' Display the byte array.
For Each byteValue As Byte In bytes
Console.Write("0x{0} ", byteValue.ToString("X2"))
Next
Console.WriteLine()
' Pass byte array to the BigInteger constructor.
Dim number As BigInteger = New BigInteger(bytes)
Console.WriteLine(number)
' The example displays the following output:
' 30000
' 0x30 0x75
' 30000
Die BigInteger Struktur geht davon aus, dass negative Werte mithilfe der Ergänzungsdarstellung von zwei gespeichert werden. Da die Struktur einen numerischen Wert ohne feste Länge darstellt, interpretiert der BigInteger BigInteger(Byte[]) Konstruktor immer den wichtigsten Bit des letzten Bytes im Array als Zeichenbit. Um zu verhindern, dass der BigInteger(Byte[]) Konstruktor die Ergänzungsdarstellung eines negativen Werts mit der Darstellung eines positiven Werts verwechselt, sollten positive Werte, in denen das wichtigste Bit des letzten Byte im Bytearray festgelegt wird, einen zusätzlichen Byte enthalten, dessen Wert 0 ist. Beispielsweise ist 0xC0 0xBD 0xF0 0xFF die hexadezimale Darstellung von "-1.000.000" oder "4.293.967.296". Da der wichtigste Bit des letzten Byte in diesem Array aktiviert ist, würde der Wert des Bytearrays vom BigInteger(Byte[]) Konstruktor als -1.000.000 interpretiert werden. Um einen BigInteger Wert zu instanziieren, dessen Wert positiv ist, muss ein Bytearray, dessen Elemente 0xC0 0xBD 0xF0 0xFF 0x00 an den Konstruktor übergeben werden müssen. Dies wird anhand des folgenden Beispiels veranschaulicht.
int negativeNumber = -1000000;
uint positiveNumber = 4293967296;
byte[] negativeBytes = BitConverter.GetBytes(negativeNumber);
BigInteger negativeBigInt = new BigInteger(negativeBytes);
Console.WriteLine(negativeBigInt.ToString("N0"));
byte[] tempPosBytes = BitConverter.GetBytes(positiveNumber);
byte[] positiveBytes = new byte[tempPosBytes.Length + 1];
Array.Copy(tempPosBytes, positiveBytes, tempPosBytes.Length);
BigInteger positiveBigInt = new BigInteger(positiveBytes);
Console.WriteLine(positiveBigInt.ToString("N0"));
// The example displays the following output:
// -1,000,000
// 4,293,967,296
Dim negativeNumber As Integer = -1000000
Dim positiveNumber As UInteger = 4293967296
Dim negativeBytes() As Byte = BitConverter.GetBytes(negativeNumber)
Dim negativeBigInt As New BigInteger(negativeBytes)
Console.WriteLine(negativeBigInt.ToString("N0"))
Dim tempPosBytes() As Byte = BitConverter.GetBytes(positiveNumber)
Dim positiveBytes(tempposBytes.Length) As Byte
Array.Copy(tempPosBytes, positiveBytes, tempPosBytes.Length)
Dim positiveBigInt As New BigInteger(positiveBytes)
Console.WriteLine(positiveBigInt.ToString("N0"))
' The example displays the following output:
' -1,000,000
' 4,293,967,296
Byte-Arrays, die von der ToByteArray Methode aus positiven Werten erstellt wurden, umfassen dieses zusätzliche Nullwert-Byte. Daher kann die BigInteger Struktur die Werte erfolgreich umrunden, indem Sie sie zuweisen und diese dann aus Bytearrays wiederherstellen, wie das folgende Beispiel zeigt.
BigInteger positiveValue = 15777216;
BigInteger negativeValue = -1000000;
Console.WriteLine("Positive value: " + positiveValue.ToString("N0"));
byte[] bytes = positiveValue.ToByteArray();
foreach (byte byteValue in bytes)
Console.Write("{0:X2} ", byteValue);
Console.WriteLine();
positiveValue = new BigInteger(bytes);
Console.WriteLine("Restored positive value: " + positiveValue.ToString("N0"));
Console.WriteLine();
Console.WriteLine("Negative value: " + negativeValue.ToString("N0"));
bytes = negativeValue.ToByteArray();
foreach (byte byteValue in bytes)
Console.Write("{0:X2} ", byteValue);
Console.WriteLine();
negativeValue = new BigInteger(bytes);
Console.WriteLine("Restored negative value: " + negativeValue.ToString("N0"));
// The example displays the following output:
// Positive value: 15,777,216
// C0 BD F0 00
// Restored positive value: 15,777,216
//
// Negative value: -1,000,000
// C0 BD F0
// Restored negative value: -1,000,000
Dim positiveValue As BigInteger = 15777216
Dim negativeValue As BigInteger = -1000000
Console.WriteLine("Positive value: " + positiveValue.ToString("N0"))
Dim bytes() As Byte = positiveValue.ToByteArray()
For Each byteValue As Byte In bytes
Console.Write("{0:X2} ", byteValue)
Next
Console.WriteLine()
positiveValue = New BigInteger(bytes)
Console.WriteLine("Restored positive value: " + positiveValue.ToString("N0"))
Console.WriteLine()
Console.WriteLIne("Negative value: " + negativeValue.ToString("N0"))
bytes = negativeValue.ToByteArray()
For Each byteValue As Byte In bytes
Console.Write("{0:X2} ", byteValue)
Next
Console.WriteLine()
negativeValue = New BigInteger(bytes)
Console.WriteLine("Restored negative value: " + negativeValue.ToString("N0"))
' The example displays the following output:
' Positive value: 15,777,216
' C0 BD F0 00
' Restored positive value: 15,777,216
'
' Negative value: -1,000,000
' C0 BD F0
' Restored negative value: -1,000,000
Möglicherweise müssen Sie jedoch dieses zusätzliche Nullwert-Byte-Byte zu Bytearrays hinzufügen, die dynamisch vom Entwickler erstellt werden oder von Methoden zurückgegeben werden, die nicht signierte Ganzzahlen in Bytearrays (z BitConverter.GetBytes(UInt16). B. , BitConverter.GetBytes(UInt32)und BitConverter.GetBytes(UInt64)).
Bei der Analyse einer Hexadezimalzeichenfolge gehen die BigInteger.Parse(String, NumberStyles) und BigInteger.Parse(String, NumberStyles, IFormatProvider) methoden davon aus, dass der wichtigste Bit des ersten Bytes in der Zeichenfolge festgelegt ist, oder wenn die erste Hexadezimalzahl der Zeichenfolge die unteren vier Bit eines Bytewerts darstellt, wird der Wert mithilfe der Ergänzungsdarstellung von zwei dargestellt. Beispielsweise stellen sowohl "FF01" als auch "F01" den Dezimalwert -255 dar. Um positive positive Werte von negativen Werten zu unterscheiden, sollte positive Werte eine führende Null enthalten. Die relevanten Überladungen der ToString Methode, wenn sie die Formatzeichenfolge "X" übergeben werden, fügen Sie eine führende Null zur zurückgegebenen Hexadezimalzeichenfolge für positive Werte hinzu. Dies ermöglicht es, Werte mit den Methoden und Parse Methoden umrunden ToString zu könnenBigInteger, wie im folgenden Beispiel dargestellt.
BigInteger negativeNumber = -1000000;
BigInteger positiveNumber = 15777216;
string negativeHex = negativeNumber.ToString("X");
string positiveHex = positiveNumber.ToString("X");
BigInteger negativeNumber2, positiveNumber2;
negativeNumber2 = BigInteger.Parse(negativeHex,
NumberStyles.HexNumber);
positiveNumber2 = BigInteger.Parse(positiveHex,
NumberStyles.HexNumber);
Console.WriteLine("Converted {0:N0} to {1} back to {2:N0}.",
negativeNumber, negativeHex, negativeNumber2);
Console.WriteLine("Converted {0:N0} to {1} back to {2:N0}.",
positiveNumber, positiveHex, positiveNumber2);
// The example displays the following output:
// Converted -1,000,000 to F0BDC0 back to -1,000,000.
// Converted 15,777,216 to 0F0BDC0 back to 15,777,216.
Dim negativeNumber As BigInteger = -1000000
Dim positiveNumber As BigInteger = 15777216
Dim negativeHex As String = negativeNumber.ToString("X")
Dim positiveHex As string = positiveNumber.ToString("X")
Dim negativeNumber2, positiveNumber2 As BigInteger
negativeNumber2 = BigInteger.Parse(negativeHex,
NumberStyles.HexNumber)
positiveNumber2 = BigInteger.Parse(positiveHex,
NumberStyles.HexNumber)
Console.WriteLine("Converted {0:N0} to {1} back to {2:N0}.",
negativeNumber, negativeHex, negativeNumber2)
Console.WriteLine("Converted {0:N0} to {1} back to {2:N0}.",
positiveNumber, positiveHex, positiveNumber2)
' The example displays the following output:
' Converted -1,000,000 to F0BDC0 back to -1,000,000.
' Converted 15,777,216 to 0F0BDC0 back to 15,777,216.
Die hexadezimalen Zeichenfolgen, die ToString durch Aufrufen der Methoden der anderen integralen Typen oder überladungen der Methode, die einen toBase Parameter enthalten, geben jedoch nicht das Zeichen des Werts oder des Quelldatentyps ToString an, von dem die Hexadezimalzeichenfolge abgeleitet wurde. Beim Erfolgreichen Instanziieren eines BigInteger Werts aus einer solchen Zeichenfolge ist eine zusätzliche Logik erforderlich. Im folgenden Beispiel wird eine mögliche Implementierung bereitgestellt.
using System;
using System.Globalization;
using System.Numerics;
public struct HexValue
{
public int Sign;
public string Value;
}
public class Example
{
public static void Main()
{
uint positiveNumber = 4039543321;
int negativeNumber = -255423975;
// Convert the numbers to hex strings.
HexValue hexValue1, hexValue2;
hexValue1.Value = positiveNumber.ToString("X");
hexValue1.Sign = Math.Sign(positiveNumber);
hexValue2.Value = Convert.ToString(negativeNumber, 16);
hexValue2.Sign = Math.Sign(negativeNumber);
// Round-trip the hexadecimal values to BigInteger values.
string hexString;
BigInteger positiveBigInt, negativeBigInt;
hexString = (hexValue1.Sign == 1 ? "0" : "") + hexValue1.Value;
positiveBigInt = BigInteger.Parse(hexString, NumberStyles.HexNumber);
Console.WriteLine("Converted {0} to {1} and back to {2}.",
positiveNumber, hexValue1.Value, positiveBigInt);
hexString = (hexValue2.Sign == 1 ? "0" : "") + hexValue2.Value;
negativeBigInt = BigInteger.Parse(hexString, NumberStyles.HexNumber);
Console.WriteLine("Converted {0} to {1} and back to {2}.",
negativeNumber, hexValue2.Value, negativeBigInt);
}
}
// The example displays the following output:
// Converted 4039543321 to F0C68A19 and back to 4039543321.
// Converted -255423975 to f0c68a19 and back to -255423975.
Imports System.Globalization
Imports System.Numerics
Public Structure HexValue
Public Sign As Integer
Public Value As String
End Structure
Module Example
Public Sub Main()
Dim positiveNumber As UInteger = 4039543321
Dim negativeNumber As Integer = -255423975
' Convert the numbers to hex strings.
Dim hexValue1, hexValue2 As HexValue
hexValue1.Value = positiveNumber.ToString("X")
hexValue1.Sign = Math.Sign(positiveNumber)
hexValue2.Value = Convert.ToString(negativeNumber, 16)
hexValue2.Sign = Math.Sign(negativeNumber)
' Round-trip the hexadecimal values to BigInteger values.
Dim hexString As String
Dim positiveBigInt, negativeBigInt As BigInteger
hexString = CStr(IIf(hexValue1.Sign = 1, "0", "")) + hexValue1.Value
positiveBigInt = BigInteger.Parse(hexString, NumberStyles.HexNumber)
Console.WriteLine("Converted {0} to {1} and back to {2}.",
positiveNumber, hexValue1.Value, positiveBigInt)
hexString = CStr(IIf(hexValue2.Sign = 1, "0", "")) + hexValue2.Value
negativeBigInt = BigInteger.Parse(hexString, NumberStyles.HexNumber)
Console.WriteLine("Converted {0} to {1} and back to {2}.",
negativeNumber, hexValue2.Value, negativeBigInt)
End Sub
End Module
' The example displays the following output:
' Converted 4039543321 to F0C68A19 and back to 4039543321.
' Converted -255423975 to f0c68a19 and back to -255423975.
Konstruktoren
| BigInteger(Byte[]) |
Initialisiert eine neue Instanz der BigInteger-Struktur unter Verwendung der Werte in einem Bytearray. |
| BigInteger(Decimal) |
Initialisiert eine neue Instanz der BigInteger-Struktur mit einem Decimal-Wert. |
| BigInteger(Double) |
Initialisiert eine neue Instanz der BigInteger-Struktur unter Verwendung eines Gleitkommawerts mit doppelter Genauigkeit. |
| BigInteger(Int32) |
Initialisiert eine neue Instanz der BigInteger-Struktur unter Verwendung des Werts einer 32-Bit-Ganzzahl mit Vorzeichen. |
| BigInteger(Int64) |
Initialisiert eine neue Instanz der BigInteger-Struktur unter Verwendung des Werts einer 64-Bit-Ganzzahl mit Vorzeichen. |
| BigInteger(ReadOnlySpan<Byte>, Boolean, Boolean) |
Initialisiert eine neue Instanz der BigInteger-Struktur unter Verwendung der Werte in einer schreibgeschützten Spanne von Bytes und zeigt optional die Signaturcodierung und die Endianness-Bytereihenfolge an. |
| BigInteger(Single) |
Initialisiert eine neue Instanz der BigInteger-Struktur unter Verwendung eines Gleitkommawerts mit einfacher Genauigkeit. |
| BigInteger(UInt32) |
Initialisiert eine neue Instanz der BigInteger-Struktur unter Verwendung des Werts einer 32-Bit-Ganzzahl ohne Vorzeichen. |
| BigInteger(UInt64) |
Initialisiert eine neue Instanz der BigInteger-Struktur mit dem Wert einer 64-Bit-Ganzzahl ohne Vorzeichen. |
Eigenschaften
| IsEven |
Gibt an, ob der Wert des aktuellen BigInteger-Objekts eine gerade Zahl ist. |
| IsOne |
Gibt an, ob der Wert des aktuellen BigInteger-Objekts One ist. |
| IsPowerOfTwo |
Gibt an, ob der Wert des aktuellen BigInteger-Objekts eine Potenz von Zwei ist. |
| IsZero |
Gibt an, ob der Wert des aktuellen BigInteger-Objekts Zero ist. |
| MinusOne |
Ruft einen Wert ab, der die Zahl -1 darstellt. |
| One |
Ruft einen Wert ab, der die Zahl 1 darstellt. |
| Sign |
Ruft eine Zahl ab, die das Vorzeichen (negativ, positiv, oder 0 (null)) des aktuellen BigInteger-Objekts angibt. |
| Zero |
Ruft einen Wert ab, der die Zahl null (0) darstellt. |
Methoden
| Abs(BigInteger) |
Ruft den absoluten Wert eines BigInteger-Objekts ab. |
| Add(BigInteger, BigInteger) |
Addiert zwei BigInteger-Werte und gibt das Ergebnis zurück. |
| Clamp(BigInteger, BigInteger, BigInteger) |
Klammert einen Wert auf einen inklusiven Mindest- und Maximalwert. |
| Compare(BigInteger, BigInteger) |
Vergleicht zwei BigInteger-Werte und gibt eine ganze Zahl zurück, die angibt, ob der erste Wert kleiner oder größer als der zweite Wert oder gleich dem zweiten Wert ist. |
| CompareTo(BigInteger) |
Vergleicht diese Instanz mit einem zweiten BigInteger und gibt eine ganze Zahl zurück, die angibt, ob der Wert dieser Instanz kleiner oder größer als der Wert des angegebenen Objekts ist oder mit diesem übereinstimmt. |
| CompareTo(Int64) |
Vergleicht diese Instanz mit einer 64-Bit-Ganzzahl mit Vorzeichen und gibt eine ganze Zahl zurück, die angibt, ob der Wert dieser Instanz kleiner oder größer als der Wert der 64-Bit-Ganzzahl mit Vorzeichen ist oder mit diesem übereinstimmt. |
| CompareTo(Object) |
Vergleicht diese Instanz mit einem angegebenen Objekt und gibt eine ganze Zahl zurück, die angibt, ob der Wert dieser Instanz kleiner oder größer als der Wert des angegebenen Objekts ist oder mit diesem übereinstimmt. |
| CompareTo(UInt64) |
Vergleicht diese Instanz mit einer 64-Bit-Ganzzahl ohne Vorzeichen und gibt eine ganze Zahl zurück, die angibt, ob der Wert dieser Instanz kleiner oder größer als der Wert der 64-Bit-Ganzzahl ohne Vorzeichen ist oder mit diesem übereinstimmt. |
| CopySign(BigInteger, BigInteger) |
Kopiert das Zeichen eines Werts in das Zeichen eines anderen Werts. |
| Divide(BigInteger, BigInteger) |
Dividiert einen BigInteger-Wert durch einen anderen und gibt das Ergebnis zurück. |
| DivRem(BigInteger, BigInteger) |
Berechnet den Quotienten und Rest von zwei Werten. |
| DivRem(BigInteger, BigInteger, BigInteger) |
Dividiert einen BigInteger-Wert durch einen anderen, gibt das Ergebnis zurück und gibt den Rest in einem Ausgabeparameter zurück. |
| Equals(BigInteger) |
Gibt einen Wert zurück, der angibt, ob die aktuelle Instanz und ein angegebenes BigInteger-Objekt über den gleichen Wert verfügen. |
| Equals(Int64) |
Gibt einen Wert zurück, der angibt, ob die aktuelle Instanz und eine 64-Bit-Ganzzahl mit Vorzeichen über den gleichen Wert verfügen. |
| Equals(Object) |
Gibt einen Wert zurück, der angibt, ob die aktuelle Instanz und ein angegebenes Objekt über den gleichen Wert verfügen. |
| Equals(UInt64) |
Gibt einen Wert zurück, der angibt, ob die aktuelle Instanz und eine 64-Bit-Ganzzahl ohne Vorzeichen über den gleichen Wert verfügen. |
| GetBitLength() |
Ruft die Anzahl der Bits ab, die für die kürzeste Zweierkomplementdarstellung der aktuellen Instanz ohne Vorzeichenbit erforderlich sind. |
| GetByteCount(Boolean) |
Ruft die Anzahl der Bytes ab, die von ToByteArray(Boolean, Boolean) und TryWriteBytes(Span<Byte>, Int32, Boolean, Boolean) ausgegeben werden. |
| GetHashCode() |
Gibt den Hashcode für das aktuelle BigInteger-Objekt zurück. |
| GreatestCommonDivisor(BigInteger, BigInteger) |
Sucht den größten gemeinsamen Divisor von zwei BigInteger-Werten. |
| IsEvenInteger(BigInteger) |
Bestimmt, ob ein Wert eine gerade integrale Zahl darstellt. |
| IsNegative(BigInteger) |
Bestimmt, ob ein Wert negativ ist. |
| IsOddInteger(BigInteger) |
Bestimmt, ob ein Wert eine ungerade Integralnummer darstellt. |
| IsPositive(BigInteger) |
Bestimmt, ob ein Wert positiv ist. |
| IsPow2(BigInteger) |
Bestimmt, ob ein Wert eine Leistung von zwei ist. |
| LeadingZeroCount(BigInteger) |
Berechnet die Anzahl der führenden Nullen in einem Wert. |
| Log(BigInteger) |
Gibt den natürlichen Logarithmus (zur Basis |
| Log(BigInteger, Double) |
Gibt den Logarithmus einer angegebenen Zahl bezüglich einer angegebenen Basis zurück. |
| Log10(BigInteger) |
Gibt den Logarithmus einer angegebenen Zahl zur Basis 10 zurück. |
| Log2(BigInteger) |
Berechnet das Protokoll2 eines Werts. |
| Max(BigInteger, BigInteger) |
Gibt den größeren der beiden BigInteger-Werte zurück. |
| MaxMagnitude(BigInteger, BigInteger) |
Vergleicht zwei Werte mit der Berechnung, die größer ist. |
| Min(BigInteger, BigInteger) |
Gibt den kleineren der beiden BigInteger-Werte zurück. |
| MinMagnitude(BigInteger, BigInteger) |
Vergleicht zwei Werte mit der Berechnung, die kleiner ist. |
| ModPow(BigInteger, BigInteger, BigInteger) |
Führt eine Modulodivision für eine zur Potenz einer anderen Zahl erhobene Zahl aus. |
| Multiply(BigInteger, BigInteger) |
Gibt das Produkt der beiden BigInteger-Werte zurück. |
| Negate(BigInteger) |
Negiert einen angegebenen BigInteger-Wert. |
| Parse(ReadOnlySpan<Char>, IFormatProvider) |
Analysiert einen Bereich von Zeichen in einen Wert. |
| Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider) |
Konvertiert die-Darstellung einer Zahl, die in der angegebenen schreibgeschützten Spanne von Zeichen enthalten ist, in einem angegebenen Stil in die jeweilige BigInteger-Entsprechung. |
| Parse(String) |
Wandelt die angegebene Zeichenfolgendarstellung einer Zahl in ihre BigInteger-Entsprechung um. |
| Parse(String, IFormatProvider) |
Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen kulturspezifischen Format in die BigInteger-Entsprechung. |
| Parse(String, NumberStyles) |
Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil in die BigInteger-Entsprechung. |
| Parse(String, NumberStyles, IFormatProvider) |
Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und kulturabhängigen Format in das entsprechende BigInteger. |
| PopCount(BigInteger) |
Berechnet die Anzahl von Bits, die in einem Wert festgelegt sind. |
| Pow(BigInteger, Int32) |
Potenziert einen BigInteger-Wert mit einem angegebenen Wert. |
| Remainder(BigInteger, BigInteger) |
Führt die Ganzzahldivision von zwei BigInteger-Werten aus und gibt den Rest zurück. |
| RotateLeft(BigInteger, Int32) |
Dreht einen Wert nach einem bestimmten Betrag nach links. |
| RotateRight(BigInteger, Int32) |
Dreht einen Wert nach rechts nach einem bestimmten Betrag. |
| Subtract(BigInteger, BigInteger) |
Subtrahiert einen BigInteger-Wert von einem anderen und gibt das Ergebnis zurück. |
| ToByteArray() |
Konvertiert einen BigInteger-Wert in ein Bytearray. |
| ToByteArray(Boolean, Boolean) |
Liefert den Wert dieses BigInteger als Bytearray mit der kleinstmöglichen Anzahl von Bytes. Wenn der Wert Null (0) ist, wird ein Array von einem Byte zurückgegeben, dessen Element 0x00 ist. |
| ToString() |
Konvertiert den numerischen Wert des aktuellen BigInteger-Objekts in die entsprechende Zeichenfolgendarstellung. |
| ToString(IFormatProvider) |
Konvertiert den numerischen Wert des aktuellen BigInteger-Objekts unter Verwendung der angegebenen kulturspezifischen Formatierungsinformationen in die entsprechende Zeichenfolgendarstellung. |
| ToString(String) |
Konvertiert den numerischen Wert des aktuellen BigInteger-Objekts unter Verwendung des angegebenen Formats in die entsprechende Zeichenfolgendarstellung. |
| ToString(String, IFormatProvider) |
Konvertiert den numerischen Wert des aktuellen BigInteger-Objekts unter Verwendung des angegebenen Formats und der angegebenen kulturspezifischen Formatierungsinformationen in die entsprechende Zeichenfolgendarstellung. |
| TrailingZeroCount(BigInteger) |
Berechnet die Anzahl der nachgestellten Nullen in einem Wert. |
| TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) |
Formatiert diese BigInteger-Instanz in eine Spanne von Zeichen. |
| TryParse(ReadOnlySpan<Char>, BigInteger) |
Versucht, die Darstellung einer Zahl, die in der angegebenen schreibgeschützten Zeichenspanne enthalten ist, in ihre Entsprechung BigInteger zu konvertieren, und gibt einen Wert zurück, der angibt, ob die Konvertierung erfolgreich war. |
| TryParse(ReadOnlySpan<Char>, IFormatProvider, BigInteger) |
Versucht, einen Bereich von Zeichen in einen Wert zu analysieren. |
| TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, BigInteger) |
Versucht, die Zeichenfolgendarstellung einer Zahl in deren BigInteger-Entsprechung zu konvertieren, und gibt einen Wert zurück, der angibt, ob die Konvertierung erfolgreich durchgeführt wurde. |
| TryParse(String, BigInteger) |
Versucht, die Zeichenfolgendarstellung einer Zahl in deren BigInteger-Entsprechung zu konvertieren, und gibt einen Wert zurück, der angibt, ob die Konvertierung erfolgreich durchgeführt wurde. |
| TryParse(String, IFormatProvider, BigInteger) | |
| TryParse(String, NumberStyles, IFormatProvider, BigInteger) |
Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und kulturspezifischen Format in das entsprechende BigInteger und gibt einen Wert zurück, der angibt, ob die Konvertierung erfolgreich abgeschlossen wurde. |
| TryWriteBytes(Span<Byte>, Int32, Boolean, Boolean) |
Kopiert den Wert dieses BigInteger als Little-Endian-Zweierkomplementbytes mit der geringstmöglichen Anzahl von Bytes. Wenn der Wert Null (0) ist, wird nur ein Byte ausgegeben, dessen Element 0x00 ist. |
Operatoren
| Addition(BigInteger, BigInteger) |
Addiert die Werte von zwei angegebenen BigInteger-Objekten. |
| BitwiseAnd(BigInteger, BigInteger) |
Führt eine bitweise |
| BitwiseOr(BigInteger, BigInteger) |
Führt eine bitweise |
| Decrement(BigInteger) |
Dekrementiert einen BigInteger-Wert um 1. |
| Division(BigInteger, BigInteger) |
Dividiert einen angegebenen BigInteger-Wert durch einen anderen angegebenen BigInteger-Wert mit einer Ganzzahldivision. |
| Equality(BigInteger, BigInteger) |
Gibt einen Wert zurück, der angibt, ob die Werte von zwei BigInteger-Objekten gleich sind. |
| Equality(BigInteger, Int64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert und der Wert einer langen ganzen Zahl mit Vorzeichen gleich sind. |
| Equality(BigInteger, UInt64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert und der Wert einer langen ganzen Zahl ohne Vorzeichen gleich sind. |
| Equality(Int64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob der Wert einer langen ganzen Zahl mit Vorzeichen und ein BigInteger-Wert gleich sind. |
| Equality(UInt64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob der Wert einer langen ganzen Zahl ohne Vorzeichen und ein BigInteger-Wert gleich sind. |
| ExclusiveOr(BigInteger, BigInteger) |
Führt eine bitweise exklusive |
| Explicit(BigInteger to Byte) |
Definiert eine explizite Konvertierung eines BigInteger-Objekts in einen Bytewert ohne Vorzeichen. |
| Explicit(BigInteger to Char) |
Konvertiert explizit eine große ganze Zahl in einen Char Wert. |
| Explicit(BigInteger to Decimal) |
Definiert eine explizite Konvertierung eines BigInteger-Objekts in einen Decimal-Wert. |
| Explicit(BigInteger to Double) |
Definiert eine explizite Konvertierung eines BigInteger-Objekts in einen Double-Wert. |
| Explicit(BigInteger to Half) |
Konvertiert explizit eine große ganze Zahl in einen Half Wert. |
| Explicit(BigInteger to Int128) |
Konvertiert explizit eine große ganze Zahl in einen Int128 Wert. |
| Explicit(BigInteger to Int16) |
Definiert eine explizite Konvertierung eines BigInteger-Objekts in den Wert einer 16-Bit-Ganzzahl mit Vorzeichen. |
| Explicit(BigInteger to Int32) |
Definiert eine explizite Konvertierung eines BigInteger-Objekts in den Wert einer 32-Bit-Ganzzahl mit Vorzeichen. |
| Explicit(BigInteger to Int64) |
Definiert eine explizite Konvertierung eines BigInteger-Objekts in den Wert einer 64-Bit-Ganzzahl mit Vorzeichen. |
| Explicit(BigInteger to IntPtr) |
Konvertiert explizit eine große ganze Zahl in einen IntPtr Wert. |
| Explicit(BigInteger to SByte) |
Definiert eine explizite Konvertierung eines BigInteger-Objekts in einen 8-Bit-Wert mit Vorzeichen. Diese API ist nicht CLS-kompatibel. Die kompatible Alternative ist Int16. |
| Explicit(BigInteger to Single) |
Definiert eine explizite Konvertierung eines BigInteger-Objekts in einen Gleitkommawert mit einfacher Genauigkeit. |
| Explicit(BigInteger to UInt128) |
Wandelt explizit eine große ganze Zahl in einen UInt128 Wert um. |
| Explicit(BigInteger to UInt16) |
Definiert eine explizite Konvertierung eines BigInteger-Objekts in den Wert einer 16-Bit-Ganzzahl ohne Vorzeichen. Diese API ist nicht CLS-kompatibel. Die kompatible Alternative ist Int32. |
| Explicit(BigInteger to UInt32) |
Definiert eine explizite Konvertierung eines BigInteger-Objekts in den Wert einer 32-Bit-Ganzzahl ohne Vorzeichen. Diese API ist nicht CLS-kompatibel. Die kompatible Alternative ist Int64. |
| Explicit(BigInteger to UInt64) |
Definiert eine explizite Konvertierung eines BigInteger-Objekts in den Wert einer 64-Bit-Ganzzahl ohne Vorzeichen. Diese API ist nicht CLS-kompatibel. Die kompatible Alternative ist Double. |
| Explicit(BigInteger to UIntPtr) |
Wandelt explizit eine große ganze Zahl in einen UIntPtr Wert um. |
| Explicit(Complex to BigInteger) |
Wandelt einen Complex Wert explizit in eine große ganze Zahl um. |
| Explicit(Decimal to BigInteger) |
Definiert eine explizite Konvertierung eines Decimal-Objekts in einen BigInteger-Wert. |
| Explicit(Double to BigInteger) |
Definiert eine explizite Konvertierung eines Double-Werts in einen BigInteger-Wert. |
| Explicit(Half to BigInteger) |
Konvertiert explizit einen Half Wert in eine große ganze Zahl. |
| Explicit(Single to BigInteger) |
Definiert eine explizite Konvertierung eines Single-Werts in einen BigInteger-Wert. |
| GreaterThan(BigInteger, BigInteger) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert größer als ein anderer BigInteger-Wert ist. |
| GreaterThan(BigInteger, Int64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger größer als der Wert einer 64-Bit-Ganzzahl mit Vorzeichen ist. |
| GreaterThan(BigInteger, UInt64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert größer als eine 64-Bit-Ganzzahl ohne Vorzeichen ist. |
| GreaterThan(Int64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob eine 64-Bit-Ganzzahl mit Vorzeichen größer als ein BigInteger-Wert ist. |
| GreaterThan(UInt64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert größer als eine 64-Bit-Ganzzahl ohne Vorzeichen ist. |
| GreaterThanOrEqual(BigInteger, BigInteger) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert größer oder gleich einem anderen BigInteger-Wert ist. |
| GreaterThanOrEqual(BigInteger, Int64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert größer als der oder gleich dem Wert einer 64-Bit-Ganzzahl mit Vorzeichen ist. |
| GreaterThanOrEqual(BigInteger, UInt64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert größer als der oder gleich dem Wert einer 64-Bit-Ganzzahl ohne Vorzeichen ist. |
| GreaterThanOrEqual(Int64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob eine 64-Bit-Ganzzahl mit Vorzeichen größer als ein oder gleich einem BigInteger-Wert ist. |
| GreaterThanOrEqual(UInt64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob eine 64-Bit-Ganzzahl ohne Vorzeichen größer als ein oder gleich einem BigInteger-Wert ist. |
| Implicit(Byte to BigInteger) |
Definiert eine implizite Konvertierung eines Bytewerts ohne Vorzeichen in ein BigInteger-Objekt. |
| Implicit(Char to BigInteger) |
Konvertiert implizit einen Char Wert in eine große ganze Zahl. |
| Implicit(Int128 to BigInteger) |
Konvertiert implizit einen Int128 Wert in eine große ganze Zahl. |
| Implicit(Int16 to BigInteger) |
Definiert eine implizite Konvertierung einer 16-Bit-Ganzzahl mit Vorzeichen in einen BigInteger-Wert. |
| Implicit(Int32 to BigInteger) |
Definiert eine implizite Konvertierung einer 32-Bit-Ganzzahl mit Vorzeichen in einen BigInteger-Wert. |
| Implicit(Int64 to BigInteger) |
Definiert eine implizite Konvertierung einer 64-Bit-Ganzzahl mit Vorzeichen in einen BigInteger-Wert. |
| Implicit(IntPtr to BigInteger) |
Konvertiert implizit einen IntPtr Wert in eine große ganze Zahl. |
| Implicit(SByte to BigInteger) |
Definiert eine implizite Konvertierung einer 8-Bit-Ganzzahl mit Vorzeichen in einen BigInteger-Wert. Diese API ist nicht CLS-kompatibel. Die kompatible Alternative ist BigInteger(Int32). |
| Implicit(UInt128 to BigInteger) |
Wandelt implizit einen UInt128 Wert in eine große ganze Zahl um. |
| Implicit(UInt16 to BigInteger) |
Definiert eine implizite Konvertierung einer 16-Bit-Ganzzahl ohne Vorzeichen in einen BigInteger-Wert. Diese API ist nicht CLS-kompatibel. Die kompatible Alternative ist Implicit(Int32 to BigInteger). |
| Implicit(UInt32 to BigInteger) |
Definiert eine implizite Konvertierung einer 32-Bit-Ganzzahl ohne Vorzeichen in einen BigInteger-Wert. Diese API ist nicht CLS-kompatibel. Die kompatible Alternative ist Implicit(Int64 to BigInteger). |
| Implicit(UInt64 to BigInteger) |
Definiert eine implizite Konvertierung einer 64-Bit-Ganzzahl ohne Vorzeichen in einen BigInteger-Wert. Diese API ist nicht CLS-kompatibel. Die kompatible Alternative ist Double. |
| Implicit(UIntPtr to BigInteger) |
Wandelt implizit einen UIntPtr Wert in eine große ganze Zahl um. |
| Increment(BigInteger) |
Inkrementiert einen BigInteger-Wert um 1. |
| Inequality(BigInteger, BigInteger) |
Gibt einen Wert zurück, der angibt, ob zwei BigInteger-Objekte über unterschiedliche Werte verfügen. |
| Inequality(BigInteger, Int64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert und eine 64-Bit-Ganzzahl mit Vorzeichen ungleich sind. |
| Inequality(BigInteger, UInt64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert und eine 64-Bit-Ganzzahl ohne Vorzeichen ungleich sind. |
| Inequality(Int64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob eine 64-Bit-Ganzzahl mit Vorzeichen und ein BigInteger-Wert ungleich sind. |
| Inequality(UInt64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob eine 64-Bit-Ganzzahl ohne Vorzeichen und ein BigInteger-Wert ungleich sind. |
| LeftShift(BigInteger, Int32) |
Verschiebt einen BigInteger-Wert um eine angegebene Anzahl von Bits nach links. |
| LessThan(BigInteger, BigInteger) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert kleiner als ein anderer BigInteger-Wert ist. |
| LessThan(BigInteger, Int64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert kleiner als eine 64-Bit-Ganzzahl mit Vorzeichen ist. |
| LessThan(BigInteger, UInt64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert kleiner als eine 64-Bit-Ganzzahl ohne Vorzeichen ist. |
| LessThan(Int64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob eine 64-Bit-Ganzzahl mit Vorzeichen kleiner als ein BigInteger-Wert ist. |
| LessThan(UInt64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob eine 64-Bit-Ganzzahl ohne Vorzeichen kleiner als ein BigInteger-Wert ist. |
| LessThanOrEqual(BigInteger, BigInteger) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert kleiner oder gleich einem anderen BigInteger-Wert ist. |
| LessThanOrEqual(BigInteger, Int64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert kleiner als oder gleich einer 64-Bit-Ganzzahl mit Vorzeichen ist. |
| LessThanOrEqual(BigInteger, UInt64) |
Gibt einen Wert zurück, der angibt, ob ein BigInteger-Wert kleiner als oder gleich einer 64-Bit-Ganzzahl ohne Vorzeichen ist. |
| LessThanOrEqual(Int64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob eine 64-Bit-Ganzzahl mit Vorzeichen kleiner als ein oder gleich einem BigInteger-Wert ist. |
| LessThanOrEqual(UInt64, BigInteger) |
Gibt einen Wert zurück, der angibt, ob eine 64-Bit-Ganzzahl ohne Vorzeichen kleiner als ein oder gleich einem BigInteger-Wert ist. |
| Modulus(BigInteger, BigInteger) |
Gibt den Rest aus der Division zweier angegebener BigInteger-Werte zurück. |
| Multiply(BigInteger, BigInteger) |
Multipliziert zwei angegebene BigInteger-Werte. |
| OnesComplement(BigInteger) |
Gibt das bitweise Einerkomplement eines BigInteger-Werts zurück. |
| RightShift(BigInteger, Int32) |
Verschiebt einen BigInteger-Wert um eine angegebene Anzahl von Bits nach rechts. |
| Subtraction(BigInteger, BigInteger) |
Subtrahiert einen BigInteger-Wert von einem anderen BigInteger-Wert. |
| UnaryNegation(BigInteger) |
Negiert einen angegebenen BigInteger-Wert. |
| UnaryPlus(BigInteger) |
Gibt den Wert des BigInteger-Operanden zurück. (Das Vorzeichen des Operanden wird nicht geändert.) |
| UnsignedRightShift(BigInteger, Int32) |
Verschiebt einen Wert nach rechts um einen bestimmten Betrag. |
Explizite Schnittstellenimplementierungen
| IBinaryInteger<BigInteger>.GetByteCount() |
Ruft die Anzahl der Bytes ab, die als Teil von TryWriteLittleEndian(Span<Byte>, Int32). |
| IBinaryInteger<BigInteger>.GetShortestBitLength() |
Ruft die Länge in Bits der kürzesten beiden Ergänzungsdarstellung des aktuellen Werts ab. |
| IBinaryInteger<BigInteger>.TryWriteBigEndian(Span<Byte>, Int32) |
Versucht, den aktuellen Wert im Big-End-Format auf einen bestimmten Bereich zu schreiben. |
| IBinaryInteger<BigInteger>.TryWriteLittleEndian(Span<Byte>, Int32) |
Versucht, den aktuellen Wert in einem kleinen endischen Format in einen bestimmten Bereich zu schreiben. |
| IComparable.CompareTo(Object) |
Vergleicht diese Instanz mit einem angegebenen Objekt und gibt eine ganze Zahl zurück, die angibt, ob der Wert dieser Instanz kleiner oder größer als der Wert des angegebenen Objekts ist oder mit diesem übereinstimmt. |