BigInteger 構造体

定義

任意の大きさを持つ符号付き整数を表します。

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 struct BigInteger : IComparable, IComparable<System.Numerics.BigInteger>, IEquatable<System.Numerics.BigInteger>, IFormattable
public struct BigInteger : IComparable, IComparable<System.Numerics.BigInteger>, IEquatable<System.Numerics.BigInteger>, ISpanFormattable
[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
[<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
継承
BigInteger
属性
実装

注釈

型は、理論上の値に上限または下限がない任意の大きな整数を表す変更できない BigInteger 型です。 型のメンバーは、他の整数型 (、および 型) のメンバーと BigInteger Byte Int16 Int32 Int64 SByte UInt16 UInt32 密接に並行 UInt64 しています。 この型は、プロパティと プロパティで示される範囲.NET Frameworkの他の整数型とは MinValueMaxValue なります。

注意

型は変更できない BigInteger (「変更可能性と BigInteger構造体」を参照)、上限または下限がないので、値が大きすぎる操作に対して をスローできます。 OutOfMemoryException BigInteger

BigInteger オブジェクトのインスタンス化

オブジェクトは、いくつかの方法 BigInteger でインスタンス化できます。

  • キーワードを使用 new して、任意の整数値または浮動小数点値をコンストラクターのパラメーターとして指定 BigInteger できます。 (浮動小数点値は に割り当てられる前に切り捨てられます BigInteger )。次の例は、 キーワードを使用して値を new インスタンス化する方法を示 BigInteger しています。

    BigInteger bigIntFromDouble = new BigInteger(179032.6541);
    Console.WriteLine(bigIntFromDouble);
    BigInteger bigIntFromInt64 = new BigInteger(934157136952);
    Console.WriteLine(bigIntFromInt64);
    // The example displays the following output:
    //   179032
    //   934157136952
    
    Dim 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
    '   934157136952
    
  • 変数を宣言し、その値が整数型である限り、任意の数値型と同様に値 BigInteger を割り当てできます。 次の例では、代入を使用して から BigInteger 値を作成します Int64

    long longValue = 6315489358112;
    BigInteger assignedFromLong = longValue;
    Console.WriteLine(assignedFromLong);
    // The example displays the following output:
    //   6315489358112
    
    Dim longValue As Long = 6315489358112      
    Dim assignedFromLong As BigInteger = longValue
    Console.WriteLine(assignedFromLong)
    ' The example displays the following output:
    '   6315489358112
    
  • 最初に値をキャストまたは変換する場合は、10 進数または浮動小数点値を オブジェクト BigInteger に割り当てできます。 次の例では、(C# では) を明示的にキャストするか、(Visual Basic) と 値を に Double Decimal 変換します BigInteger

    BigInteger assignedFromDouble = (BigInteger) 179032.6541;
    Console.WriteLine(assignedFromDouble);
    BigInteger assignedFromDecimal = (BigInteger) 64312.65m;
    Console.WriteLine(assignedFromDecimal);
    // The example displays the following output:
    //   179032
    //   64312
    
    Dim 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
    

これらのメソッドを使用すると、値が既存の数値型の範囲内にあるオブジェクト BigInteger をインスタンス化できます。 値が既存の数値型の範囲を超える可能性があるオブジェクトは、次の BigInteger 3 つの方法のいずれかを使用してインスタンス化できます。

  • キーワードを使用 new して、任意のサイズのバイト配列をコンストラクターに提供 BigInteger.BigInteger できます。 次に例を示します。

    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).
    
  • メソッドまたは メソッド ParseTryParse 呼び出して、数値の文字列形式を に変換できます BigInteger 。 次に例を示します。

    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+34
    
    Dim 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+34
    
  • 数値式に対して何らかのVisual Basicを実行し、計算結果を返す ( の場合は ) メソッド static Shared BigInteger を呼び出 BigInteger します。 次の例では、これを行います。これを行うには、 をキューに追加し、結果 UInt64.MaxValue を に割り当てる必要があります BigInteger

    BigInteger number = BigInteger.Pow(UInt64.MaxValue, 3);
    Console.WriteLine(number);
    // The example displays the following output:
    //    6277101735386680762814942322444851025767571854389858533375
    
    Dim number As BigInteger = BigInteger.Pow(UInt64.MaxValue, 3)
    Console.WriteLine(number)
    ' The example displays the following output:
      ' 6277101735386680762814942322444851025767571854389858533375
    

の初期化されていない値は BigInteger です Zero

BigInteger 値に対する操作の実行

他の整数 BigInteger 型を使用する場合と同様に、 インスタンスを使用できます。 BigInteger は、加算、減算、除算、乗算、減算、否定、一項否定などの基本的な算術演算を実行するために、標準の数値演算子をオーバーロードします。 標準の数値演算子を使用して、2 つの値 BigInteger を互いに比較することもできます。 他の整数型と同様に、ビット演算子、左シフト演算子、右シフト演算子 BigInteger And Or XOr もサポートしています。 カスタム演算子をサポートしていない言語の場合、 構造体には、数学演算を実行するための同等 BigInteger のメソッドも用意されています。 これには Add Divide Multiply 、、、、、、 Negate Subtract および他のいくつかが含まれます。

構造体の多くのメンバー BigInteger は、他の整数型のメンバーに直接対応しています。 さらに、 は BigInteger 次のようなメンバーを追加します。

これらの追加メンバーの多くは、 クラスのメンバーに対応しています。このクラスは、プリミティブ数値型を操作する Math 機能を提供します。

変更可能性と BigInteger 構造体

次の例では、 オブジェクトを BigInteger インスタンス化し、その値を 1 ずつインクリメントします。

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)

この例では、既存の オブジェクトの値を変更する場合に見れますが、これは当てはめではありません。 BigInteger オブジェクトは変更できません。つまり、内部的には、共通言語ランタイムによって実際に新しいオブジェクトが作成され、前の値より 1 大きい値 BigInteger が割り当てされます。 この新しい オブジェクトが呼び出し元に返されます。

注意

.NET の他の数値型も変更できません。 ただし、型には上限や下限はないので、その値は非常に大きくなる可能性があります。また、パフォーマンスに測定可能な BigInteger 影響を与える可能性があります。

このプロセスは呼び出し元に対して透過的ですが、パフォーマンスが低下します。 場合によっては、特に非常に大きな値のループで繰り返し操作を実行すると、パフォーマンスが低下する BigInteger 可能性があります。 たとえば、次の例では、操作が 100 万回まで繰り返し実行され、操作が成功するごとに値が 1 BigInteger ずつインクリメントされます。

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

このような場合は、変数に対してすべての中間代入を実行することで、パフォーマンスを向上 Int32 させることができます。 その後、ループが終了すると、変数の最後の値を オブジェクト BigInteger に割り当てることができます。 具体的な例を次に示します。

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

バイト配列と 16 進文字列の操作

値をバイト配列に変換する場合、またはバイト配列を値に変換する場合は、バイトの順序 BigInteger BigInteger を考慮する必要があります。 構造体は、バイト配列内の個々のバイトがリトル エンディアンの順序で表示される (つまり、値の下位バイトが上位バイトより前にある) ことを期待 BigInteger します。 次の例に示すように、 メソッドを呼び出し、結果のバイト配列をコンストラクターに渡すことによって、値を BigInteger ToByteArray ラウンドトリップ BigInteger(Byte[]) できます。

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

他の整数型の値を表すバイト配列から値をインスタンス化するには、整数値を メソッドに渡し、結果のバイト配列をコンストラクターに渡 BigInteger BitConverter.GetBytes BigInteger(Byte[]) します。 次の例では、値 BigInteger を表すバイト配列から値をインスタンス化 Int16 します。

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

構造体 BigInteger は、負の値が 2 つの補数表現を使用して格納されている前提です。 構造体は固定長の数値を表すので、コンストラクターは常に配列内の最後のバイトの最も重要なビットを符号ビット BigInteger BigInteger(Byte[]) として解釈します。 コンストラクターが負の値の 2 つの補数表現を正の値の符号と大きさの表現と混同するのを防ぐには、通常、バイト配列内の最後のバイトの最も重要なビットを設定する正の値には、値が 0 の追加バイトを含める必要があります。 BigInteger(Byte[]) たとえば、0xC0 0xBD 0xF0 0xFF は、-1,000,000 または 4,293,967,296 のリトル エンディアンの 16 進数表現です。 この配列の最後のバイトの最も重要なビットは オンなので、バイト配列の値はコンストラクターによって BigInteger(Byte[]) -1,000,000 として解釈されます。 値が正の をインスタンス化するには、要素が含0xC0 0xBD 0xF0 0xFF 0x00バイト配列をコンストラクター BigInteger に渡す必要があります。 次の例を使って説明します。

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

正の値から メソッドによって作成されたバイト ToByteArray 配列には、この余分な 0 値バイトが含まれます。 したがって、構造体は、次の例に示すように、値をに割り当て、バイト配列から復元することで、値を正常に BigInteger ラウンドトリップできます。

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

ただし、開発者によって動的に作成されるバイト配列、または符号なし整数をバイト配列 (、、 など) に変換するメソッドによって返されるバイト配列に、この追加の 0 値バイトを追加する必要がある場合 BitConverter.GetBytes(UInt16) BitConverter.GetBytes(UInt32) があります BitConverter.GetBytes(UInt64)

16 進数文字列を解析する場合、 メソッドと メソッドは、文字列内の最初のバイトの最も重要なビットが設定されている場合、または文字列の最初の 16 進数字がバイト値の下位 4 ビットを表す場合、値は 2 の補数表現を使用して表されます。 BigInteger.Parse(String, NumberStyles) BigInteger.Parse(String, NumberStyles, IFormatProvider) たとえば、"FF01" と "F01" の両方が 10 進数の値 -255 を表します。 正の値と負の値を区別するには、正の値に先行ゼロを含める必要があります。 メソッドの関連するオーバーロードが "X" 書式指定文字列を渡された場合、正の値を返す 16 進文字列に先行ゼロ ToString を追加します。 これにより、次の例に示すように、 メソッドと メソッドを使用して BigInteger ToString Parse 値をラウンドトリップできます。

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.

ただし、他の整数型のメソッドを呼び出すことによって作成された 16 進文字列、またはパラメーターを含むメソッドのオーバーロードは、16 進文字列の派生元の値またはソース データ型の符号を示すわけではありません。 ToString ToString toBase このような文字列から値を BigInteger 正常にインスタンス化するには、追加のロジックが必要です。 次の例では、考えられる実装の 1 つを示します。

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.

コンストラクター

BigInteger(Byte[])

バイト配列の値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。

BigInteger(Decimal)

Decimal 値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。

BigInteger(Double)

倍精度浮動小数点値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。

BigInteger(Int32)

32 ビット符号付き整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。

BigInteger(Int64)

64 ビット符号付き整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。

BigInteger(ReadOnlySpan<Byte>, Boolean, Boolean)

バイトの読み取り専用スパンを使用して、BigInteger 構造体の新しいインスタンスを初期化します。任意で、符号付きエンコードとエンディアンのバイト順を示します。

BigInteger(Single)

単精度浮動小数点値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。

BigInteger(UInt32)

32 ビット符号なし整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。

BigInteger(UInt64)

64 ビット符号なし整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。

プロパティ

IsEven

現在の BigInteger オブジェクトの値が偶数かどうかを示します。

IsOne

現在の BigInteger オブジェクトの値が One かどうかを示します。

IsPowerOfTwo

現在の BigInteger オブジェクトの値が 2 の累乗かどうかを示します。

IsZero

現在の BigInteger オブジェクトの値が Zero かどうかを示します。

MinusOne

負の 1 (-1) を表す値を取得します。

One

正の 1 (1) を表す値を取得します。

Sign

現在の BigInteger オブジェクトの符号 (負、正、または 0) を示す数値を取得します。

Zero

0 (ゼロ) を表す値を取得します。

メソッド

Abs(BigInteger)

BigInteger オブジェクトの絶対値を取得します。

Add(BigInteger, BigInteger)

2 つの BigInteger 値を加算し、その結果を返します。

Compare(BigInteger, BigInteger)

2 つの BigInteger 値を比較し、1 番目の値が 2 番目の値よりも小さいか、同じか、または大きいかを示す整数を返します。

CompareTo(BigInteger)

このインスタンスともう 1 つの BigInteger を比較し、このインスタンスの値が指定されたオブジェクトの値よりも小さいか、同じか、または大きいかを示す整数を返します。

CompareTo(Int64)

このインスタンスと符号付き 64 ビット整数を比較し、このインスタンスの値が符号付き 64 ビット整数の値よりも小さいか、同じか、または大きいかを示す整数を返します。

CompareTo(Object)

このインスタンスと指定したオブジェクトを比較し、このインスタンスの値が指定したオブジェクトの値よりも小さいか、同じか、または大きいかを示す整数を返します。

CompareTo(UInt64)

このインスタンスと符号なし 64 ビット整数を比較し、このインスタンスの値が符号なし 64 ビット整数の値よりも小さいか、同じか、または大きいかを示す整数を返します。

Divide(BigInteger, BigInteger)

一方の BigInteger 値をもう一方の値で除算し、その結果を返します。

DivRem(BigInteger, BigInteger, BigInteger)

ある BigInteger 値を別の値で除算し、その結果を返します。剰余は出力パラメーターとして返されます。

Equals(BigInteger)

現在のインスタンスの値と指定された BigInteger オブジェクトの値が等しいかどうかを示す値を返します。

Equals(Int64)

現在のインスタンスの値と符号付き 64 ビット整数の値が等しいかどうかを示す値を返します。

Equals(Object)

現在のインスタンスの値と指定されたオブジェクトの値が等しいかどうかを示す値を返します。

Equals(UInt64)

現在のインスタンスの値と符号なし 64 ビット整数の値が等しいかどうかを示す値を返します。

GetBitLength()

現在のインスタンスの符号ビットを含まない最短の 2 の補数表現に必要なビット数を取得します。

GetByteCount(Boolean)

ToByteArray(Boolean, Boolean)TryWriteBytes(Span<Byte>, Int32, Boolean, Boolean) によって出力されるバイト数を取得します。

GetHashCode()

現在の BigInteger オブジェクトのハッシュ コードを返します。

GreatestCommonDivisor(BigInteger, BigInteger)

2 つの BigInteger 値の最大公約数を求めます。

Log(BigInteger)

指定した数の自然 (底 e) 対数を返します。

Log(BigInteger, Double)

指定した数値の指定した底での対数を返します。

Log10(BigInteger)

指定した数の底 10 の対数を返します。

Max(BigInteger, BigInteger)

2 つの BigInteger 値のうち 大きい方の値を返します。

Min(BigInteger, BigInteger)

2 つの BigInteger 値のうち小さい方の値を返します。

ModPow(BigInteger, BigInteger, BigInteger)

ある数値を別の数値で累乗し、それをさらに別の数値で割った結果生じた剰余を求めます。

Multiply(BigInteger, BigInteger)

2 つの BigInteger 値の積を返します。

Negate(BigInteger)

指定された BigInteger 値を否定 (負数化) します。

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

指定の文字の読み取り専用のスパンに含まれている、指定のスタイルで表現された数値を、それと等価な BigInteger に変換します。

Parse(String)

数値の文字列形式を、それと等価の BigInteger に変換します。

Parse(String, IFormatProvider)

指定されたカルチャ固有の書式で表現された文字列形式の数値を、それと等価の BigInteger に変換します。

Parse(String, NumberStyles)

指定のスタイルで表現された数値の文字列形式を、それと等価な BigInteger に変換します。

Parse(String, NumberStyles, IFormatProvider)

指定したスタイルおよびカルチャ固有の書式の数値の文字列形式を、それと等価の BigInteger に変換します。

Pow(BigInteger, Int32)

指定された値を指数として BigInteger 値を累乗します。

Remainder(BigInteger, BigInteger)

2 つの BigInteger 値に対する整数除算を実行し、その剰余を返します。

Subtract(BigInteger, BigInteger)

ある BigInteger 値を別の値から減算し、その結果を返します。

ToByteArray()

BigInteger 値をバイト配列に変換します。

ToByteArray(Boolean, Boolean)

使用できる最も少ないバイト数を使用して、この BigInteger の値をバイト配列として返します。 値が 0 の場合は、その要素が 0x00 である 1 バイトの配列を返します。

ToString()

現在の BigInteger オブジェクトの数値を等価の文字列形式に変換します。

ToString(IFormatProvider)

指定されたカルチャ固有の書式情報を使用して、現在の BigInteger オブジェクトの数値をそれと等価の文字列形式に変換します。

ToString(String)

指定された書式を使用して、現在の BigInteger オブジェクトの数値をそれと等価な文字列形式に変換します。

ToString(String, IFormatProvider)

指定された書式とカルチャ固有の書式情報を使用して、現在の BigInteger オブジェクトの数値をそれと等価の文字列形式に変換します。

TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)

この多倍長整数インスタンスの書式を文字のスパンに設定します。

TryParse(ReadOnlySpan<Char>, BigInteger)

指定された文字の読み取り専用スパンに含まれた数値の表現を、等価の BigInteger に変換できるかどうかを試行し、変換に成功したかどうかを示す値を返します。

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, BigInteger)

数値の文字列形式を対応する BigInteger 表現に変換できるかどうかを試行し、変換に成功したかどうかを示す値を返します。

TryParse(String, BigInteger)

数値の文字列形式を対応する BigInteger 表現に変換できるかどうかを試行し、変換に成功したかどうかを示す値を返します。

TryParse(String, NumberStyles, IFormatProvider, BigInteger)

指定されたスタイルおよびカルチャ固有の書式の数値の文字列形式を等価の BigInteger に変換できるかどうかを試行し、変換に成功したかどうかを示す値を返します。

TryWriteBytes(Span<Byte>, Int32, Boolean, Boolean)

使用できる最も少ないバイト数を使用して、この BigInteger の値をリトル エンディアンの 2 の補数としてコピーします。 値が 0 の場合は、その要素が 0x00 である 1 バイトの配列を返します。

演算子

Addition(BigInteger, BigInteger)

指定された 2 つの BigInteger オブジェクトの値を加算します。

BitwiseAnd(BigInteger, BigInteger)

2 つの BigInteger 値に対し、ビットごとの And 演算を実行します。

BitwiseOr(BigInteger, BigInteger)

2 つの BigInteger 値に対し、ビットごとの Or 演算を実行します。

Decrement(BigInteger)

BigInteger 値を 1 だけデクリメントします。

Division(BigInteger, BigInteger)

整数除算を使用して、指定された BigInteger 値をもう 1 つの指定された BigInteger 値で除算します。

Equality(BigInteger, BigInteger)

2 つの BigInteger オブジェクトの値が等しいかどうかを示す値を返します。

Equality(BigInteger, Int64)

BigInteger 値と符号付き長整数値が等しいかどうかを示す値を返します。

Equality(BigInteger, UInt64)

BigInteger 値と符号なし長整数値が等しいかどうかを示す値を返します。

Equality(Int64, BigInteger)

符号付き長整数値と BigInteger 値が等しいかどうかを示す値を返します。

Equality(UInt64, BigInteger)

符号なし長整数値と BigInteger 値と等しいかどうかを示す値を返します。

ExclusiveOr(BigInteger, BigInteger)

2 つの BigInteger 値に対し、ビットごとの排他的 Or (XOr) 演算を実行します。

Explicit(BigInteger to Byte)

BigInteger オブジェクトから符号なしバイト値への明示的な変換を定義します。

Explicit(BigInteger to Decimal)

BigInteger オブジェクトから Decimal 値への明示的な変換を定義します。

Explicit(BigInteger to Double)

BigInteger オブジェクトから Double 値への明示的な変換を定義します。

Explicit(BigInteger to Int16)

BigInteger オブジェクトから 16 ビット符号付き整数値への明示的な変換を定義します。

Explicit(BigInteger to Int32)

BigInteger オブジェクトから 32 ビット符号付き整数値への明示的な変換を定義します。

Explicit(BigInteger to Int64)

BigInteger オブジェクトから 64 ビット符号付き整数値への明示的な変換を定義します。

Explicit(BigInteger to SByte)

BigInteger オブジェクトから符号付き 8 ビット値への明示的な変換を定義します。

この API は、CLS に準拠していません。 準拠している代替として Int16.を使用できます。

Explicit(BigInteger to Single)

BigInteger オブジェクトから単精度浮動小数点値への明示的な変換を定義します。

Explicit(BigInteger to UInt16)

BigInteger オブジェクトから符号なし 16 ビット整数値への明示的な変換を定義します。

この API は、CLS に準拠していません。 準拠している代替として Int32.を使用できます。

Explicit(BigInteger to UInt32)

BigInteger オブジェクトから符号なし 32 ビット整数値への明示的な変換を定義します。

この API は、CLS に準拠していません。 準拠している代替として Int64.を使用できます。

Explicit(BigInteger to UInt64)

BigInteger オブジェクトから符号なし 64 ビット整数値への明示的な変換を定義します。

この API は、CLS に準拠していません。 準拠している代替として Double.を使用できます。

Explicit(Decimal to BigInteger)

Decimal オブジェクトから BigInteger 値への明示的な変換を定義します。

Explicit(Double to BigInteger)

Double 値から BigInteger 値への明示的な変換を定義します。

Explicit(Single to BigInteger)

Single 値から BigInteger 値への明示的な変換を定義します。

GreaterThan(BigInteger, BigInteger)

BigInteger 値がもう 1 つの BigInteger 値より大きいかどうかを示す値を返します。

GreaterThan(BigInteger, Int64)

BigInteger が 64 ビット符号付き整数値より大きいかどうかを示す値を返します。

GreaterThan(BigInteger, UInt64)

BigInteger 値が 64 ビット符号なし整数より大きいかどうかを示す値を返します。

GreaterThan(Int64, BigInteger)

64 ビット符号付き整数が BigInteger 値より大きいかどうかを示す値を返します。

GreaterThan(UInt64, BigInteger)

BigInteger 値が 64 ビット符号なし整数より大きいかどうかを示す値を返します。

GreaterThanOrEqual(BigInteger, BigInteger)

BigInteger 値がもう 1 つの BigInteger 値以上かどうかを示す値を返します。

GreaterThanOrEqual(BigInteger, Int64)

BigInteger 値が 64 ビット符号付き整数値以上かどうかを示す値を返します。

GreaterThanOrEqual(BigInteger, UInt64)

BigInteger 値が 64 ビット符号なし整数値以上かどうかを示す値を返します。

GreaterThanOrEqual(Int64, BigInteger)

64 ビット符号付き整数が BigInteger 値以上かどうかを示す値を返します。

GreaterThanOrEqual(UInt64, BigInteger)

64 ビット符号なし整数が BigInteger 値以上かどうかを示す値を返します。

Implicit(Byte to BigInteger)

符号なしバイト値から BigInteger 値への暗示的な変換を定義します。

Implicit(Int16 to BigInteger)

符号付き 16 ビット整数値から BigInteger 値への暗黙的な変換を定義します。

Implicit(Int32 to BigInteger)

符号付き 32 ビット整数値から BigInteger 値への暗黙的な変換を定義します。

Implicit(Int64 to BigInteger)

符号付き 64 ビット整数値から BigInteger 値への暗黙的な変換を定義します。

Implicit(SByte to BigInteger)

8 ビット符号付き整数値から BigInteger 値への暗黙的な変換を定義します。

この API は、CLS に準拠していません。 準拠している代替として BigInteger(Int32).を使用できます。

Implicit(UInt16 to BigInteger)

16 ビット符号なし整数値から BigInteger 値への暗黙的な変換を定義します。

この API は、CLS に準拠していません。 準拠している代替として Implicit(Int32 to BigInteger).を使用できます。

Implicit(UInt32 to BigInteger)

32 ビット符号なし整数値から BigInteger 値への暗黙的な変換を定義します。

この API は、CLS に準拠していません。 準拠している代替として Implicit(Int64 to BigInteger).を使用できます。

Implicit(UInt64 to BigInteger)

64 ビット符号なし整数値から BigInteger 値への暗黙的な変換を定義します。

この API は、CLS に準拠していません。 準拠している代替として Double.を使用できます。

Increment(BigInteger)

BigInteger 値を 1 だけインクリメントします。

Inequality(BigInteger, BigInteger)

2 つの BigInteger オブジェクトの値が異なるかどうかを示す値を返します。

Inequality(BigInteger, Int64)

BigInteger 値と 64 ビット符号付き整数値が等しくないかどうかを示す値を返します。

Inequality(BigInteger, UInt64)

BigInteger 値と 64 ビット符号なし整数値が等しくないかどうかを示す値を返します。

Inequality(Int64, BigInteger)

64 ビット符号付き整数値と BigInteger 値が等しくないかどうかを示す値を返します。

Inequality(UInt64, BigInteger)

64 ビット符号なし整数値と BigInteger 値が等しくないかどうかを示す値を返します。

LeftShift(BigInteger, Int32)

指定されたビット数だけ BigInteger 値を左にシフトします。

LessThan(BigInteger, BigInteger)

BigInteger 値がもう 1 つの BigInteger 値より小さいかどうかを示す値を返します。

LessThan(BigInteger, Int64)

BigInteger 値が 64 ビット符号付き整数より小さいかどうかを示す値を返します。

LessThan(BigInteger, UInt64)

BigInteger 値が 64 ビット符号なし整数より小さいかどうかを示す値を返します。

LessThan(Int64, BigInteger)

64 ビット符号付き整数が BigInteger 値より小さいかどうかを示す値を返します。

LessThan(UInt64, BigInteger)

64 ビット符号なし整数が BigInteger 値より小さいかどうかを示す値を返します。

LessThanOrEqual(BigInteger, BigInteger)

BigInteger 値がもう 1 つの BigInteger 値以下かどうかを示す値を返します。

LessThanOrEqual(BigInteger, Int64)

BigInteger 値が 64 ビット符号付き整数以下かどうかを示す値を返します。

LessThanOrEqual(BigInteger, UInt64)

BigInteger 値が 64 ビット符号なし整数以下かどうかを示す値を返します。

LessThanOrEqual(Int64, BigInteger)

64 ビット符号付き整数が BigInteger 値以下かどうかを示す値を返します。

LessThanOrEqual(UInt64, BigInteger)

64 ビット符号なし整数が BigInteger 値以下かどうかを示す値を返します。

Modulus(BigInteger, BigInteger)

指定された 2 つの BigInteger 値の除算の結果生じた剰余を返します。

Multiply(BigInteger, BigInteger)

指定された 2 つの BigInteger 値を乗算します。

OnesComplement(BigInteger)

BigInteger 値のビットごとの 1 の補数を返します。

RightShift(BigInteger, Int32)

指定されたビット数だけ BigInteger 値を右にシフトします。

Subtraction(BigInteger, BigInteger)

BigInteger 値をもう 1 つの BigInteger 値から減算します。

UnaryNegation(BigInteger)

指定された BigInteger 値を否定 (負数化) します。

UnaryPlus(BigInteger)

BigInteger オペランドの値を返します。 オペランドの符号は変更されません。

明示的なインターフェイスの実装

IComparable.CompareTo(Object)

このインスタンスと指定したオブジェクトを比較し、このインスタンスの値が指定したオブジェクトの値よりも小さいか、同じか、または大きいかを示す整数を返します。

適用対象