Java BigInteger

Java Biginteger



Java предлага специален клас BigInteger за управление на изключително големи числа, които са по-големи от 64-битови числа. Размерът на целочислените стойности, които този клас може да обработва, е просто ограничен от разпределената памет на JVM. Класът BigInteger, който наследява Number.имплементира интерфейса Comparable. Той дава еквиваленти за всеки примитивен целочислен оператор на Java, както и всеки метод от модула java.lang.math. Съхранената стойност на обекта BigInteger не може да бъде модифицирана поради неизменността на класа BigInteger.

Пример 1:

Следващата програма предоставя начин за създаване на BigInteger в java и прилага аритметичната операция към предоставената стойност на BigInteger.








Импортирахме класа BigInteger от пакета java math вътре в програмата. След това декларирахме обектите BigInteger „bigInt1“ и „bigInt2“ в метода main() на Java класа „BigIntegerExample“. След това инициализирахме обектите BigInteger с големите числови стойности в класа BigInteger. Създадохме друг обект от класа BigInteger за извършване на аритметична операция върху указаната голяма целочислена стойност. Обектите са декларирани като „Умножение“ за умножаване на стойността на BinInteger и „Деление“ за разделяне на стойността на BigInteger.



След това присвоихме „bigInt1“ заедно с метода multiply() на BigInteger към обекта „multiply“, който приема входа „bigInt2“. Също така извикахме метода division(), който взема параметъра „bigInt2“, който ще бъде разделен с „bigInt1“, и отпечатва резултатите след изпълнение.



Резултатите от операцията за умножение и деление върху стойностите на BigInteger са показани в следното изходно изображение. Ето как BigInteger се конфигурира в java и се използва за различни операции.





Пример 2:

Факторното изчисление е добра илюстрация на цяло число, което получава много големи входове. BigInteger може също да се използва за получаване на факториел за по-големи цели числа.




Създадохме функцията „факториал“ на класа BigInteger, където обектът „num“ от тип int се предава като аргумент за връщане на факториела на стойността „Num“. Вътре във функцията „factorial“ сме декларирали BigInteger обект „max_fict“, където е посочена стойността на BigInteger „2“. След това разгърнахме for-цикъла, който ще повтори и след това ще умножи стойността „max_fict“ с 4, 5 и до n-тата стойност, когато се извика методът multiply(). Самият multiply() се нарича друг метод „valueOf“, където се предоставя обектът „i“ на for-цикъла. Изявлението за връщане ще предостави по-големия факториел. След това създадохме метода main() на програмата. Инициализирахме обекта „Num“ със стойността и отпечатахме факториела на „Num“ от метода factorial().

Факториалната стойност на числото „40“ предоставя стойността на BigInteger, както следва:

Пример 3:

Функцията bitCount() на класа BigInteger брои битовете. Методът bitCount() предоставя броя на битовете, които са под формата на две допълнения в това BigInteger и са различни от бита за знак. Този метод връща зададените битове, когато стойността на BigInteger е положителна. От друга страна, ако BigInteger е указано с отрицателна стойност, този метод връща броя на битовете за нулиране.


Ние сме декларирали две променливи, „b1“ и „b2“ от тип клас „BigInteger“. Ние също така дефинирахме още две променливи, 'integer1' и 'integer2', int примитивен тип. След декларацията инициализирахме „b1“ с положителната стойност на BigInteger и „b2“ с отрицателната стойност на BigInteger. След това присвоихме „integer1“ и „integer2“ с метода bitCount() на променливите BigInteger „b1“ и „b2“. Преброените битове ще бъдат получени от метода bitCount() за посочените стойности на BigInteger.

Положителният BigInteger осигурява „2“ бита, а отрицателната стойност на BigInteger извежда битова стойност „1“.

Пример 4:

Абсолютната стойност на числови данни с голям размер в BigInteger може да се определи чрез използване на метода abs() на класа BigInteger. Методът abs() връща абсолютната стойност на BigInteger.


Имаме клас BigInteger, от който сме декларирали четири променливи: „big1“, „big2“, „big3“ и „big4“. Променливите „big1“ и „big2“ са посочени съответно с положителни и отрицателни стойности. След това извикахме метода abs() с „big1“ и „big2“ в променливите „big3“ и „big4“. Имайте предвид, че методът abs() не приема никаква входна стойност, но се извиква с променливите „big1“ и „big2“. Методът abs() получава абсолютната стойност за тези BigInteger променливи и резултатите ще бъдат отпечатани по време на компилация.

Абсолютната стойност на положителните 432 и отрицателните 432 стойности е една и съща, защото методът abs() винаги връща положителната абсолютна стойност.

Пример 5:

Сравнението на стойностите на BigInteger може да се постигне с помощта на метода BigInteger compareTo(). BigInteger се сравнява с BigInteger, който е въведен като параметър в метода compareTo(). Върнатата стойност на метода compareTo() се основава на стойностите на BigInteger. Когато сравнението на стойността на BigInteger е равно, тогава се връща нула. В противен случай „1“ и „-1“ се връщат при условие, че стойността на BigInteger е по-голяма или по-малка от стойността на BigInteger, подадена като аргумент.


Имаме обекти „MyBigInt1“ и „MyBigtInt2“ декларация на класа „BigInteger“. След това тези обекти се определят със същите стойности на BigInteger. След това създадохме друг обект, „comparevalue“, където обектът „MyBigInt1“ се извиква с метода compareTo(), а обектът „MyBigInt2“ се предава като аргумент за сравнение с обекта „MyBigInt2“. След това имаме оператор if-else, където сме проверили дали резултатите от метода compareTo() са равни на стойността „0“ или не.

Тъй като и двата обекта BigInteger имат еднакви стойности, резултатите от compareTo() връщат нула, както е показано на изображението по-долу.

Пример 6:

Методът BigInteger flipBit(index) може също да се използва за обръщане на конкретно битово място в BigInteger. Този метод оценява (bigInt ^ (1<


Дефинирахме две променливи BigInteger, „B_val1“ и „B_val2“. Променливата “B_val1” се инициализира с класа BigInteger, където се посочва стойността. След това сме задали променливата „B_val2“ с метода flipBit(), където операцията flipBit се извършва върху променливата „B_value“ със стойност на индекс „2“.

Позицията на индекса на стойността на BigInteger „9“ се обръща с индекса „2“, което извежда стойността „13“ в изхода.

Заключение

Класът BigInteger е много удобен за използване и често се използва в конкурентно програмиране поради огромната си библиотека с методи. BigInteger се използва за изчисляване на много дълги числа, които надхвърлят капацитета на всички достъпни в момента примитивни типове данни. Той предоставя различни методи за модулни аритметични операции. Първо създадохме BigInteger и след това покрихме няколко от неговите методи.