¿Cómo puedo hacer la aritmética de 64 bits en Perl?
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?
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