我需要帮助处理非常大的数字。根据Windows calc,指数
174^55 = 1.6990597648061509725749329578093e+123
如何使用C(c99标准)存储?
int main(){
long long int x = 174^55; //result is 153
printf("%lld\n", x);
}
答案 0 :(得分:25)
C中的普通类型通常最多只能存储64位,因此您必须在数组中存储大数字,并自行编写数学运算。但你不应该在这里重新发明轮子 - 你可以为此目的尝试GNU Multiple Precision Arithmetic Library。
正如评论已经指出的那样,^
操作是二进制异或。对于取幂,你必须使用像pow
这样的数学函数。
答案 1 :(得分:5)
如果近似值正常,则可以使用浮点数(float
或double
)。您需要pow
,而不是^
,因为评论者说。
但是,对于加密,近似不起作用。你需要支持非常大的整数运算。 GMP提供通用的多精度算术支持。许多加密软件包在其代码中也会有这样的算法,可以通过第三方库或内置; PuTTY有一个用于大整数的bignum库,OpenSSL可能有类似的东西。
基本的C数据类型还不够。
答案 2 :(得分:2)
您可以将其存储在整数数组中。 64位整数只是2个32位整数。 1024位整数也可以看作32个32位整数。