11
votes

Comment puis-je représenter un entier 128 bits en Java ou C ++?

est-il possible d'avoir un entier 128 bits en Java ou C ++?


5 commentaires

Vous devez être plus précis sur les exigences que vous avez. Il suffit de représenter devraient être évidemment possible: Long A, B représente un nombre de 128 bits comme une paire de 64 bits.


@unwind: Peu pourrait être 32 bits sur certains compilateurs. __ INT64 ou LONG LONG LONG au moins 64 bits, mais sont des extensions non standard.


Dupliqué possible de gros entiers en C ++


@Brian: Correct, quand j'ai répondu que je suis sûr que cette question était à propos de Java uniquement. Pour C ++, utilisez quatre parties UINT32_T.


Dans g ++, vous pouvez utiliser ces types intégrés (au moins sur les plates-formes 64bits): __ int128_t et __ uint_128_t .


6 Réponses :


14
votes

1
votes

Le BigInteger La classe est conçu pour les valeurs entières plus grandes, puis long.max_value . .


0 commentaires

2
votes

vous pouvez. Vous aurez probablement besoin d'utiliser une bibliothèque pour le faire, au moins pour C ++.

J'aime le Bibliothèque PolarsSL ou gnu mp Bignum bibliothèque.


0 commentaires

16
votes

Bien sûr, vous pouvez les représenter.

à moins vous pouvez utiliser un tableau d'octets avec 16 éléments.

Toutefois, la question est de savoir si vous voulez simplement représenter la valeur ou faites-les en réalité les calculs avec elle.

en Java, vous pouvez utiliser BigInteger < / code> pour représenter (efficacement) les valeurs d'entier de taille arbitraire et les calculs aussi.


2 commentaires

C / C ++ a déjà __int 128 gnu.huihoo.org/gcc /gcc-4.7.4/gcc/_005F_005FINT128.HTML . Vous pouvez utiliser BigInteger pour des octets avec le même succès. Il existe des processeurs qui prennent en charge des valeurs de 128 bits et des cas d'utilisation qui utilisent de tels numéros de manière générale comme GUID ou IPv6.


Voici une réponse qui clarifie les capacités de processeurs de produits de base modernes Stackoverflow.com/a/37925245/6713531 . Et voici la rouille Stackoverflow.com/Questtions/57340308/...



0
votes

java.math.biginteger

Travailler avec des entiers supérieurs à 64 bits (la taille d'une longue), utilisez java.math.biginteger. Cette classe représente des entiers non liés et fournit un certain nombre de méthodes pour faire des arithmétiques avec eux.

http://leppoint.net/notes-java/data/numbers /10biginteger.html

Si vous avez besoin de valeurs décimales, utilisez BigDecimal


0 commentaires

0
votes

Bien sûr, vous pouvez utiliser BigInteger classe dans Java.Math Package. Cette classe fournit des opérations pour les arithmétiques modulaires, le calcul de la GCD, les tests de primalité, la génération de la production de la production de la production, des opérations comme des opérations.

Cette classe a été ajoutée dans JDK1.1 elle-même.

Mais je ne sais pas qu'il y a une telle disponibilité intégrée à la bibliothèque C ++. Il peut y avoir une API extensible de tiers.


0 commentaires