자바 자료형의 기본형 중 정수형(byte, short, int, long) 보다 큰 범위의 정수를 다루고 싶을 때 사용하는 클래스이다.
int[]
배열로 데이터를 저장한다.new BigInteger("10000000")
와 같이 문자열로 생성합니다.Exact
를 붙으면 형변환 결과가 해당 타입의 범위에 속하지 않으면 Exception
을 발생시킨다.intValueExact()
BigInteger는 불변 타입으로, 모두 BigInteger 타입으로 연산 결과를 반환합니다.
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);
BigInteger는 제곱승 연산을 하여야 하고, 그 값이 매우 커지는 경우에 유용하게 사용될 것 같다.
또한 BigInteger는 매우 큰 값을 연산하므로, 성능 향상을 위해 비트 연산 메서드도 제공한다. 성능 문제가 있을 경우 이것도 한번 찾아보는 것이 좋을 듯 하다.