Uso de enteros de 128 bits en C++

Abdul Mateen 20 junio 2023
Uso de enteros de 128 bits en C++

En este tutorial, analizaremos los enteros de 128 bits en C++. También veremos por qué lo necesitamos y las posibles alternativas en C++.

Uso de enteros de 128 bits en C++

Tenemos múltiples opciones para manejar números enteros en C++. Empezando por el tipo de datos int hasta long, long int y long long int que tiene 64 bits y el máximo número positivo que podemos almacenar es 9223372036854775807 (en hexadecimal 7FFFFFFFFFFFFFFFF).

Considere 7 en número hexadecimal; a continuación, tendremos 8, que tiene el binario 1000, lo que significa que el bit de signo está activado. Finalmente, tenemos números enteros negativos de -1 a -9223372036854775808. 9223372036854775807 es un número lo suficientemente grande como para manejar muchos requisitos de almacenamiento y operaciones aritméticas.

Importancia del entero de 128 bits y sus alternativas en C++

Ahora, si necesita números enteros aún más grandes, la pregunta es, ¿queremos realizar operaciones aritméticas en esos números enteros? Si la respuesta es sí, probablemente necesite más almacenamiento que 128 bits.

El resultado de la suma o multiplicación de dos números enteros grandes puede necesitar más bits. Por lo tanto, en este caso, implementar enteros grandes podría ayudarlo.

Por último, si necesita un entero de 128 bits solo para almacenamiento, una solución es crear una estructura de dos enteros de 64 bits, o puede tomar una matriz int de 8 elementos o una matriz char de 16 elementos.

Sin embargo, GCC proporciona un tipo de datos específico para enteros de 128 bits que es int128_t; en compiladores compatibles, puede verificar el tamaño:

int128_t var;
cout << sizeof(var) << '\n';

La salida será 16, que significa 16x8=128 bits.

Sin embargo, es compatible con procesadores específicos, que son capaces de almacenar 128 bits; de lo contrario, cuando intenta almacenar un número entero grande, el compilador genera una de las siguientes advertencias:

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

La conclusión de la discusión es decidir con precisión cuántos bits se requerirán en el peor de los casos.

Además, ¿quiere almacenar solo datos o desea realizar operaciones aritméticas? Entonces, la implementación de Big Integer es su solución si desea realizar operaciones aritméticas.

En el caso de la implementación de Big Integer, no tiene que preocuparse ni siquiera por 500 o 5000 bits.

Si desea hacer solo almacenamiento, tiene otras soluciones disponibles. Utilice una estructura de dos miembros de datos de 64 bits o utilice una matriz de tipo de datos int o tipo de datos char.

Artículo relacionado - C++ Integer