Java BigInteger

Java Biginteger



Java propose une classe BigInteger spéciale pour gérer des nombres extrêmement grands supérieurs à des nombres de 64 bits. La taille des valeurs entières que cette classe peut gérer est simplement contrainte par la mémoire allouée de la JVM. La classe BigInteger, qui hérite d'un Number.implémente l'interface Comparable. Il donne des équivalents pour chaque opérateur entier primitif Java ainsi que pour chaque méthode du module java.lang.math. La valeur stockée de l'objet BigInteger ne peut pas être modifiée en raison de l'immuabilité de la classe BigInteger.

Exemple 1:

Le programme suivant fournit un moyen de créer le BigInteger en Java et applique l'opération arithmétique à la valeur BigInteger fournie.








Nous avons importé la classe BigInteger du package java math à l'intérieur du programme. Après cela, nous avons déclaré les objets BigInteger 'bigInt1' et 'bigInt2' dans la méthode main() de la classe Java 'BigIntegerExample'. Ensuite, nous avons initialisé les objets BigInteger avec les grandes valeurs numériques dans la classe BigInteger. Nous avons créé un autre objet de la classe BigInteger pour effectuer l'opération arithmétique sur la valeur entière spécifiée. Les objets sont déclarés comme 'Multiplication' pour multiplier la valeur BinInteger et 'Division' pour diviser la valeur BigInteger.



Ensuite, nous avons attribué le 'bigInt1' avec la méthode multiplier () de BigInteger à l'objet 'multiplier', qui prend l'entrée 'bigInt2'. De plus, nous avons appelé la méthode division(), qui prend le paramètre 'bigInt2' qui sera divisé par 'bigInt1', et imprime les résultats après l'exécution.



Les résultats des opérations de multiplication et de division sur les valeurs BigInteger sont affichés dans l'image de sortie suivante. C'est ainsi que le BigInteger est configuré en Java et utilisé pour diverses opérations.





Exemple 2 :

Le calcul factoriel est une bonne illustration d'un nombre entier recevant de très grandes entrées. Le BigInteger peut également être utilisé pour obtenir la factorielle pour des valeurs entières plus grandes.




Nous avons créé la fonction 'factorielle' de la classe BigInteger, où l'objet 'num' de type int est passé en argument pour renvoyer la factorielle de la valeur 'Num'. Dans la fonction 'factorielle', nous avons déclaré un objet BigInteger 'max_fict' où la valeur BigInteger '2' est spécifiée. Après cela, nous avons déployé la boucle for, qui itérera puis multipliera la valeur 'max_fict' avec 4, 5, et jusqu'à la nième valeur lorsque la méthode multiplier () est invoquée. Le multiplie() lui-même est appelé une autre méthode 'valueOf', où l'objet 'i' de la boucle for est fourni. L'instruction return fournira la plus grande factorielle. Ensuite, nous avons établi la méthode main() du programme. Nous avons initialisé l'objet 'Num' avec la valeur et imprimé le factoriel du 'Num' à partir de la méthode factorielle().

La valeur factorielle du nombre '40' fournit la valeur BigInteger comme suit :

Exemple 3 :

La fonction bitCount() de la classe BigInteger compte les bits. La méthode bitCount() fournit le nombre de bits qui sont sous la forme de deux compléments dans ce BigInteger et qui sont différents du bit de signe. Cette méthode renvoie les bits définis lorsque la valeur de BigInteger est positive. D'autre part, si le BigInteger est spécifié avec une valeur négative, cette méthode renvoie le nombre de bits de réinitialisation.


Nous avons déclaré deux variables, 'b1' et 'b2' de la classe de type 'BigInteger'. Nous avons également défini deux autres variables, 'integer1' et 'integer2', int de type primitif. Suite à la déclaration, nous avons initialisé le 'b1' avec la valeur BigInteger positive et le 'b2' avec la valeur BigInteger négative. Ensuite, nous avons attribué les 'integer1' et 'integer2' avec la méthode bitCount () aux variables BigInteger 'b1' et 'b2'. Les bits comptés seront obtenus à partir de la méthode bitCount() pour les valeurs BigInteger spécifiées.

Le BigInteger positif fournit les bits '2' et la valeur négative de BigInteger génère la valeur de bit '1'.

Exemple 4 :

La valeur absolue des données numériques de grande taille dans BigInteger peut être déterminée à l'aide de la méthode abs() de la classe BigInteger. La méthode abs() renvoie la valeur absolue du BigInteger.


Nous avons une classe BigInteger, à partir de laquelle nous avons déclaré quatre variables : 'big1', 'big2', 'big3' et 'big4'. Les variables 'big1' et 'big2' sont respectivement spécifiées avec des valeurs positives et négatives. Après cela, nous avons invoqué la méthode abs() avec 'big1' et 'big2' dans les variables 'big3' et 'big4'. Notez que la méthode abs() ne prend aucune valeur d'entrée mais est appelée avec les variables 'big1' et 'big2'. La méthode abs() obtient la valeur absolue de ces variables BigInteger et les résultats seront imprimés au moment de la compilation.

La valeur absolue des valeurs positives 432 et négatives 432 est la même car la méthode abs() renvoie toujours la valeur absolue positive.

Exemple 5 :

La comparaison des valeurs BigInteger peut être réalisée à l'aide de la méthode BigInteger compareTo(). Le BigInteger est comparé au BigInteger entré en tant que paramètre dans la méthode compareTo(). La valeur de retour de la méthode compareTo() est basée sur les valeurs BigInteger. Lorsque la comparaison de la valeur BigInteger est égale, zéro est renvoyé. Sinon, '1' et '-1' sont renvoyés à condition que la valeur BigInteger soit supérieure ou inférieure à la valeur BigInteger passée en argument.


Nous avons les objets « MyBigInt1 » et « MyBigtInt2 » de déclaration de la classe « BigInteger ». Ces objets sont ensuite spécifiés avec les mêmes valeurs BigInteger. Après cela, nous avons créé un autre objet, 'comparevalue' où l'objet 'MyBigInt1' est appelé avec la méthode compareTo(), et l'objet 'MyBigInt2' est passé comme argument pour comparer avec l'objet 'MyBigInt2'. Ensuite, nous avons une instruction if-else où nous avons vérifié si les résultats de la méthode compareTo () sont égaux à la valeur '0' ou non.

Étant donné que les deux objets BigInteger ont les mêmes valeurs, les résultats compareTo() renvoient zéro, comme le montre l'image ci-dessous.

Exemple 6 :

La méthode BigInteger flipBit(index) peut également être utilisée pour retourner à un emplacement de bit spécifique dans un BigInteger. Cette méthode évalue (bigInt ^ (1<


Nous avons défini deux variables BigInteger, 'B_val1' et 'B_val2'. La variable 'B_val1' est initialisée avec la classe BigInteger, où la valeur est spécifiée. Ensuite, nous avons défini la variable 'B_val2' avec la méthode flipBit(), où l'opération flipBit est effectuée sur la variable 'B_value' avec la valeur d'index '2'.

La position d'index de la valeur BigInteger '9' est inversée avec l'index '2', qui génère la valeur '13' dans la sortie.

Conclusion

La classe BigInteger est très pratique à utiliser et est fréquemment utilisée dans la programmation compétitive en raison de sa vaste bibliothèque de méthodes. Le BigInteger est utilisé pour le calcul de nombres très longs qui dépassent la capacité de tous les types de données primitifs actuellement accessibles. Il fournit diverses méthodes pour les opérations arithmétiques modulaires. Nous avons d'abord créé le BigInteger, puis avons couvert quelques-unes de ses méthodes.