CodeGym /Java Blog /무작위의 /자바 BigInteger 클래스
John Squirrels
레벨 41
San Francisco

자바 BigInteger 클래스

무작위의 그룹에 게시되었습니다

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 를 만들었습니다 . BigIntegerbig1big2 에 각각 값 20과 60을 사용하여 서로 다른 방법을 적용했습니다 . 다음과 같은 방법을 적용했습니다.
  1. big2.subtract(big1) 60에서 20을 뺍니다.
  2. big1.add(big2)는 20과 60을 더합니다.
  3. big1.multiply(big2)는 20과 60을 곱합니다.
  4. big2.divide(big1)는 60을 20으로 나눕니다.
  5. big1.min(big2) 두 값 중 더 작은 값을 가져옵니다.
  6. big1.max(big2) 두 값 중 더 큰 값을 얻습니다.
java.math.BigInteger 는 코드 맨 위에서 가져옵니다 .

결론

이제 Java의 BigInteger 클래스에 익숙해졌을 것입니다. 다른 유형의 생성자를 사용하여 코드에서 BigInteger 를 사용할 수 있어야 합니다 . 또한 BigInteger 클래스 메서드 를 사용하여 다른 산술 및 논리 연산을 수행할 수 있어야 합니다 . 문제는 BigInteger 의 값이 다른 여러 메서드를 호출해 볼 수 있다는 것입니다 . Java에서 BigInteger 에 대한 이해를 더욱 강화할 것입니다 . 학습에 더 자신감을 가지려면 반복해서 연습해 보세요. 좋은 코딩의 핵심은 연습입니다. 행운과 행복한 코딩을 기원합니다!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION