Trabajar con enteros de 64 bits

Junio 2017


En lenguaje C, un número entero de 32 bits sin signo no puede superar el valor 4 294 967 295. Sin embargo, puede que necesites trabajar con números más grandes y para ello necesitarás enteros codificados de 64 bits. Este tipo de enteros no se manipulan de la misma manera que un entero ordinario. Las constantes enteras y la visualización de estos números no son definidos del mismo modo.

Enteros de 64 bits sin signo


Tipo: unsigned long long
Formato para la visualización: %llu
Sufijo para definir una constante: ULL

Ejemplo:

//Asignar el valor 4294967296 a “a”
unsigned long long a = 4294967296ULL;
//Mostrar este valor
printf("%llu", a);

Enteros de 64 bits con signo


Tipo: long long
Formato para la visualización: %llu
Sufijo para definir una constante: LL

Ejemplo:

//Asignar el valor 4294967296 a “a”
long long a = 4294967296LL;
//Mostrar este valor
printf("%lld", a);

Por qué un sufijo tan extraño para definir una constante


Si por ejemplo pruebas con este valor:

unsigned long long a = 4294967296


El compilador te dirá que ese número es demasiado grande para el tipo “long”. Es decir para un entero de 32 bits. Las constantes tienen este tipo por defecto. Finalmente, esta noción esta directamente ligada a la arquitectura de los procesadores de 32 bits. Un registro de procesador de 32 bits es insuficiente, pero por defecto el compilador intentará poner los números en un solo registro. Sin embargo, con un sufijo como LL o ULL, el compilador almacenará el número en 2 registros, es decir en 64 bits.

Consulta también

Publicado por Carlos-vialfa. Última actualización: 4 de febrero de 2009 a las 19:13 por Carlos-vialfa.
El documento «Trabajar con enteros de 64 bits» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.