java

[파이썬에서 자바로 바꾸기] BigInteger

22gamin 2024. 9. 24. 15:52

 

파이썬의 int 타입은 매우 큰 숫자(거의 무한)도 처리할 수 있지만, 자바의 int는 2^{31} (약 21억)까지만 처리할 수 있음.

long 타입은(2^63 - 1)까지 처리할 수 있음.

 

하지만 자바에서 long 타입 마저 넘어서는 정수를 다룰 땐, 어떻게 해야할까?

 

 

BigInteger

  • 자바에서 매우 큰 정수를 처리하기 위한 클래스
  • int와 long과 달리 BigInteger는 크기의 제한 없이 큰 숫자를 다룰 수 있기 때문에, 수학적 연산에서 오버플로우를 방지할 수 있음
    • 주로 암호학, 팩토리얼 계산, 조합 등에서 큰 숫자를 처리할 때 사용

 

 

주요 특징

  • 임의의 크기
    • 자바의 기본 자료형(int, long)은 범위 제한이 있지만, BigInteger는 메모리가 허용하는 한 임의의 크기의 정수를 다룰 수 있음.
  • 불변성
    • BigInteger는 불변 객체이다. 즉, 한 번 값을 설정하면 그 값을 변경할 수 없음. 대신 메서드를 호출하면 새로운 BigInteger 객체를 반환함.

 

 

 

자주 사용하는 메서드

 

생성

import java.math.BigInteger; 

BigInteger num = BigInteger.valueOf(12345);
  • BigInteger.valueOf(long val)   →  정수를 BigInteger로 변환

 

 

산술 연산

  • num1.add(num2);  - 덧셈
  • num1.subtract(num2);  - 뺄셈
  • num1.multiply(num2);  - 곱셈
  • num1.divide(num2);  - 나눗셈
  • num1.mod(num2);  - 나머지 연산