2012-02-22 2 views
-1

기본적으로 100 개의 기호로 긴 int int 번호를 유지할 수 있습니까?은 오랫동안 너무 오랫동안 많은 기호를 보유 할 수 있습니까?

1000000000000000000010000000000000000000100000000000000000001000000000000000000010000000000000000000 

없는 경우에, 나는 사용해야 유형, 너무 큰 숫자를 잡을 수 - 예를 들면 오래 오래이 번호를 저장할 수?

저는 C++에 대해 이야기합니다.

+0

이 번호는 무엇을 사용해야합니까? – jalf

+1

Google "C++ BigInteger". – taskinoor

+0

해당 번호의 각 자릿수를 합산해야합니다. – user1223540

답변

1

큰 숫자의 경우 사용자 정의 유형을 구현해야합니다. 이 무언가를 숫자로 유지할 수있는 standard type은 없습니다.

+0

어떻게 할 수 있습니까? 사용자 정의 유형을 구현 하시겠습니까? – user1223540

+0

배열 또는 다른 컨테이너의 모든 자릿수를 포함하는 클래스를 만들고 숫자에 필요한 모든 연산자를 제공합니다. 또는 사용 가능한 BigInt 클래스 중 [one] (https://mattmccutchen.net/bigint/)을 다운로드하여 포함하십시오. – Alexander

+0

나에게 그러한 클래스의 예제를 줄 수 있겠습니까? – user1223540

1

번호 long long은 일반적으로 64 비트이며, 약 20 자리 10 진수를 담는 데 충분합니다. 그것보다 오래 원한다면 gmp와 같은 구조체 유형이 필요한 라이브러리가 필요합니다. 또는 자신을 굴릴 수도 있습니다.

또는 개별 숫자 만 신경 쓰면 실제로 숫자 유형이 필요하지 않습니다. "숫자"를 std::string으로 저장하고 문자로 작업하십시오. 각 숫자의 값은 문자의 ASCII 코드에서 '0'의 값을 뺀 값과 같습니다 (신경 쓰면 48과 같지만 '0' IMO 문서화).

0

long long이 80 비트 (double의 길이)로 구성 되더라도 10^100 (2^80보다 큼)을 차지하지 않습니다.

+1

'double'은 80 비트로 구성되어야한다는 것을 어디에 지정 했습니까? –

+0

(실제로는 'long double'은 _upper bound_라고 생각합니다.) : [here] (http://en.wikipedia.org/wiki/Long_double)는 80 비트 long double을 언급 한 것입니다. –

+0

아, 위키 백과. 좋습니다. 아닙니다. Wikipedia는 사양이 아닙니다. 심지어 그것은 "x86 컴파일러에서 구현됩니다"라고 말하는 것뿐입니다. MSVS (엄청나게 널리 사용되는)는 그렇지 않습니다. –

4

나는 http://gmplib.org/을 사용하도록 제안합니다. 알렉산더가 말했듯이, 숫자와 같은 큰 문자열을 보유 할 표준 유형은 없습니다.

관련 문제