CodeGym /Blogue Java /Random-PT /Classe Java BigInteger
John Squirrels
Nível 41
San Francisco

Classe Java BigInteger

Publicado no grupo Random-PT

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:
  1. big2.subtract(big1) para subtrair 20 de 60.
  2. big1.add(big2) para somar 20 e 60.
  3. big1.multiply(big2) para multiplicar 20 e 60.
  4. big2.divide(big1) para dividir 60 por 20.
  5. big1.min(big2) para obter o menor dos dois valores.
  6. big1.max(big2) para obter o maior dos dois valores.
É importante observar que java.math.BigInteger é importado na parte superior do código.

Conclusão

Até agora você deve estar familiarizado com a classe BigInteger em Java. Você deve ser capaz de usar BigInteger s em seu código usando diferentes tipos de construtores. Você também deve ser capaz de executar diferentes operações aritméticas e lógicas neles usando os métodos da classe BigInteger . Como desafio, você pode tentar chamar diferentes métodos com diferentes valores de BigInteger s. Isso fortalecerá ainda mais sua compreensão de BigInteger s em Java. Para ter mais confiança em seu aprendizado, tente praticá-lo repetidamente. A chave para uma boa codificação é a prática. Boa sorte e codificação feliz!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION