2017-01-16 5 views
0

최근 BigInt C++ 라이브러리가 필요하고 this이 발견되었습니다.BigInt C++ 라이브러리와 일관성이있는베이스

하지만 const int base와 base_digits가 위쪽에 무엇을 의미하는지 파악할 수 없었습니다.

또한 "base와 base_digits는 일관성이 있어야합니다"라는 의미입니다.

그리고 base = 10을 원한다면 어떤 base_digits 값을 선택해야합니까?

퍼팅을 시도해 보았습니다 = 10 및 base_digits = 1 그러나 출력이 잘못된 것으로 변경되었습니다.

답변

1

이 구현의 '기본'은 구조체의 큰 정수 표현에 사용됩니다. 기본베이스 (예 : 2 진수 = 2 진수)의 기본 정의라는 측면에서 기본을 생각하면 구현시 각 '숫자'를 int로 벡터에 저장합니다. 즉, 구현은 기본 n에서 하나 이상의 '자릿수'의 벡터로 큰 정수를 나타냅니다. 여기서 n은 기본적으로 1000000000입니다.

base_digits를 사용하기 때문에 "base와 base_digits는 일관성이 있어야합니다" 어떤 장소에서는 실제 십진수 (밑 10) 자리의 기본 값의 길이를 계산하는 지름길로 사용됩니다.

정수 값의 각 숫자를 벡터 내부의 별도 정수로 표현할 때 기본 = 10을 사용하지 않으려면 그리 효율적이지 않습니다. base = 100을 사용했다면 벡터의 정수로 각 자릿수 쌍을 나타낼 것입니다. base = 1000은 정수가있는 각 트리플을 나타냅니다.

+0

기본 = 10을 사용하고 싶다면 설명에 따라 base_digits가 = 1이어야하지만 잘못된 결과가 나타납니다. – LTim

+0

또한 기본 및 base_digits의 값을 기본값 이외의 값으로 변경하면 출력이 달라집니다. 부정확하다. 왜 그렇습니까? – LTim

+0

음 ... 잘 모르겠습니다. 예를 들어 주시겠습니까? 코드를 스캔하면 제대로 작동하는 것처럼 보입니다. –