usar tipos tipo sumar soporta primitivos para numeros muy imprimir guardar grandes digitos datos dato cuantos como c exponentiation

tipos - Almacenar y trabajar con números grandes en C



tipos de datos primitivos en c (3)

Necesito ayuda para trabajar con números muy grandes. Según Windows Calc, el exponente.

174^55 = 1.6990597648061509725749329578093e+123

¿Cómo almacenaría 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 debe reinventar la rueda aquí: puede probar la Biblioteca de aritmética de precisión múltiple de GNU para este propósito.

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


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.


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

Sin embargo, para la criptografía, la aproximación no funciona. Necesitas soporte para aritmética con enteros muy grandes. GMP proporciona soporte aritmético de precisión múltiple general. 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 incorporados; PuTTY tiene una gran biblioteca para enteros grandes, y OpenSSL probablemente tiene algo similar.

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