public class BigInteger extends Number implements Comparable<BigInteger>
算術演算のセマンティックスは、『Java言語仕様』に定義されているようにJavaの整数算術演算子を正確に模倣します。たとえば、ゼロ除算はArithmeticException
をスローし、正の数による負の数の除算は負(または0)の剰余を出します。オーバーフローに関する仕様内の詳細はすべて無視され、BigIntegerは演算の結果の受け入れに必要なだけ大きくなります。
シフト演算のセマンティックスは、負のシフト移動量を可能にするためJavaのシフト演算子を拡張しています。負のシフト移動量を持つ右シフトは左シフトとなります。逆の場合も同じです。符号なしの右シフト演算子(>>>
)は、この演算ではこのクラスが提供する「無限のワード・サイズ」抽出と組み合わせる意味がほとんどないため省かれています。
ビット単位の論理演算のセマンティックスは、Javaのビット整数演算子のセマンティックスを正確に模倣しています。2項演算子(and
、or
、xor
)は、演算前に2つのオペランドの短い方に対して暗黙的に符号拡張を行います。
比較演算は符号付き整数の比較を行います。これは、Javaの関連する演算子および同等の演算子により行われるものと同じです。
モジュラ算術演算は、剰余計算、べき乗、および乗法逆数計算のために提供されています。これらのメソッドは、常に0
と(modulus - 1)
の間の負でない結果を返します。
ビット演算は、オペランドの2の補数表現のシングル・ビットに使用します。必要に応じて、オペランドの符号は指示するビットを持つように拡張されます。演算中のBigIntegerと異なる符号を持つBigIntegerを生成するシングル・ビット演算はありません。これは、シングル・ビット演算が単一のビットにだけ影響し、このクラスが提供する「無限のワード・サイズ」抽出によって、各BigIntegerに先行する無限の「仮想符号ビット」が存在するためです。
説明をわかりやすく簡潔にするために、BigIntegerメソッドの説明では全体を通して擬似コードを使用します。擬似コード式(i+j)
は、「値がBigInteger i
の値とBigInteger j
の値の和であるBigInteger」を示します。擬似コード式(i == j)
は、「BigInteger i
がBigInteger j
と同じ値を表す場合にだけtrue
であること」を示します。ほかの擬似コード式も同じように解釈されます。
このクラスのメソッドおよびコンストラクタはすべて、入力パラメータに対してnullオブジェクト参照が渡されるとNullPointerException
をスローします。BigIntegerは、-2Integer.MAX_VALUE
(これを含まない)から+2Integer.MAX_VALUE
(これを含まない)までの範囲の値をサポートする必要があり、この範囲外の値をサポートすることもできます。確率的素数の値の範囲は限られ、BigInteger
でサポートされる正の範囲全体より小さい場合があります。範囲は少なくとも1から2500000000でなければなりません。
Integer.MAX_VALUE
(これを含まない)から+2Integer.MAX_VALUE
(これを含まない)までのサポートされる範囲から外れる場合、ArithmeticException
がスローされます。BigDecimal
、直列化された形式修飾子と型 | フィールドと説明 |
---|---|
static BigInteger |
ONE
BigInteger定数1です。
|
static BigInteger |
TEN
BigInteger定数10です。
|
static BigInteger |
ZERO
BigInteger定数0です。
|
コンストラクタと説明 |
---|
BigInteger(byte[] val)
BigIntegerの2の補数2進表現を含むバイト配列をBigIntegerに変換します。
|
BigInteger(int signum, byte[] magnitude)
BigIntegerの符号絶対値表現をBigIntegerに変換します。
|
BigInteger(int bitLength, int certainty, Random rnd)
ランダムに生成された(おそらく素数である)正のBigIntegerを、指定したビット長で構築します。
|
BigInteger(int numBits, Random rnd)
0 - (2
numBits - 1)の範囲に一様に分散されている、ランダムに生成されたBigIntegerを構築します。 |
BigInteger(String val)
BigIntegerの10進String表現をBigIntegerに変換します。
|
BigInteger(String val, int radix)
指定された基数内のBigIntegerのString表現をBigIntegerに変換します。
|
修飾子と型 | メソッドと説明 |
---|---|
BigInteger |
abs()
値がこのBigIntegerの絶対値であるBigIntegerを返します。
|
BigInteger |
add(BigInteger val)
値が
(this+val) であるBigIntegerを返します。 |
BigInteger |
and(BigInteger val)
値が
(this & val) であるBigIntegerを返します。 |
BigInteger |
andNot(BigInteger val)
値が
(this & ~val) であるBigIntegerを返します。 |
int |
bitCount()
このBigIntegerの2の補数表現内の、符号ビットと異なるビットの数を返します。
|
int |
bitLength()
このBigIntegerの最小の2の補数表現内のビット数を返します。ただし、符号ビットを除きます。
|
byte |
byteValueExact()
この
BigInteger をbyte に変換し、失われた情報がないかどうかを確認します。 |
BigInteger |
clearBit(int n)
値がこのBigIntegerに等しいBigIntegerを、指定されたビットをクリアして返します。
|
int |
compareTo(BigInteger val)
このBigIntegerを指定されたBigIntegerと比較します。
|
BigInteger |
divide(BigInteger val)
値が
(this /val) であるBigIntegerを返します。 |
BigInteger[] |
divideAndRemainder(BigInteger val)
(this /val) そして(this % val) と続く、2つのBigIntegerの配列を返します。 |
double |
doubleValue()
このBigIntegerを
double に変換します。 |
boolean |
equals(Object x)
このBigIntegerと指定されたObjectが等しいかどうかを比較します。
|
BigInteger |
flipBit(int n)
値がこのBigIntegerに等しいBigIntegerを、指定されたビットを反転させて返します。
|
float |
floatValue()
このBigIntegerを
float に変換します。 |
BigInteger |
gcd(BigInteger val)
値が
abs(this) とabs(val) の最大公約数であるBigIntegerを返します。 |
int |
getLowestSetBit()
このBigIntegerのもっとも右側(1番低い位)の1ビットのインデックス(もっとも右側の1ビットの右方向の0ビットの数)を返します。
|
int |
hashCode()
このBigIntegerのハッシュ・コードを返します。
|
int |
intValue()
このBigIntegerを
int に変換します。 |
int |
intValueExact()
この
BigInteger をint に変換し、失われた情報がないかどうかを確認します。 |
boolean |
isProbablePrime(int certainty)
このBigIntegerが素数である可能性が高い場合は
true 、必ず合成数である場合はfalse を返します。 |
long |
longValue()
このBigIntegerを
long に変換します。 |
long |
longValueExact()
この
BigInteger をlong に変換し、失われた情報がないかどうかを確認します。 |
BigInteger |
max(BigInteger val)
このBigIntegerと
val の最大値を返します。 |
BigInteger |
min(BigInteger val)
このBigIntegerと
val の最小値を返します。 |
BigInteger |
mod(BigInteger m)
値が
(this mod m )であるBigIntegerを返します。 |
BigInteger |
modInverse(BigInteger m)
値が
(this -1 mod m) であるBigIntegerを返します。 |
BigInteger |
modPow(BigInteger exponent, BigInteger m)
値が(thisexponent mod m)のBigIntegerを返します。
|
BigInteger |
multiply(BigInteger val)
値が
(this * val) であるBigIntegerを返します。 |
BigInteger |
negate()
値が
(-this) であるBigIntegerを返します。 |
BigInteger |
nextProbablePrime()
この
BigInteger より大きい最初の整数(おそらく素数)を返します。 |
BigInteger |
not()
値が
(~this) であるBigIntegerを返します。 |
BigInteger |
or(BigInteger val)
値が
(this|val) であるBigIntegerを返します。 |
BigInteger |
pow(int exponent)
値が(thisexponent)のBigIntegerを返します。
|
static BigInteger |
probablePrime(int bitLength, Random rnd)
指定されたビット長で正のBigInteger (おそらく素数)を返します。
|
BigInteger |
remainder(BigInteger val)
値が
(this % val) であるBigIntegerを返します。 |
BigInteger |
setBit(int n)
値がこのBigIntegerに等しいBigIntegerを、指定されたビットを設定して返します。
|
BigInteger |
shiftLeft(int n)
値が
(this << n) であるBigIntegerを返します。 |
BigInteger |
shiftRight(int n)
値が
(this>> n) であるBigIntegerを返します。 |
short |
shortValueExact()
この
BigInteger をshort に変換して、失われた情報がないかどうかを確認します。 |
int |
signum()
このBigIntegerの符号要素を返します。
|
BigInteger |
subtract(BigInteger val)
値が
(this - val) であるBigIntegerを返します。 |
boolean |
testBit(int n)
指定されたビットが設定されている場合にだけ
true を返します。 |
byte[] |
toByteArray()
このBigIntegerの2の補数表現を含むバイト配列を返します。
|
String |
toString()
このBigIntegerの10進String表現を返します。
|
String |
toString(int radix)
指定された基数内のこのBigIntegerのString表現を返します。
|
static BigInteger |
valueOf(long val)
値が指定された
long の値と等しいBigIntegerを返します。 |
BigInteger |
xor(BigInteger val)
値が
(this^val) であるBigIntegerを返します。 |
byteValue, shortValue
public static final BigInteger ZERO
public static final BigInteger ONE
public static final BigInteger TEN
public BigInteger(byte[] val)
val
- BigIntegerの、ビッグ・エンディアン2の補数バイナリ表現。NumberFormatException
- val
の長さが0バイトの場合。public BigInteger(int signum, byte[] magnitude)
signum
- 数字の符号(負は -1、ゼロは0、正は1)。magnitude
- 数字の絶対値のビッグエンディアン・バイナリ表現。NumberFormatException
- signum
が3つの有効な値(-1、0、1)のどれでもないか、signum
が0で、magnitude
に1つ以上の0以外のバイトが含まれている場合。public BigInteger(String val, int radix)
Character.digit
で提供されています。Stringには、不適切な文字(空白など)を含めることはできません。val
- BigIntegerのString表現。radix
- val
の解釈で使用される基数。NumberFormatException
- val
が、指定した基数内のBigIntegerの有効な表現ではないか、radix
がCharacter.MIN_RADIX
からCharacter.MAX_RADIX
の範囲外にある場合。Character.digit(char, int)
public BigInteger(String val)
Character.digit
で提供されています。Stringには、不適切な文字(空白など)を含めることはできません。val
- BigIntegerの10進数のString表現。NumberFormatException
- val
はBigIntegerの表現としては無効である。Character.digit(char, int)
public BigInteger(int numBits, Random rnd)
numBits
- 1)の範囲に一様に分散されている、ランダムに生成されたBigIntegerを構築します。分散の一様さは、rnd
のランダム・ビットのソースに誤りがないことを前提とします。このコンストラクタは、常に負でないBigIntegerを構築します。numBits
- 新しいBigIntegerの最大ビット長。rnd
- 新しいBigIntegerの計算で使用されるランダム・ビットのソース。IllegalArgumentException
- numBits
が負の場合。bitLength()
public BigInteger(int bitLength, int certainty, Random rnd)
確実性を指定する必要がない場合は、このコンストラクタではなくprobablePrime
メソッドを使用することをお薦めします。
bitLength
- 返されるBigIntegerのビット長。certainty
- 呼出し側が許容できる不確実性の程度。新しいBigIntegerが素数である確率は、(1 - 1/2certainty
)より大きい。このコンストラクタの実行時間はこのパラメータの値に比例するrnd
- 素数度をテストする候補の選択で使用されるランダム・ビットのソース。ArithmeticException
- bitLength < 2
であるか、bitLength
が大きすぎる場合。bitLength()
public static BigInteger probablePrime(int bitLength, Random rnd)
bitLength
- 返されるBigIntegerのビット長。rnd
- 素数度をテストする候補の選択で使用されるランダム・ビットのソース。bitLength
ビットのBigInteger (おそらく素数)ArithmeticException
- bitLength < 2
であるか、bitLength
が大きすぎる場合。bitLength()
public BigInteger nextProbablePrime()
BigInteger
より大きい最初の整数(おそらく素数)を返します。このメソッドの返す数が合成数である確率は2-100を超えません。このメソッドは検索時に素数をスキップしません。p
を返す場合、this < q < p
が成り立つような素数q
はありません。BigInteger
より大きい最初の整数(おそらく素数)。ArithmeticException
- this < 0
であるか、this
が大きすぎる場合。public static BigInteger valueOf(long val)
long
の値と等しいBigIntegerを返します。この「staticファクトリ・メソッド」は、よく使われるBigIntegerを再利用できるようにするために、(long
)コンストラクタの代わりに提供されます。val
- 返されるBigIntegerの値。public BigInteger add(BigInteger val)
(this+val)
であるBigIntegerを返します。val
- このBigIntegerに加算する値。this + val
public BigInteger subtract(BigInteger val)
(this - val)
であるBigIntegerを返します。val
- このBigIntegerから減算する値。this - val
public BigInteger multiply(BigInteger val)
(this * val)
であるBigIntegerを返します。val
- このBigIntegerで乗算する値。this * val
public BigInteger divide(BigInteger val)
(this /val)
であるBigIntegerを返します。val
- このBigIntegerを除算する値。this / val
ArithmeticException
- val
が0の場合。public BigInteger[] divideAndRemainder(BigInteger val)
(this /val)
そして(this % val)
と続く、2つのBigIntegerの配列を返します。val
- このBigIntegerを除算する値、および計算された剰余。(this /val)
が最初の要素で、剰余(this % val)
が最後の要素。ArithmeticException
- val
が0の場合。public BigInteger remainder(BigInteger val)
(this % val)
であるBigIntegerを返します。val
- このBigIntegerを除算する値、および計算された剰余。this % val
ArithmeticException
- val
が0の場合。public BigInteger pow(int exponent)
exponent
はBigIntegerではなく整数です。exponent
- このBigIntegerを累乗する指数。ArithmeticException
- exponent
が負の場合。(非整数値を生成する演算が生じる。)public BigInteger gcd(BigInteger val)
abs(this)
とabs(val)
の最大公約数であるBigIntegerを返します。this == 0 && val == 0
の場合は0を返します。val
- GCDの計算に使用する値。GCD(abs(this), abs(val))
public BigInteger abs()
abs(this)
public BigInteger negate()
(-this)
であるBigIntegerを返します。-this
public int signum()
public BigInteger mod(BigInteger m)
(this mod m
)であるBigIntegerを返します。このメソッドは、常に負でない BigIntegerを返すremainder
とは異なります。m
- モジュラス。this mod m
ArithmeticException
- m
≤ 0remainder(java.math.BigInteger)
public BigInteger modPow(BigInteger exponent, BigInteger m)
pow
と違って、このメソッドは負の指数を許容する。)exponent
- 指数m
- モジュラス。ArithmeticException
- m
≤0であるか、指数が負でこのBigIntegerがm
の素数ではない場合。modInverse(java.math.BigInteger)
public BigInteger modInverse(BigInteger m)
(this
-1 mod m)
であるBigIntegerを返します。m
- モジュラス。this
-1 mod m
。ArithmeticException
- m
≤0であるか、あるいはこのBigIntegerがmod mの乗法逆数を持たない場合(つまり、このBigIntegerがmの素数ではない場合)。public BigInteger shiftLeft(int n)
(this << n)
であるBigIntegerを返します。シフト移動量n
が負の場合は、このメソッドは右シフトを実行します。(floor(this * 2n)を計算する。)n
- ビット単位でのシフト移動量。this << n
shiftRight(int)
public BigInteger shiftRight(int n)
(this>> n)
であるBigIntegerを返します。符号拡張が行われます。シフト移動量n
が負の場合は、このメソッドは左シフトを実行します。(floor(this /2n)を計算する。)n
- ビット単位でのシフト移動量。this >> n
shiftLeft(int)
public BigInteger and(BigInteger val)
(this & val)
であるBigIntegerを返します。(このメソッドは、thisとvalの両方が負の場合は負のBigIntegerを返す。)val
- このBigIntegerとの論理積をとる値。this & val
public BigInteger or(BigInteger val)
(this|val)
であるBigIntegerを返します。(このメソッドは、thisまたはvalが負の場合は負のBigIntegerを返す。)val
- このBigIntegerとの論理和をとる値。this | val
public BigInteger xor(BigInteger val)
(this^val)
であるBigIntegerを返します。(このメソッドは、thisとvalの片方だけが負の場合に負のBigIntegerを返す。)val
- このBigIntegerとの排他的論理和をとる値。this ^ val
public BigInteger not()
(~this)
であるBigIntegerを返します。(このメソッドは、このBigIntegerが負でない場合に負の値を返す。)~this
public BigInteger andNot(BigInteger val)
(this & ~val)
であるBigIntegerを返します。and(val.not())
と同等のこのメソッドは、マスキング演算の便宜を図るために提供されています。(このメソッドは、this
が負でval
が正の場合に負のBigInteger数値を返す。)val
- このBigIntegerで補数がとられ、論理積がとられる値。this & ~val
public boolean testBit(int n)
true
を返します。(((this & (1<<n))!= 0)
を計算する。)n
- テストするビットのインデックス。true
。ArithmeticException
- n
が負の場合。public BigInteger setBit(int n)
(this|(1<<n))
を計算する。)n
- 設定するビットのインデックス。this | (1<<n)
ArithmeticException
- n
が負の場合。public BigInteger clearBit(int n)
(this & ~(1<<n))
を計算する。)n
- クリアするビットのインデックス。this & ~(1<<n)
ArithmeticException
- n
が負の場合。public BigInteger flipBit(int n)
(this^(1<<n))
を計算する。)n
- 反転するビットのインデックス。this ^ (1<<n)
ArithmeticException
- n
が負の場合。public int getLowestSetBit()
(this == 0? -1 : log2(this & -this))
を計算する。)public int bitLength()
(ceil(log2(this < 0 ? -this : this+1)))
を計算する。)public int bitCount()
public boolean isProbablePrime(int certainty)
true
、必ず合成数である場合はfalse
を返します。certainty
が≤0の場合、true
が返されます。certainty
- 呼出し側が許容できる不確実性の程度。この呼出しがtrue
を返す場合、このBigIntegerが素数である確率は(1 - 1/2certainty
)を超えます。このメソッドの実行時間はこのパラメータの値に比例します。true
、必ず合成数である場合はfalse
。public int compareTo(BigInteger val)
(x.compareTo(y)
<op> 0)
という組合せをお薦めします。この場合、<op>には6つの比較演算子のうちの1つが入ります。compareTo
、インタフェース: Comparable<BigInteger>
val
- このBigIntegerと比較するBigInteger。val
より小さい場合は -1、等しい場合は0、大きい場合は1。public boolean equals(Object x)
equals
、クラス: Object
x
- このBigIntegerと比較するObject。true
。Object.hashCode()
, HashMap
public BigInteger min(BigInteger val)
val
の最小値を返します。val
- 最小値の計算に使用する値。val
のうちで小さい方の値を持つBigInteger。値が等しい場合はどちらかが返される。public BigInteger max(BigInteger val)
val
の最大値を返します。val
- 最大値の計算に使用する値。val
のうちで大きい方の値を持つBigInteger。値が等しい場合はどちらかが返される。public int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public String toString(int radix)
Character.MIN_RADIX
からCharacter.MAX_RADIX
の範囲外にある場合、デフォルトでは10になります(Integer.toString
の場合と同じ)。Character.forDigit
による数値から文字へのマッピングが使用され、必要に応じてマイナス符号が前に付けられます。(この表現は(String, int)
コンストラクタと互換性があります)。radix
- String表現の基数。Integer.toString(int, int)
, Character.forDigit(int, int)
, BigInteger(java.lang.String, int)
public String toString()
Character.forDigit
による数値から文字へのマッピングが使用され、必要に応じてマイナス符号が前に付けられます。(この表現は(String)
コンストラクタと互換性があり、Javaの+演算子との連結を可能にします。)toString
、クラス: Object
Character.forDigit(int, int)
, BigInteger(java.lang.String)
public byte[] toByteArray()
(ceil((this.bitLength()+1)/8))
)が含まれます(この表現は(byte[])
コンストラクタと互換性があります)。BigInteger(byte[])
public int intValue()
int
に変換します。この変換は、『Java™言語仕様』のセクション5.1.3で定義されたlong
からint
へのナロー・プリミティブ変換と同様です。このBigIntegerが長すぎてint
内に収まらない場合、下位32ビットだけが返されます。この変換により、このBigInteger値の絶対値全体に関する情報が失われ、逆の符号で返される可能性があります。intValue
、クラス: Number
int
に変換されたこのBigInteger。intValueExact()
public long longValue()
long
に変換します。この変換は、『Java™言語仕様』のセクション5.1.3で定義されたlong
からint
へのナロー・プリミティブ変換と同様です。このBigIntegerが長すぎてlong
内に収まらない場合、下位64ビットだけが返されます。この変換により、このBigInteger値の絶対値全体に関する情報が失われ、逆の符号で返される可能性があります。longValue
、クラス: Number
long
に変換されたこのBigInteger。longValueExact()
public float floatValue()
float
に変換します。この変換は、『Java(tm)言語仕様』のセクション5.1.3で定義されたdouble
からfloat
への縮小プリミティブ変換と同様です。このBigIntegerの絶対値が大きすぎてfloat
として表現できない場合、適宜Float.NEGATIVE_INFINITY
またはFloat.POSITIVE_INFINITY
に変換されます。戻り値が有限である場合も、この変換により、BigInteger値の精度に関する情報が失われる可能性があります。floatValue
、クラス: Number
float
に変換されたこのBigInteger。public double doubleValue()
double
に変換します。この変換は、『Java(tm)言語仕様』のセクション5.1.3で定義されたdouble
からfloat
への縮小プリミティブ変換と同様です。このBigIntegerの絶対値が大きすぎてdouble
として表現できない場合、適宜Double.NEGATIVE_INFINITY
またはDouble.POSITIVE_INFINITY
に変換されます。戻り値が有限である場合も、この変換により、BigInteger値の精度に関する情報が失われる可能性があります。doubleValue
、クラス: Number
double
に変換されたこのBigInteger。public long longValueExact()
BigInteger
をlong
に変換し、失われた情報がないかどうかを確認します。このBigInteger
の値がlong
型の範囲から外れている場合は、ArithmeticException
がスローされます。long
に変換されたこのBigInteger
。ArithmeticException
- this
の値がlong
にぴったり収まらない場合。longValue()
public int intValueExact()
BigInteger
をint
に変換し、失われた情報がないかどうかを確認します。このBigInteger
の値がint
型の範囲から外れている場合は、ArithmeticException
がスローされます。int
に変換されたこのBigInteger
。ArithmeticException
- this
の値がint
にぴったり収まらない場合。intValue()
public short shortValueExact()
BigInteger
をshort
に変換して、失われた情報がないかどうかを確認します。このBigInteger
の値がshort
型の範囲から外れている場合は、ArithmeticException
がスローされます。short
に変換されたこのBigInteger
。ArithmeticException
- this
の値がshort
にぴったり収まらない場合。Number.shortValue()
public byte byteValueExact()
BigInteger
をbyte
に変換し、失われた情報がないかどうかを確認します。このBigInteger
の値がbyte
型の範囲から外れている場合は、ArithmeticException
がスローされます。byte
に変換されたこのBigInteger
。ArithmeticException
- this
の値がbyte
にぴったり収まらない場合。Number.byteValue()
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.