Question

Je suis un perl débutant,

Puis-je simplement utiliser l'arithmétique 64 bits en Perl?

Par exemple

$operand1 = 0xFFFFFFFFFFFF;   # 48 bit value
$operand2 = 0xFFFFFFFFFFFF;   # 48 bit value

$Result = $operand1 * $operand2;
  • Je suis fondamentalement la recherche d'un remplacement de la int64_t en perl.
  • Est-il possible de mentionner, si l' variable est signé ou non signé?
Était-ce utile?

La solution

Oui, mais vous devez avoir Perl compilé avec le support 64 bits.

Autres conseils

Voir bigint:

Transparent BigInteger prise en charge de Perl...

Tous les opérateurs (y compris les opérations de calcul de base) à l'exception de la gamme de l'opérateur .. sont surchargés.Les constantes entières sont créés en tant que bon BigInts.

Virgule flottante constantes sont tronqués à l'entier.Toutes les pièces et tous les résultats des expressions sont également tronqués.

Contrairement à entier, cette pragma crée des constantes entières qui ne sont que limités dans leur taille de la mémoire disponible et le temps CPU...

Oui, Perl gère automatiquement un grand arithmétique entier pour vous. Cependant, Perl ne propose pas de distinction entre les types signés et non signés (il n'y a pas besoin, car il n'y a pas de limites fixes sur large gamme entière).

Le perlnumber manuel a plus d'informations sur les différents formats numériques pris en charge par Perl.

Attention, l'arithmétique 64bit en Perl est un, mais ce qui est affiché par sprintf% d% u et% s, est deuxième. La version actuelle perl prend en charge 64bits sans problème, mais le format sprintf% d non,% b de même.

use bigint fera Perl gérer des entiers de taille arbitraire correctement, sans débordement d'entier.

Par exemple:.

use bigint;
print 1 << 256;

imprimera:

115792089237316195423570985008687907853269984665640564039457584007913129639936
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top