Java BigInteger

Java Biginteger



Java oferuje specjalną klasę BigInteger do zarządzania bardzo dużymi liczbami, które są większe niż liczby 64-bitowe. Rozmiar wartości całkowitych, które może obsłużyć ta klasa, jest po prostu ograniczony przez przydzieloną pamięć JVM. Klasa BigInteger, która dziedziczy Number.implementuje interfejs Comparable. Podaje odpowiedniki dla każdego operatora całkowitoliczbowego prymitywnego w Javie oraz dla każdej metody z modułu java.lang.math. Przechowywanej wartości obiektu BigInteger nie można zmodyfikować ze względu na niezmienność klasy BigInteger.

Przykład 1:

Poniższy program udostępnia sposób tworzenia BigInteger w Javie i stosuje operację arytmetyczną do podanej wartości BigInteger.








Zaimportowaliśmy klasę BigInteger z pakietu java math wewnątrz programu. Następnie zadeklarowaliśmy obiekty BigInteger „bigInt1” i „bigInt2” w metodzie main() klasy java „BigIntegerExample”. Następnie zainicjowaliśmy obiekty BigInteger dużymi wartościami liczbowymi w obrębie klasy BigInteger. Stworzyliśmy kolejny obiekt klasy BigInteger do wykonywania operacji arytmetycznych na określonej dużej wartości całkowitej. Obiekty są zadeklarowane jako „Multiplication” do mnożenia wartości BinInteger i „Division” do dzielenia wartości BigInteger.



Następnie przypisaliśmy „bigInt1” wraz z metodą multiple() obiektu BigInteger do obiektu „multiply”, który pobiera dane wejściowe „bigInt2”. Wywołaliśmy również metodę distribution(), która pobiera parametr „bigInt2”, który zostanie podzielony przez „bigInt1” i drukuje wyniki po wykonaniu.



Wyniki operacji mnożenia i dzielenia na wartościach BigInteger są pokazane na poniższym obrazie wyjściowym. W ten sposób BigInteger jest konfigurowany w Javie i używany do różnych operacji.





Przykład 2:

Obliczenia czynnikowe to dobra ilustracja liczby całkowitej otrzymującej bardzo duże dane wejściowe. BigInteger można również wykorzystać do uzyskania silni dla większych wartości całkowitych.




Stworzyliśmy funkcję „silnia” klasy BigInteger, w której obiekt „num” typu int jest przekazywany jako argument zwracający silnię wartości „Num”. Wewnątrz funkcji „silnia” zadeklarowaliśmy obiekt BigInteger „max_fict”, w którym określona jest wartość BigInteger „2”. Następnie wdrożyliśmy pętlę for, która będzie iterować, a następnie mnożyć wartość „max_fict” przez 4, 5 i aż do n-tej wartości, gdy wywoływana jest metoda multiple(). Sama funkcja multiple() jest nazywana inną metodą „valueOf”, w której podany jest obiekt „i” pętli for. Instrukcja return zapewni większą silnię. Następnie ustaliliśmy metodę main() programu. Zainicjowaliśmy obiekt „Num” wartością i wydrukowaliśmy silnię „Num” z metody factorial() .

Wartość silni liczby „40” zapewnia wartość BigInteger w następujący sposób:

Przykład 3:

Funkcja bitCount() klasy BigInteger zlicza bity. Metoda bitCount() podaje liczbę bitów, które są w postaci dwóch uzupełnień w tej BigInteger i są różne od bitu znaku. Ta metoda zwraca ustawione bity, gdy wartość BigInteger jest dodatnia. Z drugiej strony, jeśli BigInteger jest określona z wartością ujemną, ta metoda zwraca liczbę bitów resetowania.


Zadeklarowaliśmy dwie zmienne „b1” i „b2” klasy typu „BigInteger”. Zdefiniowaliśmy również dwie dodatkowe zmienne, „integer1” i „integer2”, typu pierwotnego int. Po deklaracji zainicjowaliśmy „b1” dodatnią wartością BigInteger, a „b2” ujemną wartością BigInteger. Następnie przypisaliśmy „integer1” i „integer2” metodą bitCount() do zmiennych BigInteger „b1” i „b2”. Zliczone bity zostaną uzyskane z metody bitCount() dla określonych wartości BigInteger.

Dodatnia wartość BigInteger zapewnia bity „2”, a wartość ujemna wartości BigInteger daje wartość bitową „1”.

Przykład 4:

Wartość bezwzględną dużych danych liczbowych w BigInteger można określić za pomocą metody abs() klasy BigInteger. Metoda abs() zwraca wartość bezwzględną BigInteger.


Mamy klasę BigInteger, z której zadeklarowaliśmy cztery zmienne: „big1”, „big2”, „big3” i „big4”. Zmienne „big1” i „big2” mają odpowiednio wartości dodatnie i ujemne. Następnie wywołaliśmy metodę abs() z „big1” i „big2” w zmiennych „big3” i „big4”. Zauważ, że metoda abs() nie przyjmuje żadnej wartości wejściowej, ale jest wywoływana ze zmiennymi „big1” i „big2”. Metoda abs() pobiera wartość bezwzględną dla tych zmiennych BigInteger, a wyniki zostaną wydrukowane w czasie kompilacji.

Wartość bezwzględna wartości dodatnich 432 i ujemnych 432 jest taka sama, ponieważ metoda abs() zawsze zwraca dodatnią wartość bezwzględną.

Przykład 5:

Porównanie wartości BigInteger można uzyskać za pomocą metody porównawczej BigInteger(). BigInteger jest porównywana z BigInteger, która jest wprowadzana jako parametr wewnątrz metody CompareTo() . Wartość zwracana przez metodę CompareTo() jest oparta na wartościach BigInteger. Gdy porównanie wartości BigInteger jest równe, zwracane jest zero. W przeciwnym razie zwracane są „1” i „-1”, pod warunkiem, że wartość BigInteger jest większa lub mniejsza niż wartość BigInteger przekazana jako argument.


Mamy deklarację obiektów „MyBigInt1” i „MyBigtInt2” klasy „BigInteger”. Obiekty te są następnie określane z tymi samymi wartościami BigInteger. Następnie stworzyliśmy kolejny obiekt, „comparevalue”, w którym obiekt „MyBigInt1” jest wywoływany za pomocą metody CompareTo(), a obiekt „MyBigInt2” jest przekazywany jako argument do porównania z obiektem „MyBigInt2”. Następnie mamy instrukcję if-else, w której sprawdziliśmy, czy wyniki metody CompareTo() są równe wartości „0”, czy nie.

Ponieważ oba obiekty BigInteger mają te same wartości, wyniki funkcji CompareTo() zwracają zero, jak pokazano na poniższym obrazku.

Przykład 6:

Metoda BigInteger flipBit(index) może być również użyta do odwrócenia w określonej lokalizacji bitowej w BigInteger. Ta metoda ocenia (bigInt ^ (1<


Zdefiniowaliśmy dwie zmienne BigInteger, „B_val1” i „B_val2”. Zmienna „B_val1” jest inicjowana klasą BigInteger, w której określona jest wartość. Następnie ustawiliśmy zmienną „B_val2” metodą flipBit(), gdzie operacja flipBit jest wykonywana na zmiennej „B_value” o wartości indeksu „2”.

Pozycja indeksu wartości BigInteger „9” jest odwracana z indeksem „2”, co daje wartość „13” na wyjściu.

Wniosek

Klasa BigInteger jest bardzo wygodna w użyciu i jest często używana w programowaniu konkurencyjnym ze względu na obszerną bibliotekę metod. BigInteger służy do obliczania bardzo długich liczb, które wykraczają poza pojemność wszystkich obecnie dostępnych prymitywnych typów danych. Zapewnia różne metody modularnych operacji arytmetycznych. Najpierw stworzyliśmy BigInteger, a następnie omówiliśmy kilka jego metod.