Ano ang isang BigInteger Class?
Mayroong ilang mga primitive na uri ng data sa Java na ginagamit, gaya ng int o long, upang magsagawa ng mga operasyong integer. Gayunpaman, kung minsan kailangan nating mag-imbak ng malalaking numero sa labas ng saklaw ng naturang mga primitive na uri ng data. Ang BigInteger Class ay ginagamit para sa mathematical computations para sa napakalaking numero. Nagbibigay ito ng lahat ng pamamaraan mula sa java.lang.Math package at mga analogue sa lahat ng primitive integer operator ng Java. BigIntegerSaklaw ng klase ang mga operasyon para sa modular arithmetic, pagmamanipula ng bit, pagkalkula ng GCD, at ilang iba pang operasyon. Ang mga BigInteger ay kinakatawan sa two's-complement notation. Walang teoretikal na limitasyon sa kung gaano kalaki ang isang numero na maaaring maimbak dahil ang memorya ay inilalaan nang pabago-bago. Gayunpaman, halos limitado ang memorya at maaari tayong mag-imbak ng isang integer na may bilang ng mga bit na mas mababa sa o katumbas ng Integer.MAX_VALUE . Nagbibigay ito ng sapat na malaking upper bound upang mag-imbak ng halos lahat ng malalaking numero.Paano Ipinapatupad ang BigInteger Class?
import java.math.BigInteger;
Upang ipatupad ang klase ng BigInteger sa iyong code, kailangan mong mag-import ng java.math.BigInteger package.
BigInteger Class Declaration
Ang klase ng BigInteger sa Java ay idineklara sa sumusunod na paraan sa java.math package:
public class BigInteger
extends Number
implements Comparable<BigInteger>
Pinapalawak ng klase ng BigInteger ang klase ng Numero at nagpapatupad ng Maihahambing na interface. Ito ay idineklara at tinukoy sa java.math package.
Mga Tagabuo ng Klase
Ang BigInteger Class ng Java ay may maraming overloaded na mga konstruktor. Maaari mong subukan at patakbuhin ang bawat isa sa editor upang makita kung paano gumagana ang mga ito.Sr# | Tagabuo | Paglalarawan |
---|---|---|
1 | BigInteger(byte[] val) | Nagsasalin ng byte array sa isang BigInteger . |
2 | BigInteger(int signum, byte[] magnitude) | Nagsasalin ng sign-magnitude na representasyon sa isang BigInteger . |
3 | BigInteger(int bitLength, int certainty, Random rnd) | Bumubuo ng random na nabuong positibong BigInteger ng tinukoy na haba. |
4 | BigInteger(String val) | Nagsasalin ng representasyon ng decimal string sa isang BigInteger . |
5 | BigInteger(String val, int radix) | Kino-convert ang representasyon ng String sa tinukoy na radix sa isang BigInteger . |
Mga Paraan ng Klase
Ang klase ng BigInteger ng Java ay may maraming mga pamamaraan, ang ilan ay inilalarawan sa ibaba. Sa talahanayan, ang 'ito' ay kumakatawan sa BigInteger na tumatawag sa pamamaraan at ang ' val ' ay ang argumentong ipinasa sa pamamaraan.abs() | Ibinabalik nito ang ganap na halaga ng ' this ' BigInteger . |
magdagdag () | Nagbabalik ito ng Biginteger sa pamamagitan ng pag-compute ng ' this + val '. |
ibawas() | Nagbabalik ito ng Biginteger sa pamamagitan ng pag-compute ng ' this - val '. |
hatiin() | Nagbabalik ito ng Biginteger sa pamamagitan ng pag-compute ng ' this / val '. |
multiply() | Nagbabalik ito ng Biginteger sa pamamagitan ng pag-compute ng ' this * val '. |
valueOf() | Nagbabalik ito ng BigInteger na halaga ng ibinigay na long . |
katumbas ng() | Inihahambing nito ang pagkakapantay-pantay sa pagitan ng ' ito ' na BigInteger at isang ibinigay na bagay. |
pow() | Nagbabalik ito ng Biginteger sa pamamagitan ng pag-compute ng ' this exponent '. |
min() | Ibinabalik nito ang pinakamababa sa pagitan ng ' this ' BigInteger at ng ibinigay na halaga. |
max() | Ibinabalik nito ang maximum sa pagitan ng ' this ' BigInteger at ng ibinigay na halaga. |
mod() | Nagbabalik ito ng halaga para sa ' this mod m '. |
gcd() | Nagbabalik ito ng BigInteger na ang pinakamalaking karaniwang divisor sa pagitan ng ganap na halaga ng ' ito ' at ng ' naipasa na halaga '. |
bitCount() | Ibinabalik nito ang bilang ng mga bit sa two's-complement na representasyon ng ' this ' BigInteger . |
bitLength() | Ibinabalik nito ang bilang ng mga bit, hindi kasama ang sign bit, sa minimal na two's-complement na representasyon ng ' this ' BigInteger . |
at() | Nagbabalik ito ng Biginteger sa pamamagitan ng pag-compute ng ' this & val '. |
o() | Nagbabalik ito ng Biginteger sa pamamagitan ng pag-compute ng ' ito | val '. |
hindi() | Nagbabalik ito ng Biginteger sa pamamagitan ng pag-compute ng ' ~this'. |
at hindi() | Nagbabalik ito ng Biginteger sa pamamagitan ng pag-compute ng ' this & ~ val '. |
intValue() | Kino-convert nito ang BigInteger sa isang int . |
floatValue() | Kino-convert nito ang BigInteger upang lumutang . |
longValue() | Kino-convert nito ang BigInteger sa long . |
doubleValue() | Kino-convert nito ang BigInteger sa double . |
toString() | Ibinabalik nito ang representasyon ng decimal string ng BigInteger . |
Halimbawa 1
import java.math.BigInteger;
public class Example1 {
static BigInteger calculateFactorial(int val) {
// Initialize result
BigInteger f = BigInteger.ONE; // Or new BigInteger("1")
// compute factorial
for (int i = 2; i <= val; i++) {
f = f.multiply(BigInteger.valueOf(i));
}
return f;
}
// Driver method
public static void main(String[] args) {
int val = 25;
System.out.println(calculateFactorial(val));
}
}
Output
15511210043330985984000000
Paliwanag
Sa snippet sa itaas, ang factor ng isang malaking bilang ay kinakalkula gamit ang BigInteger Class sa pamamagitan ng pag-import ng java.math.BigInteger package. Gumawa kami ng isang kalkulasyon ng Factorial na pamamaraan. Lumilikha ang paraang ito ng BigInteger at pagkatapos ay kinakalkula ang factorial sa pamamagitan ng paggamit ng multiply method f.multiply(BigInteger.valueOf(i)) .Halimbawa 2
import java.math.BigInteger;
public class Example2 {
public static void main(String[] args) {
BigInteger big1 = new BigInteger("20");
BigInteger big2 = new BigInteger("60");
BigInteger sub = big2.subtract(big1);
System.out.println(big2 + " - " + big1 + " = " + sub);
BigInteger add = big1.add(big2);
System.out.println(big1 + " + " + big2 + " = " + add);
BigInteger mul = big1.multiply(big2);
System.out.println(big1 + " * " + big2 + " = " + mul);
BigInteger div = big2.divide(big1);
System.out.println(big2 + " / " + big1 + " = " + div);
BigInteger min = big1.min(big2);
System.out.println("min value: " + min);
BigInteger max = big1.max(big2);
System.out.println("max value: " + max);
}
}
Output
60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 min value: 20 max na value: 60
Paliwanag
Sa snippet sa itaas, gumawa kami ng dalawang BigInteger s gamit ang BigInteger(String val) constructor. Naglapat kami ng iba't ibang pamamaraan sa BigInteger 's big1 at big2 na may mga value na 20 at 60 ayon sa pagkakabanggit. Inilapat namin ang mga sumusunod na pamamaraan:- big2.subtract(big1) para ibawas ang 20 sa 60.
- big1.add(big2) para magdagdag ng 20 at 60.
- big1.multiply(big2) para i-multiply ang 20 at 60.
- big2.divide(big1) para hatiin ang 60 sa 20.
- big1.min(big2) para makuha ang mas maliit sa dalawang value.
- big1.max(big2) para makuha ang mas malaki sa dalawang value.
GO TO FULL VERSION