簡體   English   中英

在 C 中存儲和處理大數字

[英]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類的數學函數。

如果近似值沒問題,您可以使用浮點數( floatdouble )。 正如評論者所說,你需要pow ,而不是^

但是,對於密碼學,近似不起作用。 您需要支持非常大的整數算術。 GMP 提供通用的多精度算術支持。 許多加密包也將通過第三方庫或內置庫在其代碼中包含此類算法; PuTTY 有一個用於大整數的 bignum 庫,OpenSSL 可能也有類似的東西。

基本的 C 數據類型是不夠的。

您可以將其存儲在整數數組中。 一個 64 位整數只是 2 個 32 位整數。 1024 位整數也可以看作 32 個 32 位整數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM