CodeGym /Blog Java /Random-ES /Clase BigInteger de Java
Autor
Oleksandr Miadelets
Head of Developers Team at CodeGym

Clase BigInteger de Java

Publicado en el grupo Random-ES

¿Qué es una clase BigInteger?

Hay algunos tipos de datos primitivos en Java que se utilizan, como int o long, para realizar operaciones con enteros. Sin embargo, a veces necesitamos almacenar grandes números fuera del alcance de estos tipos de datos primitivos. BigInteger Class se usa para cálculos matemáticos para números muy grandes. Proporciona todos los métodos del paquete java.lang.Math y análogos a todos los operadores enteros primitivos de Java. Entero grandeLa clase cubre operaciones para aritmética modular, manipulación de bits, cálculo GCD y algunas otras operaciones. BigIntegers se representan en notación de complemento a dos. No existe un límite teórico sobre el tamaño de un número que se puede almacenar porque la memoria se asigna dinámicamente. Sin embargo, prácticamente la memoria es limitada y podemos almacenar un número entero que tenga el número de bits menor o igual que Integer.MAX_VALUE . Esto proporciona un límite superior suficientemente grande para almacenar prácticamente casi todos los números grandes.

¿Cómo se implementa la clase BigInteger?


import java.math.BigInteger;
Para implementar la clase BigInteger en su código, debe importar el paquete java.math.BigInteger .

Declaración de clase BigInteger

La clase BigInteger en Java se declara de la siguiente manera en el paquete java.math :

public class BigInteger
   extends Number
      implements Comparable<BigInteger>
La clase BigInteger extiende la clase Number e implementa una interfaz Comparable . Se declara y define en el paquete java.math .

Constructores de clase

La clase BigInteger de Java tiene muchos constructores sobrecargados. Puede probar y ejecutar cada uno en el editor para ver cómo funcionan.
Sr# Constructor Descripción
1 BigInteger(byte[] val) Traduce una matriz de bytes en un BigInteger .
2 BigInteger(int signum, byte[] magnitud) Traduce la representación de signo-magnitud en un BigInteger .
3 BigInteger(int bitLength, int certeza, Random rnd) Construye un BigInteger positivo generado aleatoriamente de la longitud especificada.
4 BigInteger(Valor de cadena) Traduce la representación de cadena decimal en un BigInteger .
5 BigInteger(Valor de cadena, raíz interna) Convierte la representación de String en la base especificada en un BigInteger .

Métodos de clase

La clase BigInteger de Java tiene muchos métodos, algunos de los cuales se describen a continuación. En la tabla, 'this' representa el BigInteger que llama al método y ' val ' es el argumento pasado al método.
abdominales() Devuelve el valor absoluto de ' este ' BigInteger .
agregar() Devuelve un Biginteger calculando ' this + val '.
sustraer() Devuelve un Biginteger calculando ' this - val '.
dividir() Devuelve un Biginteger calculando ' this / val '.
multiplicar() Devuelve un Biginteger calculando ' este * val '.
valor de() Devuelve un valor BigInteger de largo dado .
es igual () Compara la igualdad entre ' este ' BigInteger y un objeto dado.
pow() Devuelve un Biginteger calculando ' este exponente '.
min() Devuelve el mínimo entre ' este ' BigInteger y el valor dado.
máx() Devuelve el máximo entre ' este ' BigInteger y el valor dado.
modificación() Devuelve un valor para ' este mod m '.
mcd() Devuelve un BigInteger que es el máximo común divisor entre el valor absoluto de ' este ' y el ' valor pasado '.
número de bits() Devuelve el número de bits en la representación en complemento a dos de ' este ' BigInteger .
longitud de bit() Devuelve el número de bits, excluyendo el bit de signo, en la representación mínima en complemento a dos de ' este ' BigInteger .
y() Devuelve un Biginteger calculando ' this & val '.
o() Devuelve un Biginteger calculando ' this | val '.
no() Devuelve un Biginteger calculando ' ~this'.
y no() Devuelve un Biginteger calculando ' this & ~val '.
intValor() Convierte BigInteger en un int .
valor flotante () Convierte BigInteger en float .
valorlargo() Convierte BigInteger a long .
valordoble() Convierte BigInteger en doble .
Encadenar() Devuelve la representación de cadena decimal de BigInteger .

Ejemplo 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));
    }
}

Producción

15511210043330985984000000

Explicación

En el fragmento anterior, el factor de un número grande se calcula utilizando la clase BigInteger importando el paquete java.math.BigInteger . Hemos creado un método de cálculo factorial . Este método crea un BigInteger y luego calcula el factorial usando el método de multiplicación f.multiply(BigInteger.valueOf(i)) .

Ejemplo 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);
    }
}

Producción

60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 valor min: 20 valor max: 60

Explicación

En el fragmento anterior, creamos dos BigInteger usando el constructor BigInteger(String val) . Aplicamos diferentes métodos en BigInteger s big1 y big2 con los valores 20 y 60 respectivamente. Aplicamos los siguientes métodos:
  1. big2.subtract(big1) para restar 20 de 60.
  2. big1.add(big2) para sumar 20 y 60.
  3. big1.multiply(big2) para multiplicar 20 y 60.
  4. big2.divide(big1) para dividir 60 entre 20.
  5. big1.min(big2) para obtener el menor de los dos valores.
  6. big1.max(big2) para obtener el mayor de los dos valores.
Es importante tener en cuenta que java.math.BigInteger se importa en la parte superior del código.

Conclusión

A estas alturas ya debería estar familiarizado con la clase BigInteger en Java. Debería poder usar BigInteger s en su código usando diferentes tipos de constructores. También debería poder realizar diferentes operaciones aritméticas y lógicas en ellos mediante el uso de métodos de clase BigInteger . Como desafío, puede intentar llamar a diferentes métodos con diferentes valores de BigInteger s. Reforzará aún más su comprensión de BigInteger s en Java. Para tener más confianza en tu aprendizaje, intenta practicarlo una y otra vez. La clave para una buena codificación es la práctica. ¡La mejor de las suertes y feliz codificación!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION