Pregunta

Yo soy muy novato Perl,

¿Puedo simplemente utilizar la aritmética de 64 bits en Perl?

Por ejemplo

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

$Result = $operand1 * $operand2;
  • Básicamente, estoy buscando una reemplazo para el int64_t en Perl.
  • ¿Hay alguna manera de hablar, si el variable está firmada o no?
¿Fue útil?

Solución

Sí, sin embargo es necesario tener Perl compilado con soporte de 64 bits.

Otros consejos

bigint :

  

Soporte transparente BigInteger para Perl ...

     

Todos los operadores (incluyendo operaciones matemáticas básicas) excepto la .. operador de rango están sobrecargados. Las constantes enteras se crean como BigInts adecuados.

     

constantes de coma flotante se truncan a un entero. Todas las partes y los resultados de expresiones también se truncan.

     

A diferencia de número entero , este pragma crea constantes enteras que sólo están limitados en su tamaño por el disponible memoria y tiempo de CPU ...

Sí, Perl se encarga de automatizar gran aritmética de enteros para usted. Sin embargo, Perl no ofrece una distinción entre los tipos con y sin signo (no es necesario, ya que no se fijan límites en gran rango de números enteros).

El perlnumber página del manual tiene más información sobre los diferentes formatos numéricos soportados por Perl.

Tenga en cuenta, la aritmética de 64 bits en Perl es uno, pero lo que aparece mostrado por sprintf% d u% y% s, es el segundo. Perl versión actual soporta 64 bits sin problemas, pero el formato sprintf% d no,% b mismo.

use bigint hará Perl manejar números enteros de tamaño arbitrarios correctamente sin desbordamiento de entero.

Por ejemplo:.

use bigint;
print 1 << 256;

imprimirá:

115792089237316195423570985008687907853269984665640564039457584007913129639936
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top