2010-04-14 2 views
14

매우 큰 숫자로 작업하는 데 도움이 필요합니다. Windows 계산에 따르면C로 큰 숫자 저장 및 작업

174^55 = 1.6990597648061509725749329578093e+123 

C (c99 표준)를 사용하여 어떻게 저장하나요? C에서

int main(){ 
    long long int x = 174^55; //result is 153 
    printf("%lld\n", x); 
} 
+7

C에서'^'는 지수가 아닌 2 진 XOR입니다. 이를 위해서는'pow()'함수를 사용해야한다. –

+1

'^ '연산자는 C에서 지수가 아닌 XOR을 의미합니다. – pyon

+0

XOR을하고 있습니다. – Skynight

답변

25

일반 유형은 보통 당신이 예를 들어, 배열에 큰 번호를 저장해야하므로, 64 비트까지 저장하고, 수학 연산을 직접 작성할 수 있습니다. 그러나 여기서 바퀴를 재발 명하면 안됩니다.이 목적으로 GNU Multiple Precision Arithmetic Library을 사용해보십시오.

그리고 이미 언급 한 바와 같이 ^ 연산은 이진 XOR입니다. 지수화의 경우 pow과 같은 수학 함수를 사용해야합니다.

5

근사가 좋으면 부동 소수점 수 (float 또는 double)를 사용할 수 있습니다. 덧글 작성자가 말한대로 pow이 아니라 ^이 필요합니다.

그러나 암호화의 경우 근사가 작동하지 않습니다. 매우 큰 정수로 산술 연산을 지원해야합니다. GMP는 일반적인 다중 정밀도 산술 지원을 제공합니다. 많은 암호화 패키지는 타사 라이브러리 또는 내장을 통해 코드에 이러한 알고리즘을 포함합니다. PuTTY는 큰 정수를위한 bignum 라이브러리를 가지고 있으며, OpenSSL은 아마도 비슷한 것을 가지고있을 것입니다.

기본 C 데이터 형식으로는 충분하지 않습니다.

2

정수 배열로 저장할 수 있습니다. 64 비트 정수는 단지 2 개의 32 비트 정수입니다. 1024 비트 정수는 32 비트 32 비트 정수로 볼 수도 있습니다.