est-il possible d'avoir un entier 128 bits en Java ou C ++? P>
6 Réponses :
en Java, vous pouvez utiliser le BigInteger < / a> classe pour stocker des entiers arbitrairement volumineux. En C ++, vous pouvez utiliser une bibliothèque comme GMP pour obtenir la même fonctionnalité. P>
Le BigInteger CODE> La classe est conçu pour les valeurs entières plus grandes, puis
long.max_value code>. p>.
vous pouvez. Vous aurez probablement besoin d'utiliser une bibliothèque pour le faire, au moins pour C ++. P>
J'aime le Bibliothèque PolarsSL ou gnu mp Bignum bibliothèque. P>
Bien sûr, vous pouvez les représenter. P>
à moins em> vous pouvez utiliser un tableau d'octets avec 16 éléments. P>
Toutefois, la question est de savoir si vous voulez simplement représenter em> la valeur ou faites-les en réalité les calculs em> avec elle. P>
en Java, vous pouvez utiliser BigInteger < / code>
pour représenter (efficacement) les valeurs d'entier de taille arbitraire et em> les calculs aussi. p>
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/...
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. p>
http://leppoint.net/notes-java/data/numbers /10biginteger.html p>
Si vous avez besoin de valeurs décimales, utilisez
Bien sûr, vous pouvez utiliser Cette classe a été ajoutée dans 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. P>
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 CODE> ou
LONG LONG LONG code> 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 code> et
__ uint_128_t code>.