BigInteger 클래스란?
Java에는 int 또는 long과 같이 정수 연산을 수행하는 데 사용되는 몇 가지 기본 데이터 유형이 있습니다 . 그러나 때때로 우리는 그러한 기본 데이터 유형의 범위 밖에 있는 많은 수를 저장해야 합니다. BigInteger 클래스는 매우 큰 수에 대한 수학적 계산에 사용됩니다. 이것은 java.lang.Math 패키지 의 모든 메소드 와 Java의 모든 기본 정수 연산자에 대한 아날로그를 제공합니다. BigInteger클래스는 모듈러 산술 연산, 비트 조작, GCD 계산 및 기타 몇 가지 연산을 다룹니다. BigInteger는 2의 보수 표기법으로 표시됩니다. 메모리가 동적으로 할당되기 때문에 얼마나 많은 수를 저장할 수 있는지에 대한 이론적인 제한은 없습니다. 그러나 실제로 메모리는 제한되어 있으며 Integer.MAX_VALUE 보다 작거나 같은 비트 수를 가진 정수를 저장할 수 있습니다 . 이것은 실질적으로 거의 모든 큰 숫자를 저장하기에 충분히 큰 상한을 제공합니다.BigInteger 클래스는 어떻게 구현됩니까?
import java.math.BigInteger;
코드에서 BigInteger 클래스를 구현하려면 java.math.BigInteger 패키지를 가져와야 합니다 .
BigInteger 클래스 선언
Java의 BigInteger 클래스 는 java.math 패키지 에서 다음과 같은 방식으로 선언됩니다 .
public class BigInteger
extends Number
implements Comparable<BigInteger>
BigInteger 클래스 는 Number 클래스를 확장 하고 Comparable 인터페이스를 구현합니다. java.math 패키지 에 선언 및 정의되어 있습니다 .
클래스 생성자
Java의 BigInteger 클래스에는 오버로드된 생성자가 많이 있습니다. 편집기에서 각각 실행하여 어떻게 작동하는지 확인할 수 있습니다.Sr# | 건설자 | 설명 |
---|---|---|
1 | BigInteger(바이트[] 값) | 바이트 배열을 BigInteger 로 변환합니다 . |
2 | BigInteger(int signum, byte[] 크기) | 부호 크기 표현을 BigInteger 로 변환합니다 . |
삼 | BigInteger(int bitLength, int 확실성, 임의 rnd) | 지정된 길이의 임의로 생성된 양의 BigInteger를 생성합니다. |
4 | BigInteger(문자열 값) | 10진수 문자열 표현을 BigInteger 로 변환합니다 . |
5 | BigInteger(문자열 값, int 기수) | 지정된 기수의 String 표현을 BigInteger 로 변환합니다 . |
수업 방법
Java의 BigInteger 클래스에는 많은 메소드가 있으며 그 중 일부는 아래에 설명되어 있습니다. 표에서 'this'는 메서드를 호출하는 BigInteger를 나타내고 ' val '은 메서드에 전달되는 인수입니다.복근() | ' this ' BigInteger 의 절대값을 반환합니다 . |
추가하다() | ' this + val ' 을 계산하여 Biginteger 를 반환합니다 . |
덜다() | ' this - val '을 계산하여 Biginteger 를 반환합니다 . |
나누다() | ' this / val ' 을 계산하여 Biginteger 를 반환합니다 . |
곱하다() | ' this * val '을 계산하여 Biginteger 를 반환합니다 . |
값의() | 주어진 long 의 BigInteger 값을 반환합니다 . |
같음() | ' this ' BigInteger 와 주어진 객체 사이의 동등성을 비교합니다 . |
펑() | ' thisexponent '를 계산하여 Biginteger를 반환합니다 . |
분() | ' this ' BigInteger 와 주어진 값 사이의 최소값을 반환합니다 . |
최대() | ' this ' BigInteger 와 주어진 값 사이의 최대값을 반환합니다 . |
모드() | ' this mod m ' 에 대한 값을 반환합니다 . |
gcd() | ' this '의 절대값과 ' 전달된 값 ' 사이의 최대 공약수인 BigInteger를 반환합니다 . |
비트카운트() | ' this ' BigInteger 의 2의 보수 표현에서 비트 수를 반환합니다 . |
비트길이() | ' this ' BigInteger 의 최소 2의 보수 표현에서 부호 비트를 제외한 비트 수를 반환합니다 . |
그리고() | ' this & val '을 계산하여 Biginteger 를 반환합니다 . |
또는() | ' this | _ 발 '. |
아니다() | ' ~this'를 계산하여 Biginteger를 반환합니다 . |
andNot() | ' this & ~val ' 을 계산하여 Biginteger 를 반환합니다 . |
정수값() | BigInteger를 int 로 변환합니다 . |
플로트값() | BigInteger를 float 로 변환합니다 . |
긴 값() | BigInteger를 long 으로 변환합니다 . |
이중값() | BigInteger를 double 로 변환합니다 . |
toString() | BigInteger 의 10진수 문자열 표현을 반환합니다 . |
예 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));
}
}
산출
15511210043330985984000000
설명
위 스니펫에서 java.math.BigInteger 패키지를 가져와 BigInteger 클래스를 사용하여 큰 수의 인수를 계산합니다 . 우리는 calculateFactorial 메서드를 만들었습니다 . 이 메서드는 BigInteger를 만든 다음 곱하기 메서드 f.multiply(BigInteger.valueOf(i)) 를 사용하여 계승을 계산합니다 .예 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);
}
}
산출
60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 최소값: 20 최대값: 60
설명
위 스니펫에서 BigInteger(String val) 생성자를 사용하여 두 개의 BigInteger 를 만들었습니다 . BigInteger 의 big1 과 big2 에 각각 값 20과 60을 사용하여 서로 다른 방법을 적용했습니다 . 다음과 같은 방법을 적용했습니다.- big2.subtract(big1) 60에서 20을 뺍니다.
- big1.add(big2)는 20과 60을 더합니다.
- big1.multiply(big2)는 20과 60을 곱합니다.
- big2.divide(big1)는 60을 20으로 나눕니다.
- big1.min(big2) 두 값 중 더 작은 값을 가져옵니다.
- big1.max(big2) 두 값 중 더 큰 값을 얻습니다.
GO TO FULL VERSION