[英]Store and work with Big numbers in C
我需要幫助處理非常大的數字。 根據 Windows calc,指數
174^55 = 1.6990597648061509725749329578093e+123
我將如何使用 C(c99 標准)存儲它?
int main(){
long long int x = 174^55; //result is 153
printf("%lld\n", x);
}
C 中的普通類型通常最多只能存儲 64 位,因此您必須將大數字存儲在數組中,例如,自己編寫數學運算。 但是你不應該在這里重新發明輪子 - 你可以為此目的嘗試GNU Multiple Precision Arithmetic Library 。
正如評論已經指出的那樣, ^
操作是二進制 XOR。 對於求冪,您將不得不使用pow
類的數學函數。
如果近似值沒問題,您可以使用浮點數( float
或double
)。 正如評論者所說,你需要pow
,而不是^
。
但是,對於密碼學,近似不起作用。 您需要支持非常大的整數算術。 GMP 提供通用的多精度算術支持。 許多加密包也將通過第三方庫或內置庫在其代碼中包含此類算法; PuTTY 有一個用於大整數的 bignum 庫,OpenSSL 可能也有類似的東西。
基本的 C 數據類型是不夠的。
您可以將其存儲在整數數組中。 一個 64 位整數只是 2 個 32 位整數。 1024 位整數也可以看作 32 個 32 位整數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.