[java] BigInteger 사용 방법

꾸준히·2023년 3월 5일
0
post-thumbnail

📌 BigInteger 란?

자바 자료형의 기본형 중 정수형(byte, short, int, long) 보다 큰 범위의 정수를 다루고 싶을 때 사용하는 클래스이다.

  • java.Math.BigInteger
  • 내부에 int[] 배열로 데이터를 저장한다.

📌 정수 자료형의 값 범위

  • byte : -128 ~ 127
  • short : 약 -3만 ~ 3만
  • int : 약 -20억 ~ 20억
  • long : +- 약 10진수 19자리
  • BigInteger : Integer.MAX_INTGER ( +- 10의 6억승)

📌 BigInteger 생성과 형변환

생성

  • new BigInteger("10000000") 와 같이 문자열로 생성합니다.

형변환

  • String 변환 : toString()
  • int로 변환 : intValue()
  • long으로 변환 : longValue()
  • float으로 변환 : floatValue()
  • double으로 변환 : doubleValue()

Exact 형변환

  • 메서드 이름 끝에 Exact를 붙으면 형변환 결과가 해당 타입의 범위에 속하지 않으면 Exception을 발생시킨다.
  • int변환 : intValueExact()

📌 연산

BigInteger는 불변 타입으로, 모두 BigInteger 타입으로 연산 결과를 반환합니다.

  • "+" : add(BigInteger val) - 더하기
  • "-" : subtract(BigInteger val) - 빼기
  • "*" : multiply(BigInteger val) - 곱하기
  • "/" : divide(BigInteger val) - 나누기
  • "%" : remainder(BigInteger val) - 나머지
  • 제곱 : pow(int exponent) - n승 (제곱)
BigInteger bigInteger = new BigInteger("3");
System.out.println("add      = " + bigInteger.add(new BigInteger("400")));
System.out.println("subtract = " + bigInteger.subtract(new BigInteger("400")));
System.out.println("multiply = " + bigInteger.multiply(new BigInteger("400")));
System.out.println("divide   = " + bigInteger.divide(new BigInteger("400")));
System.out.println("remainder = " + bigInteger.remainder(new BigInteger("400")));
System.out.println("pow       = " + bigInteger.pow(4));

예시 문제

2의 100,000 승을 한 결과에 10을 뺀 후, 1,000,000,000 으로 나눈 나머지를 정수형으로 반환하라

BigInteger bigInteger = new BigInteger("2");
BigInteger sub = new BigInteger("10");
BigInteger div = new BigInteger("1000000000");
BigInteger result = bigInteger.pow(100000).subtract(sub).remainder(div).intValue();
System.out.println(result);
  • 답 : 883109366

BigInteger는 제곱승 연산을 하여야 하고, 그 값이 매우 커지는 경우에 유용하게 사용될 것 같다.
또한 BigInteger는 매우 큰 값을 연산하므로, 성능 향상을 위해 비트 연산 메서드도 제공한다. 성능 문제가 있을 경우 이것도 한번 찾아보는 것이 좋을 듯 하다.

0개의 댓글