Almacene y trabaje con números grandes en C

Necesito ayuda para trabajar con números muy grandes. De acuerdo con Windows calc, el exponente

174^55 = 1.6990597648061509725749329578093e+123 

¿Cómo puedo almacenar esto usando C (estándar c99)?

 int main(){ long long int x = 174^55; //result is 153 printf("%lld\n", x); } 

Los tipos normales en C generalmente solo pueden almacenar hasta 64 bits, por lo que tendrá que almacenar grandes números en una matriz, por ejemplo, y escribir operaciones matemáticas usted mismo. Pero no debes reinventar la rueda aquí; podrías probar la Biblioteca de Aritmética de Precisión Múltiple de GNU para este propósito.

Y como ya se señaló en los comentarios, la ^ operación es XOR binaria. Para la exponenciación, tendrá que usar funciones matemáticas como pow .

Si la aproximación es correcta, puede usar números de coma flotante ( float o double ). Y necesitas pow , not ^ , como dijeron los comentaristas.

Sin embargo, para la criptografía, la aproximación no funciona. Necesita soporte para aritmética con enteros muy grandes. GMP proporciona soporte aritmético general de precisión múltiple. Muchos paquetes criptográficos también tendrán tales algoritmos en su código, ya sea a través de una biblioteca de terceros o incorporada; PuTTY tiene una biblioteca bignum para enteros grandes, y OpenSSL probablemente tiene algo similar.

Los tipos básicos de datos C no son suficientes.

Podrías almacenarlo en una matriz de enteros. Un entero de 64 bits es solo 2 enteros de 32 bits. Un entero de 1024 bits también podría verse como 32 enteros de 32 bits.