Java BigInteger

Java Biginteger



Java oferece uma classe especial BigInteger para gerenciar números extremamente grandes que são maiores que números de 64 bits. O tamanho dos valores inteiros que essa classe pode manipular é simplesmente limitado pela memória alocada da JVM. A classe BigInteger, que herda um Number. implementa a interface Comparable. Ele fornece equivalentes para cada operador de inteiro primitivo Java, bem como para cada método do módulo java.lang.math. O valor armazenado do objeto BigInteger não pode ser modificado devido à imutabilidade da classe BigInteger.

Exemplo 1:

O programa a seguir fornece uma maneira de criar o BigInteger em java e aplica a operação aritmética ao valor BigInteger fornecido.








Importamos a classe BigInteger do pacote java math dentro do programa. Depois disso, declaramos os objetos BigInteger “bigInt1” e “bigInt2” no método main() da classe java “BigIntegerExample”. Em seguida, inicializamos os objetos BigInteger com os valores numéricos grandes dentro da classe BigInteger. Criamos outro objeto da classe BigInteger para executar a operação aritmética no valor inteiro grande especificado. Os objetos são declarados como “Multiplication” para multiplicar o valor BinInteger e “Division” para dividir o valor BigInteger.



Em seguida, atribuímos o “bigInt1” junto com o método multiple() de BigInteger ao objeto “multiply”, que recebe a entrada “bigInt2”. Além disso, chamamos o método division(), que recebe o parâmetro “bigInt2” que será dividido com “bigInt1” e imprime os resultados após a execução.



Os resultados da operação de multiplicação e divisão nos valores BigInteger são mostrados na seguinte imagem de saída. É assim que o BigInteger é configurado em java e utilizado para diversas operações.





Exemplo 2:

A computação fatorial é uma boa ilustração de um número inteiro obtendo entradas muito grandes. O BigInteger também pode ser utilizado para obter o fatorial para valores inteiros maiores.




Criamos a função “fatorial” da classe BigInteger, onde o objeto “num” do tipo int é passado como argumento para retornar o fatorial do valor “Num”. Dentro da função “fatorial”, declaramos um objeto BigInteger “max_fict” onde o valor BigInteger “2” é especificado. Depois disso, implantamos o loop for, que irá iterar e, em seguida, multiplicar o valor “max_fict” por 4, 5 e até o enésimo valor conforme o método multiple() é invocado. O próprio multiple() é chamado de outro método “valueOf”, onde o objeto “i” do loop for é fornecido. A instrução return fornecerá o maior fatorial. Em seguida, estabelecemos o método main() do programa. Inicializamos o objeto “Num” com o valor e imprimimos o fatorial do “Num” do método fatorial().

O valor fatorial do número “40” fornece o valor BigInteger da seguinte forma:

Exemplo 3:

A função bitCount() da classe BigInteger conta os bits. O método bitCount() fornece a quantidade de bits que estão na forma de dois complementos neste BigInteger e são diferentes do bit de sinal. Este método retorna os bits definidos quando o valor de BigInteger é positivo. Por outro lado, se o BigInteger for especificado com um valor negativo, esse método retornará o número de bits de reinicialização.


Declaramos duas variáveis, “b1” e “b2” do tipo classe “BigInteger”. Também definimos mais duas variáveis, “integer1” e “integer2”, tipo primitivo int. Após a declaração inicializamos o “b1” com o valor BigInteger positivo e o “b2” com o valor BigInteger negativo. Em seguida, atribuímos o “integer1” e “integer2” com o método bitCount() às variáveis ​​BigInteger “b1” e “b2”. Os bits contados serão obtidos do método bitCount() para os valores BigInteger especificados.

O BigInteger positivo fornece os bits “2” e o valor negativo de BigInteger gera o valor do bit “1”.

Exemplo 4:

O valor absoluto de dados numéricos grandes em BigInteger pode ser determinado usando o método abs() da classe BigInteger. O método abs() retorna o valor absoluto do BigInteger.


Temos uma classe BigInteger, da qual declaramos quatro variáveis: “big1”, “big2”, “big3” e “big4”. As variáveis ​​“big1” e “big2” são especificadas com valores positivos e negativos, respectivamente. Depois disso, invocamos o método abs() com “big1” e “big2” nas variáveis ​​“big3” e “big4”. Observe que o método abs() não recebe nenhum valor de entrada, mas é chamado com as variáveis ​​“big1” e “big2”. O método abs() obtém o valor absoluto para essas variáveis ​​BigInteger e os resultados serão impressos no momento da compilação.

O valor absoluto dos valores 432 positivo e 432 negativo é o mesmo porque o método abs() sempre retorna o valor absoluto positivo.

Exemplo 5:

A comparação dos valores BigInteger pode ser realizada usando o método BigInteger compareTo(). O BigInteger é comparado ao BigInteger que é inserido como um parâmetro dentro do método compareTo(). O valor de retorno do método compareTo() é baseado nos valores BigInteger. Quando a comparação do valor BigInteger for igual, zero será retornado. Caso contrário, “1” e “-1” são retornados com a condição de que o valor BigInteger seja maior ou menor que o valor BigInteger passado como um argumento.


Temos os objetos “MyBigInt1” e “MyBigtInt2” declaração da classe “BigInteger”. Esses objetos são então especificados com os mesmos valores BigInteger. Depois disso, criamos outro objeto, “comparevalue” onde o objeto “MyBigInt1” é chamado com o método compareTo(), e o objeto “MyBigInt2” é passado como argumento para comparar com o objeto “MyBigInt2”. Em seguida, temos uma instrução if-else onde verificamos se os resultados do método compareTo() são iguais ao valor “0” ou não.

Como os dois objetos BigInteger têm os mesmos valores, os resultados compareTo() retornam zero, conforme mostrado na imagem abaixo.

Exemplo 6:

O método BigInteger flipBit(index) também pode ser usado para inverter em um local de bit específico dentro de um BigInteger. Este método avalia (bigInt ^ (1<


Definimos duas variáveis ​​BigInteger, “B_val1” e “B_val2”. A variável “B_val1” é inicializada com a classe BigInteger, onde o valor é especificado. Em seguida, definimos a variável “B_val2” com o método flipBit(), onde a operação flipBit é realizada na variável “B_value” com o valor do índice “2”.

A posição do índice do valor BigInteger “9” é invertida com o índice “2”, que gera o valor “13” na saída.

Conclusão

A classe BigInteger é muito conveniente de usar e é frequentemente usada em programação competitiva devido à sua vasta biblioteca de métodos. O BigInteger é usado para o cálculo de números muito longos que vão além da capacidade de todos os tipos de dados primitivos atualmente acessíveis. Ele fornece vários métodos para operações aritméticas modulares. Criamos o BigInteger primeiro e depois cobrimos alguns de seus métodos.