자바 BigInteger

Jaba Biginteger



Java는 64비트 숫자보다 큰 매우 큰 숫자를 관리하기 위한 특별한 BigInteger 클래스를 제공합니다. 이 클래스가 처리할 수 있는 정수 값의 크기는 단순히 JVM의 할당된 메모리에 의해 제한됩니다. Number.implements를 상속하는 BigInteger 클래스는 Comparable 인터페이스를 구현합니다. 모든 Java 기본 정수 연산자와 java.lang.math 모듈의 모든 메서드에 해당하는 항목을 제공합니다. BigInteger 클래스의 불변성 때문에 BigInteger 객체의 저장된 값을 수정할 수 없습니다.

예 1:

다음 프로그램은 Java에서 BigInteger를 생성하고 제공된 BigInteger 값에 산술 연산을 적용하는 방법을 제공합니다.








프로그램 내부의 java math 패키지에서 BigInteger 클래스를 가져왔습니다. 그 후 Java 클래스 'BigIntegerExample'의 main() 메서드에서 BigInteger 개체 'bigInt1' 및 'bigInt2'를 선언했습니다. 다음으로 BigInteger 클래스 내에서 큰 숫자 값으로 BigInteger 객체를 초기화했습니다. 지정된 큰 정수 값에 대해 산술 연산을 수행하기 위해 BigInteger 클래스의 또 다른 개체를 만들었습니다. 개체는 BinInteger 값을 곱하기 위한 'Multiplication'과 BigInteger 값을 나누기 위한 'Division'으로 선언됩니다.



그런 다음 BigInteger의 multiply() 메서드와 함께 'bigInt1'을 'bigInt2'라는 입력을 받는 'multiply' 객체에 할당했습니다. 또한 “bigInt1”로 나누어질 “bigInt2” 매개변수를 받아 실행 후 결과를 출력하는 division() 메서드를 호출했습니다.



BigInteger 값에 대한 곱셈 및 나눗셈 연산 결과는 다음 출력 이미지에 표시됩니다. 이것은 BigInteger가 Java에서 구성되고 다양한 작업에 사용되는 방법입니다.





예 2:

계승 계산은 매우 큰 입력을 받는 정수의 좋은 예입니다. BigInteger는 더 큰 정수 값에 대한 계승을 얻기 위해 사용할 수도 있습니다.




BigInteger 클래스의 'factorial' 함수를 만들었습니다. 여기서 int 유형의 'num' 객체를 인수로 전달하여 'Num' 값의 계승을 반환합니다. 'factorial' 함수 내에서 BigInteger 값 '2'가 지정된 BigInteger 객체 'max_fict'를 선언했습니다. 그 후 우리는 for 루프를 배포했습니다. 이 루프는 반복한 다음 'max_fict' 값을 4, 5로 곱하고 곱하기() 메서드가 호출될 때 최대 n번째 값까지 곱합니다. multiply() 자체는 for 루프의 객체 'i'가 제공되는 또 다른 'valueOf' 메서드라고 합니다. return 문은 더 큰 계승을 제공합니다. 다음으로 프로그램의 main() 메서드를 설정했습니다. 객체 'Num'을 값으로 초기화하고 factorial() 메서드에서 'Num'의 계승을 출력했습니다.

숫자 '40'의 계승 값은 다음과 같이 BigInteger 값을 제공합니다.

예 3:

BigInteger 클래스의 bitCount() 함수는 비트를 계산합니다. bitCount() 메서드는 이 BigInteger에서 2개의 보수 형식이며 부호 비트와 다른 비트 수를 제공합니다. 이 메서드는 BigInteger의 값이 양수일 때 설정된 비트를 반환합니다. 반면에 BigInteger가 음수 값으로 지정된 경우 이 메서드는 재설정 비트 수를 반환합니다.


'BigInteger' 유형 클래스의 'b1' 및 'b2' 두 변수를 선언했습니다. 또한 두 개의 변수 'integer1'과 'integer2', int 기본 유형을 정의했습니다. 선언 후 양의 BigInteger 값으로 'b1'을 초기화하고 음의 BigInteger 값으로 'b2'를 초기화했습니다. 다음으로 bitCount() 메서드를 사용하여 'integer1' 및 'integer2'를 BigInteger 변수 'b1' 및 'b2'에 할당했습니다. 계산된 비트는 지정된 BigInteger 값에 대한 bitCount() 메서드에서 가져옵니다.

양의 BigInteger는 '2' 비트를 제공하고 BigInteger의 음의 값은 '1' 비트 값을 출력합니다.

예 4:

BigInteger의 크기가 큰 수치 데이터의 절대값은 BigInteger 클래스의 abs() 메서드를 사용하여 결정할 수 있습니다. abs() 메서드는 BigInteger의 절대값을 반환합니다.


우리는 'big1', 'big2', 'big3' 및 'big4'의 네 가지 변수를 선언한 BigInteger 클래스가 있습니다. 변수 'big1' 및 'big2'는 각각 양수 및 음수 값으로 지정됩니다. 그런 다음 'big3' 및 'big4' 변수에서 'big1' 및 'big2'를 사용하여 abs() 메서드를 호출했습니다. abs() 메서드는 입력 값을 받지 않지만 'big1' 및 'big2' 변수와 함께 호출됩니다. abs() 메서드는 이러한 BigInteger 변수의 절대값을 가져오고 결과는 컴파일 시간에 인쇄됩니다.

abs() 메서드는 항상 양의 절대값을 반환하므로 양수 432 값과 음수 432 값의 절대값은 동일합니다.

예 5:

BigInteger 값의 비교는 BigInteger compareTo() 메서드를 사용하여 수행할 수 있습니다. BigInteger는 compareTo() 메서드 내에서 매개변수로 입력되는 BigInteger와 비교됩니다. compareTo() 메서드의 반환 값은 BigInteger 값을 기반으로 합니다. BigInteger 값의 비교가 같으면 0이 반환됩니다. 그렇지 않으면 BigInteger 값이 인수로 전달된 BigInteger 값보다 크거나 작은 조건으로 '1'과 '-1'이 반환됩니다.


'BigInteger' 클래스의 'MyBigInt1' 및 'MyBigtInt2' 선언 개체가 있습니다. 그런 다음 이러한 개체는 동일한 BigInteger 값으로 지정됩니다. 그 후, 'MyBigInt1' 객체가 compareTo() 메서드로 호출되고 'MyBigInt2' 객체가 'MyBigInt2' 객체와 비교할 인수로 전달되는 또 다른 객체 'comparevalue'를 생성했습니다. 다음으로, compareTo() 메서드의 결과가 '0' 값과 같은지 여부를 확인하는 if-else 문이 있습니다.

두 BigInteger 개체의 값이 같기 때문에 아래 이미지와 같이 compareTo() 결과는 0을 반환합니다.

예 6:

BigInteger flipBit(index) 메서드는 BigInteger 내의 특정 비트 위치에서 반전하는 데에도 사용할 수 있습니다. 이 메서드는 (bigInt ^(1<


두 개의 BigInteger 변수 'B_val1' 및 'B_val2'를 정의했습니다. 변수 'B_val1'은 값이 지정된 BigInteger 클래스로 초기화됩니다. 그런 다음 flipBit() 메서드로 변수 'B_val2'를 설정했습니다. 여기서 flipBit 연산은 인덱스 값이 '2'인 변수 'B_value'에 대해 수행됩니다.

BigInteger 값 '9'의 인덱스 위치는 인덱스 '2'로 뒤집혀 값 '13'이 출력됩니다.

결론

BigInteger 클래스는 사용하기 매우 편리하며 방대한 메서드 라이브러리로 인해 경쟁 프로그래밍에서 자주 사용됩니다. BigInteger는 현재 액세스 가능한 모든 기본 데이터 유형의 용량을 초과하는 매우 긴 숫자를 계산하는 데 사용됩니다. 모듈러 산술 연산을 위한 다양한 방법을 제공합니다. 먼저 BigInteger를 생성한 다음 몇 가지 메서드를 다루었습니다.