Sunteți pe pagina 1din 2

Trabajar con enteros de 64 bits

Junio 2014

Trabajar con enteros de 64 bits


En lenguaje C, un nmero entero de 32 bits sin signo no puede superar el valor 4 294 967 295.
Sin embargo, puede que necesites trabajar con nmeros ms grandes y para ello necesitars
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 visualizacin de estos nmeros no son definidos
del mismo modo.

Enteros de 64 bits sin signo


Tipo: unsigned long long Formato para la visualizacin: %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 visualizacin: %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 extrao para definir una constante


Si por ejemplo pruebas con este valor:
unsigned long long a = 4294967296

El compilador te dir que ese nmero es demasiado grande para el tipo long. Es decir para un
entero de 32 bits. Las constantes tienen este tipo por defecto. Finalmente, esta nocin 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 nmeros en un solo
registro. Sin embargo, con un sufijo como LL o ULL, el compilador almacenar el nmero en 2
registros, es decir en 64 bits.
Este documento intitulado Trabajar con enteros de 64 bits de Kioskea (es.kioskea.net) esta puesto a diposicin
bajo la licencia Creative Commons. Puede copiar, modificar bajo las condiciones puestas por la licencia, siempre que
esta nota sea visible.