Especifique un entero de 64 bits en C++

Abdul Mateen 12 octubre 2023
Especifique un entero de 64 bits en C++

En el tutorial de hoy, discutiremos y aprenderemos cómo podemos especificar enteros de 64 bits en C++. Además, compararemos los métodos más antiguos cuando hubo problemas con el uso de números enteros de 64 bits.

Especifique el entero de 64 bits en C++

Tenemos múltiples opciones para manejar números enteros en C++. Comenzando desde el tipo de datos int hasta long int y long long int que tiene 64 bits, puede verificar el tamaño usando el siguiente código:

#include <iostream>
using namespace std;

int main() {
  long long int v;
  cout << sizeof(v) << '\n';
  return 0;
}

La salida es de 8 bytes o 64 bits. Comparemos el valor máximo que puede manejar long long int usando el siguiente código:

#include <iostream>
using namespace std;

int main() {
  long long int v = 9223372036854775807;
  cout << sizeof(v) << '\n';
  cout << v << '\n';
  return 0;
}

La salida es 9223372036854775807, que son 8 bytes. Sin embargo, obtendremos un error que dice “la constante entera es tan grande que no tiene signo” si aumenta el valor de v.

Implica que 9223372036854775807 es el rango máximo de valores positivos manejados correctamente. Si convierte este número a hexadecimal, el valor es 7FFFFFFFFFFFFFFFF.

Significa que tenemos todos los bits 1 excepto el bit de signo. Del mismo modo, el rango máximo para enteros negativos es -9223372036854775808.

Por lo tanto, parece que no hay problema con un número entero de 64 bits; sin embargo, en el pasado, muchos procesadores no eran capaces de manejar números enteros de 64 bits. Por lo tanto, los mismos códigos daban una salida incorrecta.

Por ejemplo, hubo mensajes de error cuando intentamos almacenar la siguiente información. Consulte el código y los mensajes de error relacionados:

long long int h2 = 0x4444000044444;

El mensaje de error fue:

warning: overflow in implicit constant conversion
warning: integer constant is too large for its type

Además del long long int, había otro tipo disponible en stdint.h, que es int64_t. Nuevamente, si verifica el tamaño, obtendrá 8 bytes o 64 bits. Sin embargo, el resultado es el mismo.

La discusión concluye que tuvimos problemas en el pasado al usar números enteros de 64 bits en C++. Dependía del compilador y la arquitectura; sin embargo, este problema no existe ahora en las versiones más recientes del compilador.

Uno puede manejar con seguridad enteros de 64 bits en long long int o int64_t. Estos tipos no solo almacenan valor, sino que también pueden realizar operaciones matemáticas, siempre que el resultado esté dentro de los 64 bits.

Artículo relacionado - C++ Integer