我需要大數目的幫助。根據Windows計算,指數存儲和使用C中的大數字
174^55 = 1.6990597648061509725749329578093e+123
我將如何使用C(c99標準)存儲此?
int main(){
long long int x = 174^55; //result is 153
printf("%lld\n", x);
}
我需要大數目的幫助。根據Windows計算,指數存儲和使用C中的大數字
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位整數。
在C中,'^'是二元XOR,不是指數。你需要使用'pow()'函數。 – 2010-04-14 20:05:40
'^'操作符表示C中的異或,不是冪。 – pyon 2010-04-14 20:05:59
您正在執行異或操作,您需要pow – Skynight 2017-10-15 20:32:52