O que é uma classe BigInteger?
Existem alguns tipos de dados primitivos em Java que são usados, como int ou long, para executar operações de número inteiro. No entanto, às vezes precisamos armazenar grandes números fora do escopo desses tipos de dados primitivos. A classe BigInteger é usada para cálculos matemáticos para números muito grandes. Ele fornece todos os métodos do pacote java.lang.Math e análogos para todos os operadores inteiros primitivos de Java. BigIntegerA aula abrange operações para aritmética modular, manipulação de bits, cálculo GCD e algumas outras operações. BigIntegers são representados em notação de complemento de dois. Não há limite teórico de quão grande um número pode ser armazenado porque a memória é alocada dinamicamente. Porém, praticamente a memória é limitada e podemos armazenar um inteiro que tenha o número de bits menor ou igual ao Integer.MAX_VALUE . Isso fornece um limite superior suficientemente grande para armazenar praticamente quase todos os números grandes.Como a classe BigInteger é implementada?
import java.math.BigInteger;
Para implementar a classe BigInteger em seu código, você precisa importar o pacote java.math.BigInteger .
Declaração de Classe BigInteger
A classe BigInteger em Java é declarada da seguinte forma no pacote java.math :
public class BigInteger
extends Number
implements Comparable<BigInteger>
A classe BigInteger estende a classe Number e implementa uma interface Comparable . É declarado e definido no pacote java.math .
Construtores de classe
A classe BigInteger de Java tem muitos construtores sobrecarregados. Você pode tentar executar cada um no editor para ver como eles funcionam.Sr# | Construtor | Descrição |
---|---|---|
1 | BigInteger(byte[] val) | Converte uma matriz de bytes em um BigInteger . |
2 | BigInteger(int signum, byte[] magnitude) | Converte a representação de magnitude de sinal em um BigInteger . |
3 | BigInteger(int bitLength, int certeza, Random rnd) | Constrói um BigInteger positivo gerado aleatoriamente com o comprimento especificado. |
4 | BigInteger(String val) | Converte a representação de string decimal em um BigInteger . |
5 | BigInteger(String val, int radix) | Converte a representação String na raiz especificada em um BigInteger . |
Métodos de classe
A classe BigInteger de Java tem muitos métodos, alguns dos quais são descritos abaixo. Na tabela, 'this' representa o BigInteger que chama o método e ' val ' é o argumento passado para o método.abdômen() | Ele retorna o valor absoluto de ' este ' BigInteger . |
adicionar() | Ele retorna um Biginteger computando ' this + val '. |
subtrair() | Ele retorna um Biginteger computando ' this-val '. |
dividir() | Ele retorna um Biginteger computando ' this/val '. |
multiplicar() | Ele retorna um Biginteger calculando ' this * val '. |
valor de() | Ele retorna um valor BigInteger de determinado long . |
é igual a() | Ele compara a igualdade entre ' this ' BigInteger e um determinado objeto. |
Pancada() | Ele retorna um Biginteger calculando ' thisexpoente '. |
min() | Ele retorna o mínimo entre ' este ' BigInteger e o valor informado. |
max() | Ele retorna o máximo entre ' este ' BigInteger e o valor informado. |
mod() | Ele retorna um valor para ' este mod m '. |
gcd() | Ele retorna um BigInteger que é o máximo divisor comum entre o valor absoluto de ' this ' e o ' valor passado '. |
bitCount() | Ele retorna o número de bits na representação em complemento de dois de ' este ' BigInteger . |
bitComprimento() | Ele retorna o número de bits, excluindo o bit de sinal, na representação mínima em complemento de dois de ' this ' BigInteger . |
e() | Ele retorna um Biginteger calculando ' this & val '. |
ou() | Ele retorna um Biginteger calculando ' this | val '. |
não() | Ele retorna um Biginteger computando ' ~this'. |
e não() | Ele retorna um Biginteger calculando ' this & ~val '. |
intValue() | Ele converte BigInteger em um int . |
floatValor() | Ele converte BigInteger em float . |
valorlongo() | Ele converte BigInteger em long . |
duploValor() | Ele converte BigInteger em double . |
para sequenciar() | Ele retorna a representação de string decimal de BigInteger . |
Exemplo 1
import java.math.BigInteger;
public class Example1 {
static BigInteger calculateFactorial(int val) {
// Initialize result
BigInteger f = BigInteger.ONE; // Or new BigInteger("1")
// compute factorial
for (int i = 2; i <= val; i++) {
f = f.multiply(BigInteger.valueOf(i));
}
return f;
}
// Driver method
public static void main(String[] args) {
int val = 25;
System.out.println(calculateFactorial(val));
}
}
Saída
15511210043330985984000000
Explicação
No trecho acima, o fator de um número grande é calculado usando a classe BigInteger importando o pacote java.math.BigInteger . Nós criamos um método calculateFactorial . Esse método cria um BigInteger e depois calcula o fatorial usando o método de multiplicação f.multiply(BigInteger.valueOf(i)) .Exemplo 2
import java.math.BigInteger;
public class Example2 {
public static void main(String[] args) {
BigInteger big1 = new BigInteger("20");
BigInteger big2 = new BigInteger("60");
BigInteger sub = big2.subtract(big1);
System.out.println(big2 + " - " + big1 + " = " + sub);
BigInteger add = big1.add(big2);
System.out.println(big1 + " + " + big2 + " = " + add);
BigInteger mul = big1.multiply(big2);
System.out.println(big1 + " * " + big2 + " = " + mul);
BigInteger div = big2.divide(big1);
System.out.println(big2 + " / " + big1 + " = " + div);
BigInteger min = big1.min(big2);
System.out.println("min value: " + min);
BigInteger max = big1.max(big2);
System.out.println("max value: " + max);
}
}
Saída
60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 valor min: 20 valor máx: 60
Explicação
No trecho acima, criamos dois BigInteger s usando o construtor BigInteger(String val) . Aplicamos diferentes métodos no BigInteger s big1 e big2 com os valores 20 e 60 respectivamente. Aplicamos os seguintes métodos:- big2.subtract(big1) para subtrair 20 de 60.
- big1.add(big2) para somar 20 e 60.
- big1.multiply(big2) para multiplicar 20 e 60.
- big2.divide(big1) para dividir 60 por 20.
- big1.min(big2) para obter o menor dos dois valores.
- big1.max(big2) para obter o maior dos dois valores.
GO TO FULL VERSION