Јава БигИнтегер

Java Biginteger



Јава нуди посебну БигИнтегер класу за управљање изузетно великим бројевима који су већи од 64-битних бројева. Величина целобројних вредности које ова класа може да обради је једноставно ограничена додељеном меморијом ЈВМ-а. Класа БигИнтегер, која наслеђује Нумбер.имплементира Цомпарабле интерфејс. Он даје еквиваленте за сваки Јава примитивни целобројни оператор као и сваки метод из модула јава.ланг.матх. Сачувана вредност БигИнтегер објекта не може да се мења због непроменљивости класе БигИнтегер.

Пример 1:

Следећи програм пружа начин за креирање БигИнтегер-а у Јави и примењује аритметичку операцију на дату вредност БигИнтегер-а.








Увезли смо класу БигИнтегер из јава математичког пакета унутар програма. Након тога, декларисали смо БигИнтегер објекте „бигИнт1“ и „бигИнт2“ у маин() методи јава класе „БигИнтегерЕкампле“. Затим смо иницијализовали БигИнтегер објекте са великим нумеричким вредностима унутар БигИнтегер класе. Направили смо још један објекат класе БигИнтегер за извођење аритметичке операције над наведеном великом целобројном вредношћу. Објекти су декларисани као „Множење“ за множење вредности БинИнтегер и „Дељење“ за дељење вредности БигИнтегер.



Затим смо доделили „бигИнт1“ заједно са методом мултипли() БигИнтегер-а објекту „мултипли“, који узима улаз „бигИнт2“. Такође, позвали смо методу дивисион() која узима параметар „бигИнт2“ који ће бити подељен са „бигИнт1“ и штампа резултате након извршења.



Резултати операције множења и дељења на вредностима БигИнтегер приказани су на следећој излазној слици. Овако се БигИнтегер конфигурише у Јави и користи за разне операције.





Пример 2:

Факторско израчунавање је добра илустрација целог броја који добија веома велике улазе. БигИнтегер се такође може користити за добијање факторијела за веће целобројне вредности.




Направили смо „факторијалну“ функцију класе БигИнтегер, где се објекат „нум“ типа инт прослеђује као аргумент за враћање факторијела вредности „Нум“. Унутар „факторске“ функције, декларисали смо БигИнтегер објекат „мак_фицт“ где је наведена вредност БигИнтегер „2“. Након тога, применили смо фор-петљу, која ће поновити и затим помножити вредност „мак_фицт“ са 4, 5 и све до н-те вредности док се метода мултипли() позива. Сам мултипли() се назива још један метод „валуеОф“, где је обезбеђен објекат „и“ фор-петље. Повратна изјава ће дати већи факторијел. Затим смо успоставили метод маин() програма. Иницијализовали смо објекат „Нум“ са вредношћу и одштампали факторијел „Нум“ из методе фацториал().

Факторска вредност броја „40“ обезбеђује вредност БигИнтегер на следећи начин:

Пример 3:

Функција битЦоунт() класе БигИнтегер броји битове. Метод битЦоунт() обезбеђује број битова који су у облику два комплемента у овом БигИнтегер-у и који се разликују од бита предзнака. Овај метод враћа сет битове када је вредност БигИнтегер-а позитивна. С друге стране, ако је БигИнтегер наведен са негативном вредношћу, овај метод враћа број битова за ресетовање.


Декларисали смо две променљиве, „б1“ и „б2“ класе типа „БигИнтегер“. Такође смо дефинисали још две променљиве, „интегер1“ и „интегер2“, инт примитивни тип. Након декларације, иницијализовали смо „б1“ са позитивном вредношћу БигИнтегер и „б2“ са негативном вредношћу БигИнтегер. Затим смо доделили „интегер1“ и „интегер2“ методом битЦоунт() променљивим БигИнтегер „б1“ и „б2“. Пребројани битови ће бити добијени из методе битЦоунт() за наведене вредности БигИнтегер.

Позитиван БигИнтегер даје бита „2“, а негативна вредност БигИнтегер-а даје вредност бита „1“.

Пример 4:

Апсолутна вредност нумеричких података велике величине у БигИнтегер-у може се одредити коришћењем абс() методе класе БигИнтегер. Метода абс() враћа апсолутну вредност БигИнтегер-а.


Имамо класу БигИнтегер, из које смо декларисали четири променљиве: „биг1“, „биг2“, „биг3“ и „биг4“. Променљиве “биг1” и “биг2” су специфициране са позитивним и негативним вредностима, респективно. Након тога, позвали смо абс() метод са „биг1“ и „биг2“ у варијаблама „биг3“ и „биг4“. Имајте на уму да метода абс() не узима никакву улазну вредност већ се позива са променљивама „биг1“ и „биг2“. Метода абс() добија апсолутну вредност за ове БигИнтегер променљиве, а резултати ће бити одштампани у време компилације.

Апсолутна вредност позитивних 432 и негативних 432 вредности је иста јер метода абс() увек враћа позитивну апсолутну вредност.

Пример 5:

Поређење вредности БигИнтегер може се постићи коришћењем методе БигИнтегер цомпареТо(). БигИнтегер се упоређује са БигИнтегером који је унет као параметар унутар методе цомпареТо(). Повратна вредност методе цомпареТо() заснива се на вредностима БигИнтегер. Када је поређење вредности БигИнтегер једнако, онда се враћа нула. У супротном, „1” и „-1” се враћају под условом да је вредност БигИнтегер већа или мања од вредности БигИнтегер која је прослеђена као аргумент.


Имамо декларацију објеката „МиБигИнт1“ и „МиБигтИнт2“ класе „БигИнтегер“. Ови објекти се затим специфицирају са истим БигИнтегер вредностима. Након тога, креирали смо други објекат, „цомпаревалуе“ где се објекат „МиБигИнт1“ позива са методом цомпареТо(), а објекат „МиБигИнт2“ се прослеђује као аргумент за поређење са објектом „МиБигИнт2“. Затим имамо наредбу иф-елсе у којој смо проверили да ли су резултати методе цомпареТо() једнаки вредности „0“ или не.

Пошто оба БигИнтегер објекта имају исте вредности, резултати цомпареТо() враћају нулу, као што је приказано на слици испод.

Пример 6:

БигИнтегер флипБит(индек) метода се такође може користити за окретање на одређеној локацији бита унутар БигИнтегер-а. Овај метод оцењује (бигИнт ^ (1<<н)). Овај метод ће обрнути бит бигИнтегер-а на било ком наведеном индексу у његовој бинарној представи.


Дефинисали смо две променљиве БигИнтегер, „Б_вал1“ и „Б_вал2“. Променљива „Б_вал1“ се иницијализује класом БигИнтегер, где је наведена вредност. Затим смо поставили променљиву „Б_вал2“ методом флипБит(), где се операција флипБит изводи на променљивој „Б_валуе“ са вредношћу индекса „2“.

Позиција индекса БигИнтегер вредности „9” је преокренута са индексом „2”, што даје вредност „13” у излазу.

Закључак

БигИнтегер класа је веома згодна за коришћење и често се користи у такмичарском програмирању због своје огромне библиотеке метода. БигИнтегер се користи за израчунавање веома дугих бројева који превазилазе капацитет свих тренутно доступних примитивних типова података. Пружа различите методе за модуларне аритметичке операције. Прво смо креирали БигИнтегер, а затим покрили неколико његових метода.