Trabajar con enteros de 64 bits

Haz una pregunta

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.
Jean-François Pillou

Nuestros contenidos son redactados en colaboración con expertos del ámbito tecnológico bajo la dirección de Jean-François Pillou, fundador de CCM.net y director digital en el Grupo Figaro. CCM es un sitio de tecnología líder a nivel internacional y está disponible en 11 idiomas.

Más información sobre el equipo de CCM